skip to main content
paste
bin
.ca
type · paste · share
⌘
K
Family
The bin family
pastebin.ca
hub
Share text and code with expiry and privacy controls.
imagebin.ca
Upload and share images with direct links.
filebin.ca
Drop a file and get a shareable link.
notebin.ca
Write Markdown notes with durable links.
turl.ca
Short, reputation-checked links.
attn.ca
Notifications and alerts for your services.
voicebin.ca
Record and share short voice clips.
dnsbin.ca
Inspect DNS and debug records.
Docs
Sign in
?
← back to paste
›
Edit / fork
Untitled paste
#2WwqU7VG78
public / public
new version
anonymous
created 6 days ago
Expires in 14 hours
10.9 KB
syntax:
text
Your changes create a new paste linked to this one — the original is untouched.
new version
Your changes create a new paste linked to this one — the original is untouched.
Title (optional)
Filename
Syntax
text
text
bash
c
cpp
css
diff
dockerfile
go
html
ini
java
javascript
json
kotlin
lua
makefile
markdown
nginx
php
python
ruby
rust
shellscript
sql
swift
toml
typescript
xml
yaml
Visibility
Public feed
Access
public
Expires
7 days
10 min
1 hour
1 day
7 days
30 days
90 days
custom…
Custom expiry
Change note
(optional)
This paste will be listed on the public feed. Change Visibility if you only want people with the link to see it.
Create new version
Cancel
Paste or type…
// ==UserScript== // @name HentaiVerse Legendary Upgrade Calculator // @namespace http://tampermonkey.net/ // @version 1.5 // @description Calculate Legendary equipment upgrade cost using HVUT material prices. // @author Gemini, Codex // @match *://hentaiverse.org/isekai/* // @match *://hentaiverse.org/* // @grant none // ==/UserScript== (function() { 'use strict'; const urlParams = new URLSearchParams(window.location.search); if (urlParams.get('s') !== 'Bazaar' || urlParams.get('ss') !== 'am') { return; } const upgradeData = [ { level: 1, mid: 100, high: 5, rare: 1, core: 1, creds: 25000 }, { level: 2, mid: 100, high: 10, rare: 1, core: 1, creds: 25000 }, { level: 3, mid: 100, high: 15, rare: 1, core: 1, creds: 25000 }, { level: 4, mid: 100, high: 20, rare: 1, core: 1, creds: 25000 }, { level: 5, mid: 100, high: 25, rare: 1, core: 1, creds: 25000 }, { level: 6, mid: 100, high: 30, rare: 2, core: 2, creds: 25000 }, { level: 7, mid: 100, high: 35, rare: 2, core: 2, creds: 25000 }, { level: 8, mid: 100, high: 40, rare: 2, core: 2, creds: 25000 }, { level: 9, mid: 100, high: 45, rare: 2, core: 2, creds: 25000 }, { level: 10, mid: 100, high: 50, rare: 2, core: 2, creds: 25000 }, { level: 11, mid: 100, high: 50, rare: 3, core: 3, creds: 50000 }, { level: 12, mid: 100, high: 50, rare: 3, core: 3, creds: 50000 }, { level: 13, mid: 100, high: 50, rare: 3, core: 3, creds: 50000 }, { level: 14, mid: 100, high: 50, rare: 3, core: 3, creds: 50000 }, { level: 15, mid: 100, high: 50, rare: 3, core: 3, creds: 50000 }, { level: 16, mid: 100, high: 50, rare: 4, core: 4, creds: 50000 }, { level: 17, mid: 100, high: 50, rare: 4, core: 4, creds: 50000 }, { level: 18, mid: 100, high: 50, rare: 4, core: 4, creds: 50000 }, { level: 19, mid: 100, high: 50, rare: 4, core: 4, creds: 50000 }, { level: 20, mid: 100, high: 50, rare: 4, core: 4, creds: 50000 }, { level: 21, mid: 100, high: 50, rare: 5, core: 5, creds: 100000 }, { level: 22, mid: 100, high: 50, rare: 5, core: 5, creds: 100000 }, { level: 23, mid: 100, high: 50, rare: 5, core: 5, creds: 100000 }, { level: 24, mid: 100, high: 50, rare: 5, core: 5, creds: 100000 }, { level: 25, mid: 100, high: 50, rare: 5, core: 5, creds: 100000 } ]; const materialTypes = [ { value: 'Cloth', label: 'Cloth' }, { value: 'Leather', label: 'Leather' }, { value: 'Metals', label: 'Metals' }, { value: 'Wood', label: 'Wood' } ]; const rareMaterials = [ { value: '', label: 'None' }, { value: 'Crystallized Phazon', label: 'Crystallized Phazon' }, { value: 'Shade Fragment', label: 'Shade Fragment' }, { value: 'Repurposed Actuator', label: 'Repurposed Actuator' }, { value: 'Defense Matrix Modulator', label: 'Defense Matrix Modulator' } ]; const coreTypes = [ { value: 'Legendary Weapon Core', label: 'Legendary Weapon Core' }, { value: 'Legendary Staff Core', label: 'Legendary Staff Core' }, { value: 'Legendary Armor Core', label: 'Legendary Armor Core' } ]; function readHvutPrices() { const key = location.pathname.startsWith('/isekai/') ? 'hvuti_prices' : 'hvut_prices'; const fallbackKey = key === 'hvut_prices' ? 'hvuti_prices' : 'hvut_prices'; for (const storageKey of [key, fallbackKey]) { try { const value = localStorage.getItem(storageKey); if (value) { return { prices: JSON.parse(value), key: storageKey }; } } catch (error) { console.warn('Failed to read HVUT prices:', storageKey, error); } } return { prices: {}, key: '' }; } function priceOf(prices, itemName) { if (!itemName) { return 0; } const price = Number(prices[itemName]); return Number.isFinite(price) ? price : 0; } function formatCredits(value) { return Math.ceil(value).toLocaleString(); } function buildOptions(items) { return items.map((item) => `<option value="${item.value}">${item.label}</option>`).join(''); } const style = document.createElement('style'); style.textContent = ` #hv-upgrade-calc { position: fixed; bottom: 20px; right: 20px; width: 340px; background: #fdfdfd; border: 2px solid #333; border-radius: 8px; padding: 15px; box-shadow: 0 4px 6px rgba(0,0,0,0.3); font-family: Arial, sans-serif; font-size: 14px; z-index: 999999; color: #333; } #hv-upgrade-calc h3 { margin: 0 0 10px 0; font-size: 16px; text-align: center; border-bottom: 1px solid #ccc; padding-bottom: 5px; } .hv-calc-row { display: flex; justify-content: space-between; gap: 8px; margin-bottom: 8px; align-items: center; } .hv-calc-row label { flex: 1; } .hv-calc-row input, .hv-calc-row select { width: 155px; box-sizing: border-box; padding: 2px 5px; border: 1px solid #aaa; border-radius: 4px; background: #fff; color: #333; } .hv-calc-row input[readonly] { background: #eee; } #hv-calc-btn { width: 100%; padding: 8px; margin-top: 10px; background: #4CAF50; color: white; border: none; border-radius: 4px; cursor: pointer; font-weight: bold; } #hv-calc-summary { margin-top: 10px; font-size: 12px; color: #555; background: #f0f0f0; padding: 5px; border-radius: 4px; text-align: center; display: none; line-height: 1.45; } #hv-calc-result { margin-top: 10px; font-weight: bold; text-align: center; color: #d32f2f; font-size: 16px; } #hv-calc-price-source { margin-top: 6px; font-size: 11px; text-align: center; color: #666; } `; document.head.appendChild(style); const panel = document.createElement('div'); panel.id = 'hv-upgrade-calc'; panel.innerHTML = ` <h3>Legendary 升级计算器</h3> <div class="hv-calc-row"><label>当前等级 (0-24):</label><input type="number" id="hv-curr-lvl" value="0" min="0" max="24"></div> <div class="hv-calc-row"><label>目标等级 (1-25):</label><input type="number" id="hv-target-lvl" value="25" min="1" max="25"></div> <div class="hv-calc-row"><label>材料类型:</label><select id="hv-material-type">${buildOptions(materialTypes)}</select></div> <div class="hv-calc-row"><label>Mid Grade 单价:</label><input type="number" id="hv-price-mid" value="0" readonly></div> <div class="hv-calc-row"><label>High Grade 单价:</label><input type="number" id="hv-price-high" value="0" readonly></div> <div class="hv-calc-row"><label>Rare 材料:</label><select id="hv-rare-material">${buildOptions(rareMaterials)}</select></div> <div class="hv-calc-row"><label>Rare 单价:</label><input type="number" id="hv-price-rare" value="0" readonly></div> <div class="hv-calc-row"><label>Legendary Core:</label><select id="hv-core-type">${buildOptions(coreTypes)}</select></div> <div class="hv-calc-row"><label>Core 单价:</label><input type="number" id="hv-price-core" value="0" readonly></div> <button id="hv-calc-btn">计算总消耗</button> <div id="hv-calc-summary"></div> <div id="hv-calc-result">等待计算...</div> <div id="hv-calc-price-source"></div> `; document.body.appendChild(panel); let hvutPriceState = readHvutPrices(); function refreshPrices() { hvutPriceState = readHvutPrices(); const prices = hvutPriceState.prices; const materialType = document.getElementById('hv-material-type').value; const rareMaterial = document.getElementById('hv-rare-material').value; const coreType = document.getElementById('hv-core-type').value; document.getElementById('hv-price-mid').value = priceOf(prices, `Mid-Grade ${materialType}`); document.getElementById('hv-price-high').value = priceOf(prices, `High-Grade ${materialType}`); document.getElementById('hv-price-rare').value = priceOf(prices, rareMaterial); document.getElementById('hv-price-core').value = priceOf(prices, coreType); document.getElementById('hv-calc-price-source').textContent = hvutPriceState.key ? `价格来源: HVUT ${hvutPriceState.key}` : '未找到 HVUT 价格,单价按 0 计算'; } function calculate() { refreshPrices(); const currLvl = parseInt(document.getElementById('hv-curr-lvl').value, 10) || 0; const targetLvl = parseInt(document.getElementById('hv-target-lvl').value, 10) || 0; const materialType = document.getElementById('hv-material-type').value; const rareMaterial = document.getElementById('hv-rare-material').value; const coreType = document.getElementById('hv-core-type').value; const priceMid = parseFloat(document.getElementById('hv-price-mid').value) || 0; const priceHigh = parseFloat(document.getElementById('hv-price-high').value) || 0; const priceRare = parseFloat(document.getElementById('hv-price-rare').value) || 0; const priceCore = parseFloat(document.getElementById('hv-price-core').value) || 0; if (currLvl >= targetLvl || targetLvl > 25 || currLvl < 0) { document.getElementById('hv-calc-result').textContent = '等级范围错误'; return; } let totalMid = 0; let totalHigh = 0; let totalRare = 0; let totalCore = 0; let baseCredits = 0; for (let i = currLvl; i < targetLvl; i++) { const data = upgradeData[i]; totalMid += data.mid; totalHigh += data.high; totalRare += data.rare; totalCore += data.core; baseCredits += data.creds; } const materialCredits = (totalMid * priceMid) + (totalHigh * priceHigh) + (totalRare * priceRare) + (totalCore * priceCore); const totalCredits = baseCredits + materialCredits; const summary = document.getElementById('hv-calc-summary'); summary.style.display = 'block'; summary.innerHTML = [ '<strong>材料需求</strong>', `${totalMid} Mid-Grade ${materialType} @ ${formatCredits(priceMid)}c`, `${totalHigh} High-Grade ${materialType} @ ${formatCredits(priceHigh)}c`, `${totalRare} ${rareMaterial} @ ${formatCredits(priceRare)}c`, `${totalCore} ${coreType} @ ${formatCredits(priceCore)}c`, `基础 Credits: ${formatCredits(baseCredits)}` ].join('<br>'); document.getElementById('hv-calc-result').textContent = `总需 Credits: ${formatCredits(totalCredits)}`; } document.getElementById('hv-material-type').addEventListener('change', calculate); document.getElementById('hv-rare-material').addEventListener('change', calculate); document.getElementById('hv-core-type').addEventListener('change', calculate); document.getElementById('hv-calc-btn').addEventListener('click', calculate); refreshPrices(); })();