Add a button in market to buy maximum stats points at once, so you don't have to click over 9000 times
// ==UserScript==
// @name HaremHeroes Buy max stats
// @version 1.31
// @description Add a button in market to buy maximum stats points at once, so you don't have to click over 9000 times
// @author Spychopat
// @match http*://nutaku.haremheroes.com/*
// @match http*://*.hentaiheroes.com/*
// @namespace JDscripts
// ==/UserScript==
//$("#equiped plus")[0].click()
var sheet = (function() {
var style = document.createElement('style');
document.head.appendChild(style);
return style.sheet;
})();
function marketCss(){
sheet.insertRule('plus_buy_all{'
+'display:block;'
+'position:static;'
+'top:0;right:0;'
+'color:#fff;'
+'text-decoration:none;'
+'margin:0;'
+'padding-left: 5px;'
+'padding-right: 5px;'
+'-webkit-border-radius:10%;'
+'-moz-border-radius:10%;'
+'border-radius:10%;'
+'cursor:pointer;'
+'text-align:center;'
+'background:#057;'
+'background:-webkit-linear-gradient(-90deg,#0af 0,#068 50%,#057 51%,#0af 100%);'
+'background:-moz-linear-gradient(180deg,#0af 0,#068 50%,#057 51%,#0af 100%);'
+'border: 1px solid #000!important;'
+'box-shadow: 0 3px 0 rgba(13,22,25,.6), inset 0 3px 0 #6df0ff;');
sheet.insertRule('plus_buy_all[disabled]{'
+'background-image:linear-gradient(to top,#9f9296 0,#847c85 100%)!important;'
+'box-shadow: 0 3px 0 rgba(13,22,25,.6),inset 0 3px 0 #b6a6ab!important;');
sheet.insertRule('#shops #equiped div.sub_block .hero_stats>div>[cur]{'
+'display: none;');
sheet.insertRule('.BuyMax:hover + div {' +
'opacity: 1;' +
'visibility: visible; }');
sheet.insertRule('.BuyMaxTooltip {'
+ 'position: absolute;'
+ 'z-index: 11;'
+ 'min-width: 85;'
+ 'border: 1px solid rgb(255, 255, 255,.73);'
+ 'border-radius: 7px;'
+ 'background: #ccd7dd;'
+ 'padding: 4px 8px 6px;'
+ 'font-size: 13px;'
+ 'color: #057;'
+ 'text-align: left;'
+ 'pointer-events: none;'
+ 'visibility: hidden;');
sheet.insertRule('.BuyMaxIcon{'
+ 'margin-left: 5px;'
+ 'width: 20px;'
+ 'height: 20px;}');
}
function calculateStatPrice(points){
var cost = 0;
if(points < 2001){
cost = 3 + points * 2;
}else if(points < 4001){
cost = 4005+(points-2001)*4;
}else if(points < 6001){
cost = 12005+(points-4001)*6;
}else if(points < 8001){
cost = 24005+(points-6001)*8;
}else if(points < 10001){
cost = 40005+(points-8001)*10;
}else if(points < 12001){
cost = 60005+(points-10001)*12;
}else if(points < 14001){
cost = 84005+(points-12001)*14;
}else if(points < 16001){
cost = 112005+(points-14001)*16;
}
return cost;
}
function calculateTotalPrice(points){
var last_price = calculateStatPrice(points);
var price = 0;
if(points < 2001) {
price = (5+last_price)/2*(points);
} else if(points < 4001){
price = 4012005+(4009+last_price)/2*(points-2001);
}else if(points < 6001){
price = 20026005+(12011+last_price)/2*(points-4001);
}else if(points < 8001){
price = 56042005+(24013+last_price)/2*(points-6001);
}else if(points < 10001){
price = 120060005+(40015+last_price)/2*(points-8001);
}else if(points < 12001){
price = 220080005+(60017+last_price)/2*(points-10001);
}else if(points < 14001){
price = 364102005+(84019+last_price)/2*(points-12001);
}else if(points < 16001){
price = 560126005+(112021+last_price)/2*(points-14001);
}
return price;
}
function ModifyMarket() {
var last_cost = 0,
levelPoints = 0,
levelMoney = 0,
level = Hero.infos.level;
/*
if(level <=25){
levelPoints = level *40;
} else {
levelPoints = 1000 + (level-25)*19;
}
*/
levelPoints = level * 30;
levelMoney = calculateTotalPrice(levelPoints);
var loc2 = $('.hero_stats').children();
loc2.each(function() {
var stat = $(this).attr("hero");
if(stat == "carac1" || stat == "carac2" || stat == "carac3"){
var disabled = 'disabled="disabled"';
if(stat == "carac1" && !$("#equiped plus")[0].getAttribute("disabled"))
disabled = "";
if(stat == "carac2" && !$("#equiped plus")[1].getAttribute("disabled"))
disabled = "";
if(stat == "carac3" && !$("#equiped plus")[2].getAttribute("disabled"))
disabled = "";
var statNumber;
if(stat == "carac1")
statNumber = 1;
if(stat == "carac2")
statNumber = 2;
if(stat == "carac3")
statNumber = 3;
var currentStatPoints = Hero.infos[stat],
remainingPoints = levelPoints - currentStatPoints,
currentMoney = calculateTotalPrice(currentStatPoints),
remainingMoney = levelMoney - currentMoney;
$(this).append('<plus_buy_all class="BuyMax" for_carac="'+stat+'" '+disabled+'><span>Buy max</span></plus_all>');
$(this).append('<div id="BuyMax' + stat +'" class="BuyMaxTooltip">'
+ 'Buy '+remainingPoints.toLocaleString()
+ '<img class="BuyMaxIcon" src="https://hh.hh-content.com/pictures/misc/items_icons/'+statNumber+'.png"><br>'
+ 'For '+remainingMoney.toLocaleString()
+ '<img class="BuyMaxIcon" src="https://hh.hh-content.com/design/ic_menu-SC.png"><br>'
+'</div>');
}
});
}
function clickFunction(){
$("#equiped plus_buy_all").click(function() {
var carac_num;
var $me = $(this);
if ($me.attr("disabled")) return;
var carac = $me.attr("for_carac");
if(carac == "carac1")
carac_num = 0;
if(carac == "carac2")
carac_num = 1;
if(carac == "carac3")
carac_num = 2;
var button_plus_stat = $("#equiped plus")[carac_num];
var auto_click = setInterval(function() {
//console.log("achat stat");
//console.log($("#equiped plus").next()[carac_num].getAttribute("value"));
if(!button_plus_stat ){//|| !$("#equiped plus").next()[carac_num].getAttribute("value") || $("#equiped plus").next()[carac_num].getAttribute("value") == 'MAXED') {
//console.log("time to stop");
//$me[0].setAttribute("disabled","disabled");
clearInterval(auto_click);
return;
}
button_plus_stat.click();
}, 100);
$me[0].setAttribute("disabled","disabled");
});
}
(function() {
'use strict';
marketCss();
ModifyMarket();
clickFunction();
})();