Calculates various numbers related to IW service
// ==UserScript==
// @name HV - Item World Cost Calculator
// @grant none
// @include http://hentaiverse.org/pages/showequip.php?eid=*&key=*
// @version 0.0.1.20180326024541
// @namespace https://greasyfork.org/users/2233
// @description Calculates various numbers related to IW service
// ==/UserScript==
/*** Settings ***/
var price_per_pxp = 12
var pxp_multiplier = 16.0
/*** Enf of Settings ***/
var wnd = window
var doc = wnd.document
var loc = location
var href = loc.href
var $ = function(e, css) { if(!css) { css=e; e=doc }; return e.querySelector(css) }
var $$ = function(e, css) { if(!css) { css=e; e=doc }; return e.querySelectorAll(css) }
var m = $('#equipment').textContent.match(/Potency Tier:(.*?)\((.*?)\)/)
if(m) {
var lv = parseInt(m[1])
if(lv == 10) { console.log('The equipment is already Lv.10.') }
else {
var p_now = parseInt(m[2].match(/(\d+).*?\//)[1])
var p_max = parseInt(m[2].match(/\/.*?(\d+)/)[1])
// PXP(1)
var p1
if(lv == 0) { p1 = p_max }
else {
for(var i=1, p_test=1, smallest=Infinity, tmp; i<=1000; i++) {
p_test = i * Math.pow((1 + i/1000), lv)
tmp = Math.abs(p_test - p_max)
if(tmp < smallest) { smallest = tmp; p1 = i }
}
}
// PXP(2), PXP(3), ... , PXP(10)
var p = { 1:p1 }
for(var i=2; i<=10; i++) { p[i] = Math.ceil(p1 * Math.pow((1 + p1/1000), i-1)) }
console.log('PXP(i) = ' + JSON.stringify(p))
// Sum of PXP(i), where i = 1 to 10
var p_all = 0
for(var i=1; i<=10; i++) { p_all += p[i] }
console.log('PXP(1)+PXP(2)+...+PXP(10) = ' + p_all)
console.log('PXP(1)+PXP(2)+...+PXP(10) = ' + Math.ceil(1000 * (Math.pow((1 + p1/1000), 10) - 1)))
// Sum of PXP(i), where i = now to 10
var p_partial = p_max - p_now
for(var i=lv+2; i<=10; i++) { p_partial += p[i] }
console.log('PXP(' + lv + ')+...+PXP(10) = ' + p_partial)
// The quality of the equipment
var q = (p1 - 100) / 250
console.log('The quality of the equipment = ' + q)
// Number of rounds in one run
var round = Math.ceil(75 * Math.pow(q, 3))
if(round < 10) { round = 10 }
if(round > 100) { round = 100 }
console.log('Number of rounds in one run = ' + round)
// PXP per run
var p_gain = Math.ceil(round * pxp_multiplier * ($('#equipment').textContent.indexOf('Soulbound') != -1 ? 2 : 1))
console.log('PXP per run = ' + p_gain)
// Price per run
var price_per_run = p_gain * price_per_pxp
console.log('Price per run = ' + price_per_run)
// Number of runs (Lv.0 to Lv.10)
var run_all = Math.ceil(p_all / p_gain)
console.log('Number of runs (Lv.0 to Lv.10) = ' + run_all)
// Total cost (Lv.0 to Lv.10)
var cost_all = price_per_run * run_all
console.log('Total cost (Lv.0 to Lv.10) = ' + cost_all)
// Number of runs (Lv.now to Lv.10)
var run_partial = Math.ceil(p_partial / p_gain)
console.log('Number of runs (Lv.now to Lv.10) = ' + run_partial)
// Total cost (Lv.now to Lv.10)
var cost_partial = price_per_run * run_partial
console.log('Total cost (Lv.now to Lv.10) = ' + cost_partial)
}
}