// ==UserScript==
// @name Ted's market UI
// @namespace Ted's market UI
// @version 1.299
// @description Ted's Diamond Hunt 2 custom market user interface
// @author ted120
// @match http://*.diamondhunt.co/game.php
// @match https://*.diamondhunt.co/game.php
// @run-at document-idle
// @grant none
// ==/UserScript==
var updateNews = "Added quickCalc for Stardust (green box default off) and Super Stardust potions, minor formatting improvements.";
$(document).ready(function () {
// nothing needs to be changed in code
/* TODO
make shit look better
MANY THANKS:
dersat
florb
John / WhoIsYou / CodeCretin
*/
let thisTick = playtime;
function waitForFirstTick() {
if (thisTick == playtime) {
setTimeout(function() {
waitForFirstTick();
}, 100);
} else {
tedsMarketScript();
}
}
waitForFirstTick();
function tedsMarketScript() {
var debugToConsole = false;
if (typeof(jsTradableItems) == "undefined") {
jsTradableItems = jsTradalbeItems;
}
let itemList = {};
for(let key in (jsTradableItems)) {
itemList[key] = 0;
}
const defaultSettings = { // thanks WhoIsYou
notEnoughCoinsOpacity : {
text : "Display unaffordable market items as transparent?",
value : true
},
showMaxCanBuy : {
text : "Display maximum quantity purchasable when cannot afford to buy all?",
value : true
},
showTotalPrice : {
text : "Display total price if buying maximum?",
value : true
},
smallMarketImages : {
text : "Resize market images smaller?",
value : true
},
itemTooltips : {
text : "Display item tooltips? (shows after searching market for all items)",
value : true
},
autoUndercut : {
text : "Smart autofill price to undercut when posting an item?",
value : true
},
marketSlotsCustomUi : {
text : "[FORCED ON] Display custom market box? (refresh all, price history graph, stargem calc, etc)",
value : true
},
hideItemList : [
],
myItemList : [
],
colorMinPrice : {
text : "Background color of min priced items",
bgcolor : "#90ee90", //lightgreen
},
colorNextLowestToMinPrice : {
text : "Background color of next lowest offer to min priced items",
bgcolor : "#ffcc66", //lightorange
},
colorSingleItems : {
text : "Background color of single items",
bgcolor : "#ffff66", //lightyellow
},
colorMyListedLowest : {
text : "Background color of your listed item at lowest price",
bgcolor : "#bffffd", //lightblue
},
colorMyListedLowestCanRaisePrice : {
text : "Background color of next lowest offer to your lowest listed item",
bgcolor : "#6ffffd", //blue
},
colorMyListedNotLowest : {
text : "Background color of your listed item not at lowest price",
bgcolor : "#ffcccc", //lighterred
},
colorLowestForMyListed : {
text : "Background color of lowest offer for an item you have listed",
bgcolor : "#ff7878", //lightred
},
colorMyItemList : {
text : "Background color of items that match myItemList",
bgcolor : "#ff99ff", //lightpink
},
colorMyItemListNextLowest : {
text : "Background color of next lowest offer when an item matches myItemList",
bgcolor : "#f2f2f2", //grey
},
sendMarketData : {
text : "Allow market data to be sent to the script developer? (When you click infinity symbol the following data is sent at a max of once every 3 mins: All items listed on market when you searched ALL, your username)",
value : true,
alert : true,
},
useKeepAmount : {
text : "Remember amount not to sell when posting an item?",
value : true
},
useUndercutBox : {
text : "Display undercut box when posting an item?",
value : true
},
tradableItemsKeepAmount : {
itemList,
hideFromSettings : true,
},
showCheapestHeat : {
text : "Display cheapest heat item on market table?",
value : true
},
showCheapestEnergy : {
text : "Display cheapest energy item on market table?",
value : true
},
stardustProfitGreenBox : {
text : "Show green box when Stardust Potion is profitable?",
value : false
},
superStardustProfitGreenBox : {
text : "Show green box when Super Stardust Potion is profitable?",
value : true
},
stargemProfitGreenBox : {
text : "Show green box when Stargem Potion is profitable?",
value : true
},
};
if (typeof(localStorage.tedSettings) == "undefined") {
localStorage.tedSettings = JSON.stringify(defaultSettings);
console.log("localstorage.tedSettings not found, creating based on defaultSettings");
console.log(localStorage.tedSettings);
}
var tedStoredSettings = JSON.parse(localStorage.getItem("tedSettings"));
for (var key in defaultSettings) {
if (!defaultSettings.hasOwnProperty(key)) continue;
/*var obj = defaultSettings[key];
for (var prop in obj) {
if (!obj.hasOwnProperty(prop)) continue;
//
}*/
if (tedStoredSettings[key] === undefined) {
//add from default
console.log("undefined "+key);
tedStoredSettings[key] = defaultSettings[key];
localStorage.tedSettings = JSON.stringify(tedStoredSettings);
console.log("Key not found, added from default: "+tedStoredSettings[key]);
} else if (debugToConsole) { console.log("matched "+key); }
if (tedStoredSettings[key].text && tedStoredSettings[key].text != defaultSettings[key].text) {
tedStoredSettings[key].text = defaultSettings[key].text;
localStorage.tedSettings = JSON.stringify(tedStoredSettings);
}
}
var notEnoughCoinsOpacity, showMaxCanBuy, showTotalPrice;
var smallMarketImages, marketImageSize = 30; //pixels, default:50, suggested: 30-40
var itemTooltips;
var autoUndercut, undercutBy = 2, matchLowestPriceAt = 20;
var marketSlotsCustomUi;
var hideItemList, myItemList;
var colorMinPrice, colorNextLowestToMinPrice, colorSingleItems, colorMyListedLowest, colorMyListedLowestCanRaisePrice, colorMyListedNotLowest, colorLowestForMyListed, colorMyItemList, colorMyItemListNextLowest;
var refreshMarketAfterBuyingItem_itemName;
var sendMarketData, sendMarketDataWaitTimeMins = 3*60*1000;
var useKeepAmount, useUndercutBox;
var showCheapestHeat, showCheapestEnergy;
var stardustProfitGreenBox, superStardustProfitGreenBox, stargemProfitGreenBox;
function updateVariables() {
tedStoredSettings.hideItemList.sort();
tedStoredSettings.myItemList.sort();
localStorage.tedSettings = JSON.stringify(tedStoredSettings);
notEnoughCoinsOpacity = tedStoredSettings.notEnoughCoinsOpacity.value;
showMaxCanBuy = tedStoredSettings.showMaxCanBuy.value;
showTotalPrice = tedStoredSettings.showTotalPrice.value;
smallMarketImages = tedStoredSettings.smallMarketImages.value;
marketImageSize = 30; //pixels, default:50, suggested: 30-40
itemTooltips = tedStoredSettings.itemTooltips.value;
autoUndercut = tedStoredSettings.autoUndercut.value;
marketSlotsCustomUi = true; //tedStoredSettings.marketSlotsCustomUi.value;
hideItemList = tedStoredSettings.hideItemList;
myItemList = tedStoredSettings.myItemList;
undercutBy = 2;
matchLowestPriceAt = 20;
colorMinPrice = tedStoredSettings.colorMinPrice.bgcolor;
colorNextLowestToMinPrice = tedStoredSettings.colorNextLowestToMinPrice.bgcolor;
colorSingleItems = tedStoredSettings.colorSingleItems.bgcolor;
colorMyListedLowest = tedStoredSettings.colorMyListedLowest.bgcolor;
colorMyListedLowestCanRaisePrice = tedStoredSettings.colorMyListedLowestCanRaisePrice.bgcolor;
colorMyListedNotLowest = tedStoredSettings.colorMyListedNotLowest.bgcolor;
colorLowestForMyListed = tedStoredSettings.colorLowestForMyListed.bgcolor;
colorMyItemList = tedStoredSettings.colorMyItemList.bgcolor;
colorMyItemListNextLowest = tedStoredSettings.colorMyItemListNextLowest.bgcolor;
sendMarketData = tedStoredSettings.sendMarketData.value;
useKeepAmount = tedStoredSettings.useKeepAmount.value;
useUndercutBox = tedStoredSettings.useUndercutBox.value;
showCheapestHeat = tedStoredSettings.showCheapestHeat.value;
showCheapestEnergy = tedStoredSettings.showCheapestEnergy.value;
stardustProfitGreenBox = tedStoredSettings.stardustProfitGreenBox.value;
superStardustProfitGreenBox = tedStoredSettings.superStardustProfitGreenBox.value;
stargemProfitGreenBox = tedStoredSettings.stargemProfitGreenBox.value;
}
updateVariables();
if (tedStoredSettings.sendMarketData.alert === true) {
alert("Ted's Market Script: One time alert: "+tedStoredSettings.sendMarketData.text+" currently set to: "+tedStoredSettings.sendMarketData.value+". This data will be used to create price history graphs and other cool things. If you don't want to be involved you can disable this in Profile & Settings. If you have any questions /pm ted120");
tedStoredSettings.sendMarketData.alert = false;
updateVariables();
}
var arrMarketItems = [];
var arrMarketSlots = []; //updateMarketSlots
for (let msi = 1; 1 == 1; msi++) {
if (document.getElementById("market-slot-"+msi)) {
arrMarketSlots.push([0,0]);
} else break;
}
var marketInterval;
var marketOn = true;
var defaultUndercutOnce;
var tickStart = new Date().getTime();
var tickEnd = new Date().getTime();
var tickTime = tickEnd - tickStart;
var tickCheck = 0;
var sendToSpreadsheet_timeoutStart = new Date().getTime(), sendToSpreadsheet_timeout = 0;
var myItemListAddName,myItemListAddPrice;
var undercutBoxText = document.createElement("span");
var keepAmountText = document.createElement("span");
var dmc_repeat = true, ms_collect_repeat = [true, true, true], ph_brewing_repeat = true, ph_brewing_cur_potion = "";
var quickCalcStargemBoxShadow, quickCalcSuperStardustBoxShadow, quickCalcStardustBoxShadow, quickCalcTooltip = document.createElement("div");
var quickCalcStargemString="", quickCalcSuperStardustString="", quickCalcStardustString="";
var searchAllDelay = 2500;
var lastBrowsedItem = "Stardust";
var oreAverageOn = false, oreAverageElement = document.createElement("div"), currentOreReset = true;
var oreAverageStartTicks = playtime;
var oreAverageElapsedTicks;
var allOres = [["stone",1],["copper",2],["tin",2],["iron",5],["silver",10],["gold",20],["quartz",30],["marble",100],["promethium",1000]];
var minedOres = {};
for (let i = 0; i < allOres.length; i++) {
minedOres[allOres[i][0]] = {
currentAmount : 0,
price : allOres[i][1],
startAmount : window[allOres[i][0]],
oreTick : 0,
coinTick : 0,
oreDay : 0,
coinDay : 0,
};
}
var marketSlotSpareElement = document.createElement("div");
var oldDialogueConfirmYesOnclick = document.getElementById('dialogue-confirm-yes').getAttribute("onclick");
var arrSortItemsList = [
"Stardust",
"Blood Diamond","Diamond","Emerald","Ruby","Sapphire",
"Empty Chisel",
"Blue Axe Orb","Blue Rake Orb","Blue Hammer Orb","Blue Pickaxe Orb","Blue Chisel Orb","Blue Fishing Rod Orb","Blue Oil Pipe Orb","Blue Shovel Orb",
"Essence",
"Bow","Ice Arrows","Fire Arrows","Arrows",
"Skeleton Sword","Skeleton Shield","Bone Amulet",
"Iron Dagger","Stinger",
"Stardust Logs","Maple Logs","Willow Logs","Oak Logs","Logs",
"Ice Bones","Bones","Ashes",
"Stardust Tree Seeds","Maple Tree Seeds","Willow Tree Seeds","Oak Tree Seeds","Tree Seeds",
"Striped Crystal Leaf Seeds","Crystal Leaf Seeds","Striped Gold Leaf Seeds","Gold Leaf Seeds","Blewit Mushroom Seeds","Red Mushroom Seeds","Lime Leaf Seeds","Green Leaf Seeds","Dotted Green Leaf Seeds","Snapegrass Seeds",
"Striped Crystal Leaf","Crystal Leaf","Striped Gold Leaf","Gold Leaf","Blewit Mushroom","Red Mushroom","Strange Leaf","Lime Leaf","Green Leaf","Dotted Green Leaf","Snapegrass",
"Rainbowfish","Whale","Shark","Eel","Swordfish","Lobster","Tuna","Salmon","Sardine","Shrimp",
"Raw Rainbowfish","Raw Whale","Raw Shark","Raw Eel","Raw Swordfish","Raw Lobster","Raw Tuna","Raw Salmon","Raw Sardine","Raw Shrimp","Wheat",
"Runite Bar","Promethium Bar","Gold Bar","Silver Bar","Iron Bar","Bronze Bar","Glass",
"Promethium","Marble","Quartz","Sand","Stone",
"Bear Fur","Bat Skin","Snake Skin"
];
function drawButtons() {
var zMarket = document.createElement("div");
var marketUiButton = document.createElement("button");
marketUiButton.setAttribute("id","marketButton");
marketUiButton.setAttribute("type","button");
var oreAverageButton = document.createElement("button");
oreAverageButton.setAttribute("id","oreAverageButton");
oreAverageButton.setAttribute("type","button");
var zMap = document.createElement("span");
zMap.setAttribute("id","mapSpan");
zMap.setAttribute("style","color:gold");
zMap.innerHTML = " You have an incomplete map!";
var zVer = document.createElement("span");
zVer.setAttribute("style","color:silver");
zVer.innerHTML = " version: "+GM_info.script.version+" ";
zMarket.setAttribute("id","zMarketId");
zMarket.append(marketUiButton);
zMarket.append(zVer);
zMarket.append(oreAverageButton);
zMarket.append(zMap);
document.getElementById("game-div").appendChild(zMarket);
document.getElementById("marketButton").addEventListener(
"click", marketButtonClickAction, false
);
document.getElementById("oreAverageButton").addEventListener(
"click", oreAverageButtonClickAction, false
);
if (marketOn) { document.getElementById("marketButton").innerHTML = "Ted's Market: ON"; } else document.getElementById("marketButton").innerHTML = "Ted's Market: OFF";
if (oreAverageOn) { document.getElementById("oreAverageButton").innerHTML = "oreAverageText: ON"; } else document.getElementById("oreAverageButton").innerHTML = "oreAverageText: OFF";
}
function nextTick() {
if (playtime > tickCheck) {
tickCheck = playtime;
tickEnd = new Date().getTime();
tickTime = tickEnd - tickStart;
if (debugToConsole) { console.log("Tick time: "+ tickTime); }
tickStart = new Date().getTime();
return true;
} else return false;
}
function isInArray(array, search) {
return array.indexOf(search) >= 0;
}
function itemNameFix(string) { // market style name to var style name; Bat Skin > batSkin
var a = string.replace(/\s/g, "");
return a.charAt(0).toLowerCase() + a.slice(1);
}
function numberWithCommas(x) { //string
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
function numberWithoutCommas(x) { //int
return parseInt(x.toString().replace(/,/g , ""));
}
function abbreviate_number(num, fixed) {
if (num === null) {
return null;
} // terminate early
if (num === 0) {
return '0';
} // terminate early
fixed = (!fixed || fixed < 0) ? 0 : fixed; // number of decimal places to show
var b = (num).toPrecision(2).split("e"), // get power
k = b.length === 1 ? 0 : Math.floor(Math.min(b[1].slice(1), 14) / 3), // floor at decimals, ceiling at trillions
c = k < 1 ? num.toFixed(0 + fixed) : k === 1 ? (num / Math.pow(10, k * 3)).toFixed(0) : (num / Math.pow(10, k * 3)).toFixed(0 + fixed), // divide by power
d = c < 0 ? c : Math.abs(c), // enforce -0 is 0
e = d + ['', 'k', 'M', 'B', 'T'][k]; // append power
return e;
}
function tedMarketUiSettings() {
var i,j;
var arrSettingsTH = ["tedMarket Configuration (may require refresh)","Active"];
var zSettingsTable = document.createElement("table");
zSettingsTable.setAttribute("id","marketSettingsTable");
zSettingsTable.setAttribute("style","width:40%;margin-top:3%;margin-bottom:3%;");
zSettingsTable.setAttribute("class","table-style1");
zSettingsTable.setAttribute("align", "center");
var zSettingsTBody = document.createElement("tbody");
zSettingsTBody.setAttribute("style","border-color:black");
for (i = 0; i < 1; i++) {
var zSettingsTHRow = document.createElement("tr");
zSettingsTHRow.setAttribute("style","background-color:grey;color:black;border-color:grey");
for (j = 0; j < 2; j++) {
var zSettingsTH = document.createElement("th");
var cellText = document.createTextNode(arrSettingsTH[j]);
zSettingsTH.appendChild(cellText);
zSettingsTHRow.appendChild(zSettingsTH);
}
zSettingsTBody.appendChild(zSettingsTHRow);
}
window.changeSetting = function(prop) {
if (tedStoredSettings && tedStoredSettings[prop]) {
if (tedStoredSettings[prop].value === true) {
tedStoredSettings[prop].value = false;
document.getElementById("celltick-"+prop).setAttribute("src","images/icons/x.png");
updateVariables();
} else if (tedStoredSettings[prop].value === false) {
tedStoredSettings[prop].value = true;
document.getElementById("celltick-"+prop).setAttribute("src","images/icons/check.png");
updateVariables();
} else if (prop == "hideItemList") {
hideItemListModal.setAttribute("style","display:block;position:fixed;z-index:1;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgba(0,0,0,0.4);");
while (hideItemListModalBody.firstChild) {
hideItemListModalBody.removeChild(hideItemListModalBody.firstChild);
}
var hideItemListModalBodyText = document.createTextNode("hideItemList: Hides these items when searching all unless myItemList finds a match. Click to remove from hideItemList: ");
hideItemListModalBody.append(hideItemListModalBodyText);
hideItemListModalBody.innerHTML += "<br><br>";
for (i = 0; i < tedStoredSettings.hideItemList.length; i++) {
var hideItemListRemoveBtn = document.createElement("button");
hideItemListRemoveBtn.setAttribute("id",tedStoredSettings.hideItemList[i]);
hideItemListRemoveBtn.setAttribute("onclick","hideItemListRemove(this.id);changeSetting('hideItemList')");
hideItemListRemoveBtn.append(tedStoredSettings.hideItemList[i]);
hideItemListModalBody.append(hideItemListRemoveBtn);
}
} else if (prop == "myItemList") {
myItemListModal.setAttribute("style","display:block;position:fixed;z-index:1;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgba(0,0,0,0.4);");
while (myItemListModalBody.firstChild) {
myItemListModalBody.removeChild(myItemListModalBody.firstChild);
}
var myItemListModalBodyNameInput = document.createElement("input");
myItemListModalBodyNameInput.setAttribute("id","myItemListModalBodyNameInput");
myItemListModalBodyNameInput.setAttribute("value",myItemListAddName);
myItemListModalBody.append(myItemListModalBodyNameInput);
var myItemListModalBodyPriceInput = document.createElement("input");
myItemListModalBodyPriceInput.setAttribute("id","myItemListModalBodyPriceInput");
myItemListModalBodyPriceInput.setAttribute("value",myItemListAddPrice);
myItemListModalBody.append(myItemListModalBodyPriceInput);
var myItemListAddBtn = document.createElement("button");
myItemListAddBtn.setAttribute("id","myItemListAddBtn");
myItemListAddBtn.setAttribute("onclick","myItemListAdd(myItemListModalBodyNameInput.value,myItemListModalBodyPriceInput.value);changeSetting('myItemList')");
myItemListAddBtn.append("Add");
myItemListModalBody.append(myItemListAddBtn);
var myItemListModalBodyRemove = document.createElement("div");
myItemListModalBodyRemove.innerHTML = "<br><br>";
myItemListModalBody.append(myItemListModalBodyRemove);
var myItemListModalBodyText = document.createTextNode("myItemList: Highlights these items pink when searching all if price is matched. Click to remove from myItemList: ");
myItemListModalBody.append(myItemListModalBodyText);
myItemListModalBody.innerHTML += "<br><br>";
for (i = 0; i < tedStoredSettings.myItemList.length; i++) {
var myItemListRemoveBtn = document.createElement("button");
myItemListRemoveBtn.setAttribute("id",tedStoredSettings.myItemList[i][0]);
myItemListRemoveBtn.setAttribute("onclick","myItemListRemove(this.id);changeSetting('myItemList')");
myItemListRemoveBtn.append(tedStoredSettings.myItemList[i][0]+" @ <= "+numberWithCommas(tedStoredSettings.myItemList[i][1]));
myItemListModalBody.append(myItemListRemoveBtn);
}
} else if (tedStoredSettings[prop].bgcolor) {
document.getElementById("celltick-"+prop).style.backgroundColor = tedStoredSettings[prop].bgcolor;
colorModal.setAttribute("style","display:block;position:fixed;z-index:1;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgba(0,0,0,0.4);");
while (colorModalBody.firstChild) {
colorModalBody.removeChild(colorModalBody.firstChild);
}
var colorModalBodyContent = document.createElement("div");
colorModalBody.appendChild(colorModalBodyContent);
colorModalBodyContent.innerHTML = "";
KEYS.forEach((key) => {
if (tedStoredSettings[key].bgcolor) {
var colorModalInput = document.createElement("input");
colorModalInput.setAttribute("id",key);
colorModalInput.setAttribute("value",tedStoredSettings[key].bgcolor);
colorModalInput.setAttribute("style","background-color:"+tedStoredSettings[key].bgcolor);
colorModalBodyContent.appendChild(colorModalInput);
var colorModalAddBtn = document.createElement("button");
colorModalAddBtn.setAttribute("onclick","changeColor('"+key+"',document.getElementById('"+key+"').value);changeSetting('"+key+"')");
colorModalAddBtn.append("Change");
colorModalBodyContent.append(colorModalInput);
colorModalBodyContent.append(colorModalAddBtn);
colorModalBodyContent.append(tedStoredSettings[key].text);
// tedStoredSettings[key].text+" = "+colorModalInput+" = "+colorModalBtn
colorModalBodyContent.innerHTML += '<br><br>';
}
});
var colorResetBtn = document.createElement("button");
colorResetBtn.append("RESET COLORS");
colorResetBtn.setAttribute("onclick","resetColors();changeSetting('colorMinPrice');");
colorModalBodyContent.append(colorResetBtn);
}
}
};
const KEYS = Object.keys(defaultSettings);
KEYS.forEach((key) => {
if (!tedStoredSettings[key].hideFromSettings) {
var zSettingsRow = document.createElement("tr");
var zSettingsCell = document.createElement("td");
var cellText = document.createTextNode(tedStoredSettings[key].text);
if (key == "hideItemList") {
cellText = document.createTextNode("Click to open hideItemList");
} else if (key == "myItemList") {
cellText = document.createTextNode("Click to open myItemList");
}
var cellTick = document.createElement("div");
if (tedStoredSettings[key].value === true) {
cellTick = document.createElement("img");
cellTick.setAttribute("src","images/icons/check.png");
cellTick.setAttribute("style","width:20px;height:20px;vertical-align:bottom");
} else if (tedStoredSettings[key].value === false) {
cellTick = document.createElement("img");
cellTick.setAttribute("src","images/icons/x.png");
cellTick.setAttribute("style","width:20px;height:20px;vertical-align:bottom");
} else if (tedStoredSettings[key].bgcolor) {
cellTick.setAttribute("style","display:block;background-color:"+tedStoredSettings[key].bgcolor);
cellTick.innerHTML = "+";
}
zSettingsRow.setAttribute("id","checkbox-"+key);
zSettingsRow.setAttribute("onclick","changeSetting('"+key+"')");
cellTick.setAttribute("id","celltick-"+key);
zSettingsCell.appendChild(cellText);
zSettingsRow.appendChild(zSettingsCell);
zSettingsCell = document.createElement("td");
zSettingsCell.appendChild(cellTick);
zSettingsRow.appendChild(zSettingsCell);
zSettingsRow.setAttribute("align","center");
zSettingsTBody.appendChild(zSettingsRow);
}
});
zSettingsTable.appendChild(zSettingsTBody);
document.getElementById("tab-container-profile").appendChild(zSettingsTable);
var hideItemListModal = document.createElement("div");
hideItemListModal.setAttribute("id","hideItemListModal");
hideItemListModal.setAttribute("style","display:none");
var hideItemListModalBody = document.createElement("div");
hideItemListModalBody.setAttribute("id","hideItemListModalBody");
hideItemListModalBody.setAttribute("style","position:fixed;bottom:0;background-color:#ffcc44;width:auto;padding:1%;margin: 2% 2%;");
document.getElementById("game-div").append(hideItemListModal);
document.getElementById("hideItemListModal").append(hideItemListModalBody);
window.hideItemListRemove = function(itemName) {
var index = tedStoredSettings.hideItemList.indexOf(itemName);
if (index >= 0) {
tedStoredSettings.hideItemList.splice(index,1);
updateVariables();
} else console.log("error: "+itemName+" not in tedStoredSettings.hideItemList");
};
window.myItemListRemove = function(itemName) {
var index, indexi;
for (var i = 0; i < tedStoredSettings.myItemList.length; i++) {
for (var j = 0; j < tedStoredSettings.myItemList[i].length; j++) {
index = tedStoredSettings.myItemList[i].indexOf(itemName);
indexi = i;
if (index >= 0) break;
}
if (index >= 0) break;
}
if (index >= 0) {
tedStoredSettings.myItemList.splice(indexi,1);
updateVariables();
} else console.log("error: "+itemName+" not in tedStoredSettings.myItemList");
};
window.myItemListAdd = function(itemName, price) {
if (!isNaN(price)) {
myItemListRemove(itemName);
tedStoredSettings.myItemList.push([itemName,price]);
updateVariables();
} else console.log("myItemListAdd price not a number"+typeof(itemName),itemName);
};
var myItemListModal = document.createElement("div");
myItemListModal.setAttribute("id","myItemListModal");
myItemListModal.setAttribute("style","display:none");
var myItemListModalBody = document.createElement("div");
myItemListModalBody.setAttribute("id","myItemListModalBody");
myItemListModalBody.setAttribute("style","position:fixed;bottom:0;background-color:#ffcc44;width:auto;padding:1%;margin: 2% 2%;");
document.getElementById("game-div").append(myItemListModal);
document.getElementById("myItemListModal").append(myItemListModalBody);
window.changeColor = function(key,color) {
var isOk = /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(color);
//if (isOk) {
tedStoredSettings[key].bgcolor = color;
updateVariables();
//} else tedStoredSettings[key].bgcolor = "#FFFFFF";
};
window.resetColors = function() {
KEYS.forEach((key) => {
if (tedStoredSettings[key].bgcolor) {
tedStoredSettings[key].bgcolor = defaultSettings[key].bgcolor;
document.getElementById("celltick-"+key).style.backgroundColor = tedStoredSettings[key].bgcolor;
}
});
updateVariables();
};
var colorModal = document.createElement("div");
colorModal.setAttribute("id","colorModal");
colorModal.setAttribute("style","display:none");
var colorModalBody = document.createElement("div");
colorModalBody.setAttribute("id","colorModalBody");
colorModalBody.setAttribute("style","position:fixed;bottom:0;background-color:#fefefe;width:100%;padding:5%");
document.getElementById("game-div").append(colorModal);
document.getElementById("colorModal").append(colorModalBody);
window.onclick = function(event) {
if (event.target == hideItemListModal) {
hideItemListModal.style.display = "none";
}
if (event.target == myItemListModal) {
myItemListModal.style.display = "none";
}
if (event.target == colorModal) {
colorModal.style.display = "none";
}
};
}
function quickCalcMain() {
var i, a, b;
var arrQuickCalcHeat = ["Error, search for all (infinity symbol)", 999999, 0, 999999, 0, 0]; // name, heatprice, amount, logprice, row
var arrLogs = [["Logs",1],["Oak Logs",2],["Willow Logs",5],["Maple Logs",10],["Stardust Logs",20]];
var arrQuickCalcEnergy = ["Error, search for all (infinity symbol)", 999999, 0, 999999, 0, 0]; // name, energyprice, amount, fishprice, row
var arrEnergy = [["Shrimp",50],["Sardine",400],["Tuna",1000],["Swordfish",7500],["Shark",20000]];
var hasBrewingKit;
var arrStargemInput = [["Blewit Mushroom",100,0,0],["Gold Leaf",1,0,0],["Sapphire",1,0,0],["Emerald",1,0,0],["Ruby",1,0,0],["Diamond",1,0,0],["Sand",25,0,0],["Glass",25,0,0]];//name,amt need, amt have, ttl price
var arrStargemOutput = [["Stardust",0]]; // name, price
var arrSmallVialInput = [["Glass",5,0,0],["Sand",5,0,0]]; //or
var arrSuperStardustInput = [["Lime Leaf",5,0,0],["Snapegrass",50,0,0]];
var arrSuperStardustOutput = [["Stardust",0]];
var avgSdGainStardustPotion = 6062, avgSdGainSuperStardustPotion = 33400;
var arrStardustInput = [["Dotted Green Leaf",1,0,0],["Red Mushroom",25,0,0]];
var arrStardustOutput = [["Stardust",0]];
var lowestVial, lowestVialSource, lowestSmallVial, lowestSmallVialSource;
var stargemNetMinusOne, stargemNet, stargemNetPlusOne, totalPrice;
function calculateAndModifyInput(array) {
for (a = 0; a < array.length; a++) {
if (arrMarketItems[i][0] == array[a][0]) {
for (b = 2; b < arrMarketItems[i].length; b++) {
if (array[a][2] < array[a][1]) {
if (arrMarketItems[i][b][1] < array[a][1]-array[a][2]) {
array[a][2] += arrMarketItems[i][b][1];
array[a][3] += arrMarketItems[i][b][0]*arrMarketItems[i][b][1];
} else if (arrMarketItems[i][b][1] >= array[a][1]-array[a][2]) {
array[a][3] += (array[a][1]-array[a][2])*arrMarketItems[i][b][0];
array[a][2] = array[a][1];
}
if (debugToConsole) { console.log(array[a][0], array[a][1], array[a][2], array[a][3]); }
}
}
}
}
}
function calculateAndModifyOutput(array) {
for (a = 0; a < array.length; a++) {
if (arrMarketItems[i][0] == array[a][0]) {
array[a][1] = parseInt(arrMarketItems[i][2][0]);
break;
}
}
}
if (typeof(document.getElementById("market-table").rows[1]) == "undefined" || document.getElementById("market-table").rows[1] === null) {
} else if (typeof(document.getElementById("market-table").rows[1]) != "undefined" && document.getElementById("market-table").rows[1] !== null) {
for (i = 0; i < arrMarketItems.length; i++) {
//small vial
calculateAndModifyInput(arrSmallVialInput);
//stardust
calculateAndModifyInput(arrStardustInput);
calculateAndModifyOutput(arrStardustOutput);
//super stardust
calculateAndModifyInput(arrSuperStardustInput);
calculateAndModifyOutput(arrSuperStardustOutput);
//stargem
calculateAndModifyInput(arrStargemInput);
calculateAndModifyOutput(arrStargemOutput);
//heat calc
for (a = 0; a < arrLogs.length; a++) {
if (arrMarketItems[i][0] == arrLogs[a][0]) {
if (arrMarketItems[i][2][0]/arrLogs[a][1] < arrQuickCalcHeat[1]) {
arrQuickCalcHeat[0] = arrMarketItems[i][0];
arrQuickCalcHeat[1] = Math.ceil(arrMarketItems[i][2][0]/arrLogs[a][1]);
arrQuickCalcHeat[2] = arrMarketItems[i][2][1];
arrQuickCalcHeat[3] = arrMarketItems[i][2][0];
arrQuickCalcHeat[4] = arrLogs[a][1];
arrQuickCalcHeat[5] = arrMarketItems[i][2][3];
}
if (debugToConsole) { console.log(arrMarketItems[i][0],arrMarketItems[i][2][0]/arrLogs[a][1],arrMarketItems[i][2][1]); }
if (debugToConsole) { console.log(arrQuickCalcHeat[0],arrQuickCalcHeat[1],arrQuickCalcHeat[2]); }
}
}
//energy calc
for (a = 0; a < arrEnergy.length; a++) {
if (arrMarketItems[i][0] == arrEnergy[a][0]) {
if (arrMarketItems[i][2][0]/arrEnergy[a][1] < arrQuickCalcEnergy[1]) {
arrQuickCalcEnergy[0] = arrMarketItems[i][0];
arrQuickCalcEnergy[1] = Math.ceil(arrMarketItems[i][2][0]/arrEnergy[a][1]);
arrQuickCalcEnergy[2] = arrMarketItems[i][2][1];
arrQuickCalcEnergy[3] = arrMarketItems[i][2][0];
arrQuickCalcEnergy[4] = arrEnergy[a][1];
arrQuickCalcEnergy[5] = arrMarketItems[i][2][3];
}
if (debugToConsole) { console.log(arrMarketItems[i][0],arrMarketItems[i][2][0]/arrEnergy[a][1],arrMarketItems[i][2][1]); }
if (debugToConsole) { console.log(arrQuickCalcEnergy[0],arrQuickCalcEnergy[1],arrQuickCalcEnergy[2]); }
}
}
}
//small vial stuff
if (arrSmallVialInput[0][2] == arrSmallVialInput[0][1] && arrSmallVialInput[1][2] == arrSmallVialInput[1][1]) { // enough both
if (arrSmallVialInput[1][3] <= arrSmallVialInput[0][3]) {
lowestSmallVial = arrSmallVialInput[1][3];
lowestSmallVialSource = arrSmallVialInput[1][0];
} else if (arrSmallVialInput[0][3] < arrSmallVialInput[1][3]) {
lowestSmallVial = arrSmallVialInput[0][3];
lowestSmallVialSource = arrSmallVialInput[0][0];
}
} else if (arrSmallVialInput[0][2] == arrSmallVialInput[0][1] && arrSmallVialInput[1][2] != arrSmallVialInput[1][1]) { // glass only
lowestSmallVial = arrSmallVialInput[0][3];
lowestSmallVialSource = arrSmallVialInput[0][0];
} else if (arrSmallVialInput[0][2] != arrSmallVialInput[0][1] && arrSmallVialInput[1][2] == arrSmallVialInput[1][1]) { // sand only
lowestSmallVial = arrSmallVialInput[1][3];
lowestSmallVialSource = arrSmallVialInput[1][0];
} else if (arrSmallVialInput[0][2] != arrSmallVialInput[0][1] && arrSmallVialInput[1][2] != arrSmallVialInput[1][1]) { // not enough both
lowestSmallVial = 0;
lowestSmallVialSource = "<span style='color:red;background-color:black;'>ERR: Sand & Glass < 5</span>";
}
//stardust tooltip hover
var dottedGreenLeafPrice = arrStardustInput[0][3];
var redMushroomPrice = arrStardustInput[1][3];
var lowestSmallVialPrice = lowestSmallVial;
if (boundBrewingKit == 1) {
hasBrewingKit = true;
for (i = 0; i < 2; i++) {
arrStardustInput[i][3] = Math.ceil(arrStardustInput[i][3] / 1.1); // brewing kit 10% free ingredients
}
lowestSmallVialPrice = Math.ceil(lowestSmallVialPrice / 1.1); // brewing kit 10% free vial
} else hasBrewingKit = false;
quickCalcStardustString = "";
quickCalcStardustBoxShadow = false;
if (arrStardustInput[0][1] == arrStardustInput[0][2] && arrStardustInput[1][1] == arrStardustInput[1][2]) {
quickCalcStardustString += "<span style='float:left;padding:5px;'>Stardust Profit</span>";
if (hasBrewingKit) {
quickCalcStardustString += "<span style='float:right;padding:5px;color:green;'>+Brewing Kit</span>";
} else quickCalcStardustString += "<span style='float:right;padding:5px;color:black;'><s style='color:red'>Brewing Kit</s></span>";
quickCalcStardustString += "<br>";
quickCalcStardustString += "<table style='text-align:center;padding:0 2px;' class='top-bar'><tbody><tr style='text-align:center'><th></th><th>$</th><th style='color:silver'>"+(arrStargemOutput[0][1]-1)+"</th><th>"+(arrStargemOutput[0][1])+"</th><th style='color:silver'>"+(arrStargemOutput[0][1]+1)+"</th></tr>";
stargemNetMinusOne = abbreviate_number(((arrStargemOutput[0][1]-1)*avgSdGainStardustPotion)-(arrStardustInput[0][3]+arrStardustInput[1][3]+lowestSmallVialPrice),1);
stargemNet = abbreviate_number(((arrStargemOutput[0][1])*avgSdGainStardustPotion)-(arrStardustInput[0][3]+arrStardustInput[1][3]+lowestSmallVialPrice),1);
stargemNetPlusOne = abbreviate_number(((arrStargemOutput[0][1]+1)*avgSdGainStardustPotion)-(arrStardustInput[0][3]+arrStardustInput[1][3]+lowestSmallVialPrice),1);
quickCalcStardustString += "<tr>";
quickCalcStardustString += "<td style='text-align:center'><img class='image-icon-20' src='images/stardustPotion.png'></td>";
totalPrice = (arrStardustInput[0][3]+arrStardustInput[1][3]+lowestSmallVialPrice);
quickCalcStardustString += "<td>"+abbreviate_number(totalPrice,2)+"</td>";
if (abbreviate_number(totalPrice,1) === 0) { quickCalcStardustString += "<td></td>"; } else if (stargemNetMinusOne.indexOf("-") >= 0) { quickCalcStardustString += "<td style='color:red'>"+stargemNetMinusOne+"</td>"; } else { quickCalcStardustString += "<td style='color:lightgreen'>"+stargemNetMinusOne+"</td>";quickCalcStardustBoxShadow = true; }
if (abbreviate_number(totalPrice,1) === 0) { quickCalcStardustString += "<td></td>"; } else if (stargemNet.indexOf("-") >= 0) { quickCalcStardustString += "<td style='color:red'>"+stargemNet+"</td>"; } else { quickCalcStardustString += "<td style='color:lightgreen'>"+stargemNet+"</td>";quickCalcStardustBoxShadow = true; }
if (abbreviate_number(totalPrice,1) === 0) { quickCalcStardustString += "<td></td>"; } else if (stargemNetPlusOne.indexOf("-") >= 0) { quickCalcStardustString += "<td style='color:red'>"+stargemNetPlusOne+"</td>"; } else { quickCalcStardustString += "<td style='color:lightgreen'>"+stargemNetPlusOne+"</td>"; }
quickCalcStardustString += "</tr>";
stargemNetMinusOne = abbreviate_number(24*12*(((arrStargemOutput[0][1]-1)*avgSdGainStardustPotion)-(arrStardustInput[0][3]+arrStardustInput[1][3]+lowestSmallVialPrice)),1);
stargemNet = abbreviate_number(24*12*(((arrStargemOutput[0][1])*avgSdGainStardustPotion)-(arrStardustInput[0][3]+arrStardustInput[1][3]+lowestSmallVialPrice)),1);
stargemNetPlusOne = abbreviate_number(24*12*(((arrStargemOutput[0][1]+1)*avgSdGainStardustPotion)-(arrStardustInput[0][3]+arrStardustInput[1][3]+lowestSmallVialPrice)),1);
quickCalcStardustString += "<tr>";
quickCalcStardustString += "<td style='text-align:center;color:gold;'>24h</td>";
totalPrice = 24*12*(arrStardustInput[0][3]+arrStardustInput[1][3]+lowestSmallVialPrice);
quickCalcStardustString += "<td>"+abbreviate_number(totalPrice,1)+"</td>";
if (abbreviate_number(totalPrice,1) === 0) { quickCalcStardustString += "<td></td>"; } else if (stargemNetMinusOne.indexOf("-") >= 0) { quickCalcStardustString += "<td style='color:red'>"+stargemNetMinusOne+"</td>"; } else { quickCalcStardustString += "<td style='color:lightgreen'>"+stargemNetMinusOne+"</td>";quickCalcStardustBoxShadow = true; }
if (abbreviate_number(totalPrice,1) === 0) { quickCalcStardustString += "<td></td>"; } else if (stargemNet.indexOf("-") >= 0) { quickCalcStardustString += "<td style='color:red'>"+stargemNet+"</td>"; } else { quickCalcStardustString += "<td style='color:lightgreen'>"+stargemNet+"</td>";quickCalcStardustBoxShadow = true; }
if (abbreviate_number(totalPrice,1) === 0) { quickCalcStardustString += "<td></td>"; } else if (stargemNetPlusOne.indexOf("-") >= 0) { quickCalcStardustString += "<td style='color:red'>"+stargemNetPlusOne+"</td>"; } else { quickCalcStardustString += "<td style='color:lightgreen'>"+stargemNetPlusOne+"</td>"; }
quickCalcStardustString += "</tr>";
quickCalcStardustString += "</tbody></table>";
quickCalcStardustString += arrStardustInput[0][0]+": "+abbreviate_number(dottedGreenLeafPrice,0)+"<br>";
quickCalcStardustString += arrStardustInput[1][0]+": "+abbreviate_number(redMushroomPrice,0)+"<br>";
quickCalcStardustString += lowestSmallVialSource+": "+abbreviate_number(lowestSmallVial,0)+"<br>";
if (quickCalcStardustBoxShadow) {
document.getElementById("quickCalcStargem").style.boxShadow = "0 0 40px -10px rgba(0,255,0,1) inset,0 0 5px 0px rgba(0,255,0,1)";
} else document.getElementById("quickCalcStargem").style.boxShadow = "";
if (quickCalcSuperStardustBoxShadow) {
document.getElementById("quickCalcSuperStardust").style.boxShadow = "0 0 40px -10px rgba(0,255,0,1) inset,0 0 5px 0px rgba(0,255,0,1)";
} else document.getElementById("quickCalcSuperStardust").style.boxShadow = "";
if (quickCalcStardustBoxShadow) {
document.getElementById("quickCalcStardust").style.boxShadow = "0 0 40px -10px rgba(0,255,0,1) inset,0 0 5px 0px rgba(0,255,0,1)";
} else document.getElementById("quickCalcStardust").style.boxShadow = "";
}
if (arrStardustInput[0][1] != arrStardustInput[0][2]) quickCalcStardustString += "Not enough "+arrStardustInput[0][0]+" "+arrStardustInput[0][2]+"/"+arrStardustInput[0][1]+"<br>";
if (arrStardustInput[1][1] != arrStardustInput[1][2]) quickCalcStardustString += "Not enough "+arrStardustInput[1][0]+" "+arrStardustInput[1][2]+"/"+arrStardustInput[1][1]+"<br>";
quickCalcTooltip.innerHTML = quickCalcStardustString;
//super stardust tooltip hover
var limeLeafPrice = arrSuperStardustInput[0][3];
var snapegrassPrice = arrSuperStardustInput[1][3];
lowestSmallVialPrice = lowestSmallVial;
if (boundBrewingKit == 1) {
hasBrewingKit = true;
for (i = 0; i < 2; i++) {
arrSuperStardustInput[i][3] = Math.ceil(arrSuperStardustInput[i][3] / 1.1); // brewing kit 10% free ingredients
}
lowestSmallVialPrice = Math.ceil(lowestSmallVialPrice / 1.1); // brewing kit 10% free vial
} else hasBrewingKit = false;
quickCalcSuperStardustString = "";
quickCalcSuperStardustBoxShadow = false;
if (arrSuperStardustInput[0][1] == arrSuperStardustInput[0][2] && arrSuperStardustInput[1][1] == arrSuperStardustInput[1][2]) {
quickCalcSuperStardustString += "<span style='float:left;padding:5px;'>S Stardust Profit</span>";
if (hasBrewingKit) {
quickCalcSuperStardustString += "<span style='float:right;padding:5px;color:green;'>+Brewing Kit</span>";
} else quickCalcSuperStardustString += "<span style='float:right;padding:5px;color:black;'><s style='color:red'>Brewing Kit</s></span>";
quickCalcSuperStardustString += "<br>";
quickCalcSuperStardustString += "<table style='text-align:center;padding:0 2px;' class='top-bar'><tbody><tr style='text-align:center'><th></th><th>$</th><th style='color:silver'>"+(arrStargemOutput[0][1]-1)+"</th><th>"+(arrStargemOutput[0][1])+"</th><th style='color:silver'>"+(arrStargemOutput[0][1]+1)+"</th></tr>";
stargemNetMinusOne = abbreviate_number(((arrStargemOutput[0][1]-1)*avgSdGainSuperStardustPotion)-(arrSuperStardustInput[0][3]+arrSuperStardustInput[1][3]+lowestSmallVialPrice),1);
stargemNet = abbreviate_number(((arrStargemOutput[0][1])*avgSdGainSuperStardustPotion)-(arrSuperStardustInput[0][3]+arrSuperStardustInput[1][3]+lowestSmallVialPrice),1);
stargemNetPlusOne = abbreviate_number(((arrStargemOutput[0][1]+1)*avgSdGainSuperStardustPotion)-(arrSuperStardustInput[0][3]+arrSuperStardustInput[1][3]+lowestSmallVialPrice),1);
quickCalcSuperStardustString += "<tr>";
quickCalcSuperStardustString += "<td style='text-align:center'><img class='image-icon-20' src='images/superStardustPotion.png'></td>";
totalPrice = (arrSuperStardustInput[0][3]+arrSuperStardustInput[1][3]+lowestSmallVialPrice);
quickCalcSuperStardustString += "<td>"+abbreviate_number(totalPrice,2)+"</td>";
if (abbreviate_number(totalPrice,1) === 0) { quickCalcSuperStardustString += "<td></td>"; } else if (stargemNetMinusOne.indexOf("-") >= 0) { quickCalcSuperStardustString += "<td style='color:red'>"+stargemNetMinusOne+"</td>"; } else { quickCalcSuperStardustString += "<td style='color:lightgreen'>"+stargemNetMinusOne+"</td>";quickCalcSuperStardustBoxShadow = true; }
if (abbreviate_number(totalPrice,1) === 0) { quickCalcSuperStardustString += "<td></td>"; } else if (stargemNet.indexOf("-") >= 0) { quickCalcSuperStardustString += "<td style='color:red'>"+stargemNet+"</td>"; } else { quickCalcSuperStardustString += "<td style='color:lightgreen'>"+stargemNet+"</td>";quickCalcSuperStardustBoxShadow = true; }
if (abbreviate_number(totalPrice,1) === 0) { quickCalcSuperStardustString += "<td></td>"; } else if (stargemNetPlusOne.indexOf("-") >= 0) { quickCalcSuperStardustString += "<td style='color:red'>"+stargemNetPlusOne+"</td>"; } else { quickCalcSuperStardustString += "<td style='color:lightgreen'>"+stargemNetPlusOne+"</td>"; }
quickCalcSuperStardustString += "</tr>";
stargemNetMinusOne = abbreviate_number(24*12*(((arrStargemOutput[0][1]-1)*avgSdGainSuperStardustPotion)-(arrSuperStardustInput[0][3]+arrSuperStardustInput[1][3]+lowestSmallVialPrice)),0);
stargemNet = abbreviate_number(24*12*(((arrStargemOutput[0][1])*avgSdGainSuperStardustPotion)-(arrSuperStardustInput[0][3]+arrSuperStardustInput[1][3]+lowestSmallVialPrice)),0);
stargemNetPlusOne = abbreviate_number(24*12*(((arrStargemOutput[0][1]+1)*avgSdGainSuperStardustPotion)-(arrSuperStardustInput[0][3]+arrSuperStardustInput[1][3]+lowestSmallVialPrice)),0);
quickCalcSuperStardustString += "<tr>";
quickCalcSuperStardustString += "<td style='text-align:center;color:gold;'>24h</td>";
totalPrice = 24*12*(arrSuperStardustInput[0][3]+arrSuperStardustInput[1][3]+lowestSmallVialPrice);
quickCalcSuperStardustString += "<td>"+abbreviate_number(totalPrice,0)+"</td>";
if (abbreviate_number(totalPrice,1) === 0) { quickCalcSuperStardustString += "<td></td>"; } else if (stargemNetMinusOne.indexOf("-") >= 0) { quickCalcSuperStardustString += "<td style='color:red'>"+stargemNetMinusOne+"</td>"; } else { quickCalcSuperStardustString += "<td style='color:lightgreen'>"+stargemNetMinusOne+"</td>";quickCalcSuperStardustBoxShadow = true; }
if (abbreviate_number(totalPrice,1) === 0) { quickCalcSuperStardustString += "<td></td>"; } else if (stargemNet.indexOf("-") >= 0) { quickCalcSuperStardustString += "<td style='color:red'>"+stargemNet+"</td>"; } else { quickCalcSuperStardustString += "<td style='color:lightgreen'>"+stargemNet+"</td>";quickCalcSuperStardustBoxShadow = true; }
if (abbreviate_number(totalPrice,1) === 0) { quickCalcSuperStardustString += "<td></td>"; } else if (stargemNetPlusOne.indexOf("-") >= 0) { quickCalcSuperStardustString += "<td style='color:red'>"+stargemNetPlusOne+"</td>"; } else { quickCalcSuperStardustString += "<td style='color:lightgreen'>"+stargemNetPlusOne+"</td>"; }
quickCalcSuperStardustString += "</tr>";
quickCalcSuperStardustString += "</tbody></table>";
quickCalcSuperStardustString += arrSuperStardustInput[0][0]+": "+abbreviate_number(dottedGreenLeafPrice,0)+"<br>";
quickCalcSuperStardustString += arrSuperStardustInput[1][0]+": "+abbreviate_number(redMushroomPrice,0)+"<br>";
quickCalcSuperStardustString += lowestSmallVialSource+": "+abbreviate_number(lowestSmallVial,0)+"<br>";
if (quickCalcStardustBoxShadow) {
document.getElementById("quickCalcStargem").style.boxShadow = "0 0 40px -10px rgba(0,255,0,1) inset,0 0 5px 0px rgba(0,255,0,1)";
} else document.getElementById("quickCalcStargem").style.boxShadow = "";
if (quickCalcSuperStardustBoxShadow) {
document.getElementById("quickCalcSuperStardust").style.boxShadow = "0 0 40px -10px rgba(0,255,0,1) inset,0 0 5px 0px rgba(0,255,0,1)";
} else document.getElementById("quickCalcSuperStardust").style.boxShadow = "";
if (quickCalcStardustBoxShadow) {
document.getElementById("quickCalcStardust").style.boxShadow = "0 0 40px -10px rgba(0,255,0,1) inset,0 0 5px 0px rgba(0,255,0,1)";
} else document.getElementById("quickCalcStardust").style.boxShadow = "";
}
if (arrSuperStardustInput[0][1] != arrSuperStardustInput[0][2]) quickCalcSuperStardustString += "Not enough "+arrSuperStardustInput[0][0]+" "+arrSuperStardustInput[0][2]+"/"+arrSuperStardustInput[0][1]+"<br>";
if (arrSuperStardustInput[1][1] != arrSuperStardustInput[1][2]) quickCalcSuperStardustString += "Not enough "+arrSuperStardustInput[1][0]+" "+arrSuperStardustInput[1][2]+"/"+arrSuperStardustInput[1][1]+"<br>";
quickCalcTooltip.innerHTML = quickCalcSuperStardustString;
//stargem tooltip hover
if (arrStargemInput[6][2] == arrStargemInput[6][1] && arrStargemInput[7][2] == arrStargemInput[7][1]) { // enough both
if (arrStargemInput[7][3] <= arrStargemInput[6][3]) {
lowestVial = arrStargemInput[7][3];
lowestVialSource = arrStargemInput[7][0];
} else if (arrStargemInput[6][3] < arrStargemInput[7][3]) {
lowestVial = arrStargemInput[6][3];
lowestVialSource = arrStargemInput[6][0];
}
} else if (arrStargemInput[6][2] == arrStargemInput[6][1] && arrStargemInput[7][2] != arrStargemInput[7][1]) { // sand only
lowestVial = arrStargemInput[6][3];
lowestVialSource = arrStargemInput[6][0];
} else if (arrStargemInput[6][2] != arrStargemInput[6][1] && arrStargemInput[7][2] == arrStargemInput[7][1]) { // glass only
lowestVial = arrStargemInput[7][3];
lowestVialSource = arrStargemInput[7][0];
} else if (arrStargemInput[6][2] != arrStargemInput[6][1] && arrStargemInput[7][2] != arrStargemInput[7][1]) { // not enough both
lowestVial = 0;
lowestVialSource = "<span style='color:red;background-color:black;'>ERR: Sand & Glass < 25</span>";
}
var blewitMushroomPrice = arrStargemInput[0][3];
var goldLeafPrice = arrStargemInput[1][3];
var lowestVialPrice = lowestVial;
if (boundBrewingKit == 1) {
hasBrewingKit = true;
for (i = 0; i < 2; i++) {
arrStargemInput[i][3] = Math.ceil(arrStargemInput[i][3] / 1.1); // brewing kit 10% free ingredients
}
lowestVialPrice = Math.ceil(lowestVialPrice / 1.1); // brewing kit 10% free vial
} else hasBrewingKit = false;
quickCalcStargemString = "";
quickCalcStargemBoxShadow = false;
if (arrStargemInput[0][1] == arrStargemInput[0][2] && arrStargemInput[1][1] == arrStargemInput[1][2]) {
quickCalcStargemString += "<span style='float:left;padding:5px;'>Stargem Profit</span>";
if (hasBrewingKit) {
quickCalcStargemString += "<span style='float:right;padding:5px;color:green;'>+Brewing Kit</span>";
} else quickCalcStargemString += "<span style='float:right;padding:5px;color:black;'><s style='color:red'>Brewing Kit</s></span>";
quickCalcStargemString += "<br>";
quickCalcStargemString += "<table style='text-align:center;padding:0 2px;' class='top-bar'><tbody><tr style='text-align:center'><th>Gem</th><th>$</th><th style='color:silver'>"+(arrStargemOutput[0][1]-1)+"</th><th>"+(arrStargemOutput[0][1])+"</th><th style='color:silver'>"+(arrStargemOutput[0][1]+1)+"</th></tr>";
for (a = 2; a < arrStargemInput.length-2; a++) {
if (a == 5) {
stargemNetMinusOne = abbreviate_number(((arrStargemOutput[0][1]-1)*(a*120000))-(arrStargemInput[a][3]+arrStargemInput[0][3]+arrStargemInput[1][3]+lowestVialPrice),1);
stargemNet = abbreviate_number(((arrStargemOutput[0][1])*(a*120000))-(arrStargemInput[a][3]+arrStargemInput[0][3]+arrStargemInput[1][3]+lowestVialPrice),1);
stargemNetPlusOne = abbreviate_number(((arrStargemOutput[0][1]+1)*(a*120000))-(arrStargemInput[a][3]+arrStargemInput[0][3]+arrStargemInput[1][3]+lowestVialPrice),1);
} else {
stargemNetMinusOne = abbreviate_number(((arrStargemOutput[0][1]-1)*((a-1)*100000))-(arrStargemInput[a][3]+arrStargemInput[0][3]+arrStargemInput[1][3]+lowestVialPrice),1);
stargemNet = abbreviate_number((arrStargemOutput[0][1]*((a-1)*100000))-(arrStargemInput[a][3]+arrStargemInput[0][3]+arrStargemInput[1][3]+lowestVialPrice),1);
stargemNetPlusOne = abbreviate_number(((arrStargemOutput[0][1]+1)*((a-1)*100000))-(arrStargemInput[a][3]+arrStargemInput[0][3]+arrStargemInput[1][3]+lowestVialPrice),1);
}
quickCalcStargemString += "<tr>";
quickCalcStargemString += "<td style='text-align:center'><img class='image-icon-20' src='images/"+itemNameFix(arrStargemInput[a][0])+".png'></td>";
if (arrStargemInput[a][2] === 0) {
quickCalcStargemString += "<td></td><td></td><td></td><td></td>";
} else {
quickCalcStargemString += "<td>"+abbreviate_number(arrStargemInput[a][3],2)+"</td>";
if (abbreviate_number(arrStargemInput[a][3],1) === 0) { quickCalcStargemString += "<td></td>"; } else if (stargemNetMinusOne.indexOf("-") >= 0) { quickCalcStargemString += "<td style='color:red'>"+stargemNetMinusOne+"</td>"; } else { quickCalcStargemString += "<td style='color:lightgreen'>"+stargemNetMinusOne+"</td>";quickCalcStargemBoxShadow = true; }
if (abbreviate_number(arrStargemInput[a][3],1) === 0) { quickCalcStargemString += "<td></td>"; } else if (stargemNet.indexOf("-") >= 0) { quickCalcStargemString += "<td style='color:red'>"+stargemNet+"</td>"; } else { quickCalcStargemString += "<td style='color:lightgreen'>"+stargemNet+"</td>";quickCalcStargemBoxShadow = true; }
if (abbreviate_number(arrStargemInput[a][3],1) === 0) { quickCalcStargemString += "<td></td>"; } else if (stargemNetPlusOne.indexOf("-") >= 0) { quickCalcStargemString += "<td style='color:red'>"+stargemNetPlusOne+"</td>"; } else { quickCalcStargemString += "<td style='color:lightgreen'>"+stargemNetPlusOne+"</td>"; }
}
quickCalcStargemString += "</tr>";
}
quickCalcStargemString += "</tbody></table>";
quickCalcStargemString += arrStargemInput[0][0]+": "+abbreviate_number(blewitMushroomPrice,0)+"<br>";
quickCalcStargemString += arrStargemInput[1][0]+": "+abbreviate_number(goldLeafPrice,0)+"<br>";
quickCalcStargemString += lowestVialSource+": "+abbreviate_number(lowestVial,0)+"<br>";
if (quickCalcStardustBoxShadow && stardustProfitGreenBox) {
document.getElementById("quickCalcStardust").style.boxShadow = "0 0 40px -10px rgba(0,255,0,1) inset,0 0 5px 0px rgba(0,255,0,1)";
} else document.getElementById("quickCalcStardust").style.boxShadow = "";
if (quickCalcSuperStardustBoxShadow && superStardustProfitGreenBox) {
document.getElementById("quickCalcSuperStardust").style.boxShadow = "0 0 40px -10px rgba(0,255,0,1) inset,0 0 5px 0px rgba(0,255,0,1)";
} else document.getElementById("quickCalcSuperStardust").style.boxShadow = "";
if (quickCalcStargemBoxShadow && stargemProfitGreenBox) {
document.getElementById("quickCalcStargem").style.boxShadow = "0 0 40px -10px rgba(0,255,0,1) inset,0 0 5px 0px rgba(0,255,0,1)";
} else document.getElementById("quickCalcStargem").style.boxShadow = "";
}
if (arrStargemInput[0][1] != arrStargemInput[0][2]) quickCalcStargemString += "Not enough "+arrStargemInput[0][0]+" "+arrStargemInput[0][2]+"/"+arrStargemInput[0][1]+"<br>";
if (arrStargemInput[1][1] != arrStargemInput[1][2]) quickCalcStargemString += "Not enough "+arrStargemInput[1][0]+" "+arrStargemInput[1][2]+"/"+arrStargemInput[1][1]+"<br>";
quickCalcTooltip.innerHTML = quickCalcStargemString;
//heat on market table
if (showCheapestHeat) {
var quickCalcBestHeat = document.createElement("img");
quickCalcBestHeat.setAttribute("style","float:left;padding-left:15px;");
quickCalcBestHeat.setAttribute("src","images/icons/fire.png");
quickCalcBestHeat.setAttribute("class","image-icon-20");
quickCalcBestHeat.setAttribute("title","Cheapest heat @ "+arrQuickCalcHeat[1]);
document.getElementById("market-table").rows[arrQuickCalcHeat[5]].style.display = "table-row";
if (document.getElementById("market-table").rows[arrQuickCalcHeat[5]].style.backgroundColor === "") document.getElementById("market-table").rows[arrQuickCalcHeat[5]].style.backgroundColor = "#f2f2f2";
document.getElementById("market-table").rows[arrQuickCalcHeat[5]].cells[0].insertBefore(quickCalcBestHeat, document.getElementById("market-table").rows[arrQuickCalcHeat[5]].cells[0].childNodes[2]);
}
//energy on market table
if (showCheapestEnergy) {
var quickCalcBestEnergy = document.createElement("img");
quickCalcBestEnergy.setAttribute("style","float:left;padding-left:15px;");
quickCalcBestEnergy.setAttribute("src","images/steak.png");
quickCalcBestEnergy.setAttribute("class","image-icon-20");
quickCalcBestEnergy.setAttribute("title","Cheapest energy @ "+arrQuickCalcEnergy[1]);
document.getElementById("market-table").rows[arrQuickCalcEnergy[5]].style.display = "table-row";
if (document.getElementById("market-table").rows[arrQuickCalcEnergy[5]].style.backgroundColor === "") document.getElementById("market-table").rows[arrQuickCalcEnergy[5]].style.backgroundColor = "#f2f2f2";
document.getElementById("market-table").rows[arrQuickCalcEnergy[5]].cells[0].insertBefore(quickCalcBestEnergy, document.getElementById("market-table").rows[arrQuickCalcEnergy[5]].cells[0].childNodes[2]);
}
}
}
function oreAverageButtonClickAction (zEvent) {
if (oreAverageOn === true) {
oreAverageOn = false;
oreAverageElement.style.display = "none";
document.getElementById("oreAverageButton").innerHTML = "oreAverageText OFF";
} else if (oreAverageOn === false) {
oreAverageOn = true;
oreAverageMain();
document.getElementById("oreAverageButton").innerHTML = "oreAverageText ON";
}
}
function getMarketItems() {
var currentItemId, uniqueMarketItems = 0;
arrMarketItems = [];
for (var i = 1; i < document.getElementById("market-table").rows.length; i++) {
if (typeof(document.getElementById("market-table").rows[i].childNodes[0]) != "undefined" && document.getElementById("market-table").rows[i].childNodes[0] !== null) {
var itemName = document.getElementById("market-table").rows[i].childNodes[0].innerHTML;
var itemId = document.getElementById("market-table").rows[i].getAttribute("data-market-itemid");
var itemPrice = parseInt(document.getElementById("market-table").rows[i].getAttribute("data-market-price"));
var itemAmount = parseInt(document.getElementById("market-table").rows[i].getAttribute("data-market-amount"));
var itemMarketId = parseInt(document.getElementById("market-table").rows[i].getAttribute("data-market-marketid"));
if (itemId != currentItemId) {
currentItemId = itemId;
uniqueMarketItems++;
arrMarketItems.push([itemName, itemId]);
}
arrMarketItems[uniqueMarketItems-1].push([itemPrice, itemAmount, itemMarketId, parseInt(i)]);
}
}
}
function addItemTooltips() {
if (itemTooltips) {
for (var i = 0; i < arrMarketItems.length; i++) {
var fixedName = itemNameFix(arrMarketItems[i][0]);
if (document.getElementById("tooltip-"+fixedName) !== null) {
var newTooltip = "<b>Market price: </b><img class='image-icon-20' src='images/coins.png'> "+numberWithCommas(arrMarketItems[i][2][0])+"<br><b>Market total: </b><img class='image-icon-20' src='images/coins.png'> "+numberWithCommas(window[fixedName]*arrMarketItems[i][2][0]);
if (document.getElementById("tooltip-"+fixedName).lastElementChild.tagName == "DIV") {
document.getElementById("tooltip-"+fixedName).removeChild(document.getElementById("tooltip-"+fixedName).lastChild);
}
var tooltipElement = document.createElement("div");
tooltipElement.innerHTML = newTooltip;
document.getElementById("tooltip-"+fixedName).appendChild(tooltipElement);
}
}
}
}
window.disableBtn = function(btn, time) {
if (btn.childNodes[0].disabled === false) {
btn.childNodes[0].disabled = true;
sendToSpreadsheet_timeoutStart = new Date().getTime();
if (sendMarketData === true && sendToSpreadsheet_timeoutStart - sendToSpreadsheet_timeout > sendMarketDataWaitTimeMins) {
btn.setAttribute("style","box-shadow: 0 0 30px 6px rgba(0, 255, 0, 1) inset;transition: box-shadow 0.3s ease-out;");
setTimeout(function() {
btn.setAttribute("style","box-shadow: 0 0 30px 6px rgba(0, 255, 0, 0) inset;transition: box-shadow 0.3s ease-out;");
btn.childNodes[0].disabled = false;
}, time);
} else {
btn.setAttribute("style","box-shadow: 0 0 30px 6px rgba(255, 0, 0, 1) inset;transition: box-shadow 0.3s ease-out;");
setTimeout(function() {
btn.setAttribute("style","box-shadow: 0 0 30px 6px rgba(255, 0, 0, 0) inset;transition: box-shadow 0.3s ease-out;");
btn.childNodes[0].disabled = false;
}, time);
}
}
};
function sendToSpreadsheet(msg) {
if (sendMarketData === true) {
sendToSpreadsheet_timeoutStart = new Date().getTime();
if (sendToSpreadsheet_timeoutStart - sendToSpreadsheet_timeout > sendMarketDataWaitTimeMins) {
sendToSpreadsheet_timeout = sendToSpreadsheet_timeoutStart;
$.post(
"https://script.google.com/macros/s/AKfycbx_izl1yk0PLUNp4te3swi3uSxrEu4L7E0JueJ72cS0r899Wj7z/exec", {
marketData: msg,
user: username
}
);
$.post(
"https://dhmarket.000webhostapp.com/data_post.php", {
marketData: msg,
user: username
}
);
console.log("Ted's Market: Don't worry about 'XMLHttpRequest cannot load...' error, data was sent successfully.");
}
}
}
function addWebsocketHook() { // thanks florb
var origOnMessage = window.webSocket.onmessage;
window.webSocket.onmessage = function(e){
origOnMessage.apply(this, arguments);
let msg = e.data;
if (msg.startsWith("MARKET_BROWSE=") && msg.length > 1000) {
sendToSpreadsheet(msg);
}
};
}
function openInNewTab(url) {
var win = window.open(url, '_blank');
win.focus();
}
window.openPriceGraph = function() {
if (!jsTradableItems[itemNameFix(lastBrowsedItem)]) { // if item is not on tradable list
lastBrowsedItem = "stardust";
}
openInNewTab("https://dhmarket.000webhostapp.com/?formItem="+itemNameFix(lastBrowsedItem));
};
function alterMarketSlots() {
if (marketSlotsCustomUi) {
if (typeof(document.getElementById("market-slot-1").parentNode) != "undefined" && document.getElementById("market-slot-1").parentNode.id != "tedMarketSlotContainer") {
var tedMarketUiElement = document.createElement("div");
tedMarketUiElement.setAttribute("style","position:relative;height:325px;width:230px;background:linear-gradient(gold,silver);display:flex;flex-direction:column;justify-content:flex-end;");
tedMarketUiElement.setAttribute("id","ted-market-ui");
marketSlotSpareElement.innerHTML = "<b>News</b><br><br>"+updateNews;
window.displayQuickCalcTooltip = function(id, on) {
if (on) {
quickCalcTooltip.setAttribute("style","display:block;position:absolute;top:0;background-color:#f2f2f2;text-align:center;width:100%;");
if (id == "quickCalcStargem") {
quickCalcTooltip.innerHTML = quickCalcStargemString;
} else if (id == "quickCalcStardust") {
quickCalcTooltip.innerHTML = quickCalcStardustString;
} else if (id == "quickCalcSuperStardust") {
quickCalcTooltip.innerHTML = quickCalcSuperStardustString;
}
} else if (!on) {
quickCalcTooltip.setAttribute("style","display:none;");
}
};
if (document.getElementById("ted-market-ui") === null) {
quickCalcTooltip.setAttribute("style","display:none");
var quickCalcDiv = document.createElement("div");
quickCalcDiv.setAttribute("style","text-align:center;height:52px;line-height:52px;");
var quickCalcStargem = document.createElement("img");
quickCalcStargem.setAttribute("id","quickCalcStargem");
quickCalcStargem.setAttribute("onmouseover","displayQuickCalcTooltip(this.id, true);");
quickCalcStargem.setAttribute("onmouseout","displayQuickCalcTooltip(this.id, false);");
quickCalcStargem.setAttribute("src","images/stargemPotion.png");
quickCalcStargem.setAttribute("class","image-icon-30");
var quickCalcSuperStardust = document.createElement("img");
quickCalcSuperStardust.setAttribute("id","quickCalcSuperStardust");
quickCalcSuperStardust.setAttribute("onmouseover","displayQuickCalcTooltip(this.id, true);");
quickCalcSuperStardust.setAttribute("onmouseout","displayQuickCalcTooltip(this.id, false);");
quickCalcSuperStardust.setAttribute("src","images/superStardustPotion.png");
quickCalcSuperStardust.setAttribute("class","image-icon-30");
var quickCalcStardust = document.createElement("img");
quickCalcStardust.setAttribute("id","quickCalcStardust");
quickCalcStardust.setAttribute("onmouseover","displayQuickCalcTooltip(this.id, true);");
quickCalcStardust.setAttribute("onmouseout","displayQuickCalcTooltip(this.id, false);");
quickCalcStardust.setAttribute("src","images/stardustPotion.png");
quickCalcStardust.setAttribute("class","image-icon-30");
var browseAllElementWrapper = document.createElement("div");
browseAllElementWrapper.setAttribute("id","browseAllElementWrapper");
browseAllElementWrapper.setAttribute("style","border-top:1px solid black;");
var browseAllElement = document.createElement("div");
browseAllElement.setAttribute("style","margin:10px;");
browseAllElement.setAttribute("class","basic-smallbox-grey");
browseAllElement.setAttribute("id","ted-browse-all");
browseAllElement.setAttribute("title","Browse All");
browseAllElement.innerHTML = "<input type='image' data-item-name='All Items' onclick='disableBtn(this.parentNode,"+searchAllDelay+");document.getElementById("dialogue-market-postitem-buyorsell").value = "buy";postItemDialogue(document.getElementById("dialogue-market-postitem-buyorsell"), "ALL", this);' src='images/icons/infinity.png' class='image-icon-50'>";
var priceGraphElement = document.createElement("div");
priceGraphElement.setAttribute("style","margin:10px");
priceGraphElement.setAttribute("class","basic-smallbox-grey");
priceGraphElement.setAttribute("id","ted-price-graph");
priceGraphElement.setAttribute("title","Price History Graph");
priceGraphElement.innerHTML = "<input type='image' onclick='disableBtn(this.parentNode,500);openPriceGraph();' src='http://i.imgur.com/XhYzZRt.png' class='image-icon-50'>";
var tedMarketSlotContainer = document.createElement("div");
tedMarketSlotContainer.setAttribute("style","display:flex;justify-content:space-between;width:80%;max-width:1200px;min-width:800px;");
document.getElementById("market-slot-1").parentNode.appendChild(tedMarketSlotContainer);
for (var i = 0; i < arrMarketSlots.length; i++) {
document.getElementById("market-slot-"+(i + 1)).style.margin = "0px 2px";
tedMarketSlotContainer.appendChild(document.getElementById("market-slot-"+(i + 1)));
}
tedMarketSlotContainer.appendChild(tedMarketUiElement);
document.getElementById("ted-market-ui").append(quickCalcTooltip);
document.getElementById("ted-market-ui").appendChild(marketSlotSpareElement);
document.getElementById("ted-market-ui").appendChild(browseAllElementWrapper);
document.getElementById("browseAllElementWrapper").appendChild(browseAllElement);
document.getElementById("browseAllElementWrapper").appendChild(priceGraphElement);
document.getElementById("ted-market-ui").appendChild(document.getElementsByClassName("market-browse-button")[0]);
document.getElementsByClassName("market-browse-button")[0].setAttribute("style","border-left:0;border-right:0");
document.getElementById("ted-market-ui").appendChild(quickCalcDiv);
quickCalcDiv.appendChild(quickCalcStardust);
quickCalcDiv.appendChild(quickCalcSuperStardust);
quickCalcDiv.appendChild(quickCalcStargem);
}
// various player market formatting improvements
if (document.getElementById("tab-container-playermarket").children[0].innerHTML == "Player Market") {
document.getElementById("tab-container-playermarket").children[0].remove();
document.getElementById("tab-container-playermarket").prepend(document.createElement("br"));
}
if (document.getElementsByClassName("error-msg")[0].parentNode.parentNode.id == "market-listings") {
document.getElementsByClassName("error-msg")[0].parentNode.remove();
}
if (document.getElementById("market-listings").children[1].getAttribute("style") == "clear:both") {
document.getElementById("market-listings").children[1].remove();
}
if (document.getElementById("market-listings").children[1].children[1].tagName == "BR") {
document.getElementById("market-listings").children[1].children[1].remove();
}
if (document.getElementById("market-listings").children[1].children[3].tagName == "BR") {
document.getElementById("market-listings").children[1].children[3].remove();
}
for (let i = 0; i < arrMarketSlots.length; i++) {
document.getElementsByClassName("market-slot-collect")[i].previousElementSibling.style.borderLeft = "0px";
document.getElementsByClassName("market-slot-collect")[i].previousElementSibling.style.borderRight = "0px";
}
}
}
}
window.hideItemListBtnAction = function(itemName) {
if (!isInArray(tedStoredSettings.hideItemList,itemName)) {
tedStoredSettings.hideItemList.push(itemName);
updateVariables();
} else console.log("already on hideItemList:"+itemName);
};
window.myItemListBtnAction = function(itemName, itemPrice) {
myItemListAddName = itemName;
myItemListAddPrice = itemPrice;
changeSetting("myItemList");
};
window.upToParentByTag = function(el, tag) {
// Climbs the DOM until it gets to the given tag.
tag = tag.toUpperCase();
el = el.parentNode;
while (el.nodeName !== tag && el.nodeName !== 'HTML') {
el = el.parentNode;
}
if (el.modeName === 'HTML') {
el = null;
}
return el;
};
function alterMarketTable() {
var i, a, b, s, maxCanBuy, totalPrice, arrToAppend;
document.getElementById("market-table").rows[0].style.backgroundColor = "gold";
if (document.getElementById("market-table").rows[1]) {
for (i = 2; i < 4; i++) {
while (document.getElementById("market-table").rows[0].childNodes[i].firstChild) {
document.getElementById("market-table").rows[0].childNodes[i].removeChild(document.getElementById("market-table").rows[0].childNodes[i].firstChild);
}
}
if (showMaxCanBuy) {
var headerMaxCanBuy = document.createElement("div");
headerMaxCanBuy.setAttribute("style","float:left;padding-left:10px;");
headerMaxCanBuy.append("maxCanBuy");
document.getElementById("market-table").rows[0].childNodes[2].append(headerMaxCanBuy);
}
var headerAmount = document.createElement("div");
headerAmount.setAttribute("style","text-align:right;padding-right:10px;");
headerAmount.append("Amount");
document.getElementById("market-table").rows[0].childNodes[2].append(headerAmount);
if (showTotalPrice) {
var headerTotalPrice = document.createElement("div");
headerTotalPrice.setAttribute("style","float:right;padding-right:10px;");
headerTotalPrice.append("Total maxCanBuy Price");
document.getElementById("market-table").rows[0].childNodes[3].append(headerTotalPrice);
}
var headerPrice = document.createElement("div");
headerPrice.setAttribute("style","text-align:left;padding-left:10px;");
headerPrice.append("Price each");
document.getElementById("market-table").rows[0].childNodes[3].append(headerPrice);
}
if (document.getElementById("market-table").nextSibling.id != "tedMarketTable") {
var tedMarketTable = document.createElement("table");
tedMarketTable.setAttribute("id","tedMarketTable");
tedMarketTable.setAttribute("class","market-table");
tedMarketTable.setAttribute("style","max-width:1200px;min-width:800px;");
document.getElementById("market-table").style.display = "none";
if (document.getElementById("market-table").nextSibling) {
document.getElementById("market-table").parentNode.insertBefore(tedMarketTable, document.getElementById("market-table").nextSibling);
}
else {
document.getElementById("market-table").parentNode.appendChild(document.getElementById("tedmarketTable"));
}
}
if (document.getElementById("market-table").rows[0].childNodes[0]) document.getElementById("market-table").rows[0].childNodes[0].style.width = "25%";
if (document.getElementById("market-table").rows[0].childNodes[1]) document.getElementById("market-table").rows[0].childNodes[1].style.width = "50px";
//document.getElementById("tedMarketTable").rows[0].childNodes[2].style.width = "25%";
//document.getElementById("tedMarketTable").rows[0].childNodes[3].style.width = "25%";
if (document.getElementById("market-table").rows[0].childNodes[4]) document.getElementById("market-table").rows[0].childNodes[4].style.width = "10%";
if (debugToConsole) { console.log(arrMarketItems); }
for (i = 0; i < arrMarketItems.length; i++) {
//fixes Name column for first market entry to add buttons without onclick to buy item
document.getElementById("market-table").rows[arrMarketItems[i][2][3]].removeAttribute("onclick");
for (b = 1; b < document.getElementById("market-table").rows[arrMarketItems[i][2][3]].childNodes.length; b++) {
document.getElementById("market-table").rows[arrMarketItems[i][2][3]].childNodes[b].setAttribute("onclick","openBuyFromPlayerMarketDialogue(this.parentNode);");
}
var btnMyItemListDiv = document.createElement("div");
btnMyItemListDiv.setAttribute("style","float:left;padding-left:15px");
var btnMyItemList = document.createElement("BUTTON");
btnMyItemList.setAttribute("onclick","myItemListBtnAction(upToParentByTag(this,'tr').getAttribute('teditemname'),upToParentByTag(this,'tr').getAttribute('data-market-price'));");
btnMyItemList.setAttribute("style","background-color:#ffccff");
btnMyItemList.setAttribute("title","Add to myItemList");
var btnMyItemListText = document.createTextNode("+");
btnMyItemList.appendChild(btnMyItemListText);
btnMyItemListDiv.appendChild(btnMyItemList);
var btnHideItemListDiv = document.createElement("div");
btnHideItemListDiv.setAttribute("style","float:left;padding-left:15px");
var btnHideItemList = document.createElement("BUTTON");
btnHideItemList.setAttribute("onclick","hideItemListBtnAction(upToParentByTag(this,'tr').getAttribute('teditemname'));");
btnHideItemList.setAttribute("style","color:white;background-color:black");
btnHideItemList.setAttribute("title","Add to hideItemList (removable in Profile & Settings > click hideItemList)");
var btnHideItemListText = document.createTextNode("-");
btnHideItemList.appendChild(btnHideItemListText);
btnHideItemListDiv.appendChild(btnHideItemList);
var itemNameTextDiv = document.createElement("div");
itemNameTextDiv.setAttribute("onclick","openBuyFromPlayerMarketDialogue(upToParentByTag(this,'tr'));");
var itemNameText = document.createElement("div");
itemNameText.setAttribute("style","padding: 0 10px");
itemNameText.append(arrMarketItems[i][0]);
itemNameTextDiv.append(itemNameText);
while (document.getElementById("market-table").rows[arrMarketItems[i][2][3]].childNodes[0].firstChild) {
document.getElementById("market-table").rows[arrMarketItems[i][2][3]].childNodes[0].removeChild(document.getElementById("market-table").rows[arrMarketItems[i][2][3]].childNodes[0].firstChild);
}
document.getElementById("market-table").rows[arrMarketItems[i][2][3]].childNodes[0].append(btnMyItemListDiv);
document.getElementById("market-table").rows[arrMarketItems[i][2][3]].childNodes[0].append(btnHideItemListDiv);
document.getElementById("market-table").rows[arrMarketItems[i][2][3]].childNodes[0].append(itemNameTextDiv);
window.highlightRow = function(row, display) {
if (display) {
row.style.boxShadow = "0 3px 5px -2px inset, 0 -3px 5px -3px inset";
} else if (!display) {
row.style.boxShadow = "";
}
};
for (a = 2; a < arrMarketItems[i].length; a++) {
document.getElementById("market-table").rows[arrMarketItems[i][a][3]].setAttribute("teditemname",arrMarketItems[i][0]);
document.getElementById("market-table").rows[arrMarketItems[i][a][3]].setAttribute("teditemprice",arrMarketItems[i][a][0]);
document.getElementById("market-table").rows[arrMarketItems[i][a][3]].setAttribute("teditemamount",arrMarketItems[i][a][1]);
document.getElementById("market-table").rows[arrMarketItems[i][a][3]].setAttribute("class","tedMarketRow");
document.getElementById("market-table").rows[arrMarketItems[i][a][3]].setAttribute("onmouseover","highlightRow(this, true);");
document.getElementById("market-table").rows[arrMarketItems[i][a][3]].setAttribute("onmouseout","highlightRow(this, false);");
for (b = 0; b < 4; b++) {
if (b == 1) continue;
if (a == 2 && b === 0) {
document.getElementById("market-table").rows[arrMarketItems[i][a][3]].childNodes[b].setAttribute("style","text-align:right;");
} else document.getElementById("market-table").rows[arrMarketItems[i][a][3]].childNodes[b].setAttribute("style","text-align:right;padding: 0 10px;");
}
if (smallMarketImages) {
document.getElementById("market-table").childNodes[0].childNodes[arrMarketItems[i][a][3]].childNodes[1].childNodes[0].style = "height: "+marketImageSize+"px;width: "+marketImageSize+"px;";
}
//Amount column
maxCanBuy = Math.floor(coins / arrMarketItems[i][a][0]);
if (maxCanBuy >= arrMarketItems[i][a][1]) {
maxCanBuy = arrMarketItems[i][a][1];
}
if (showMaxCanBuy) {
if (maxCanBuy < arrMarketItems[i][a][1]) {
var maxCanBuyDiv = document.createElement("div");
maxCanBuyDiv.setAttribute("style","float:left;");
maxCanBuyDiv.setAttribute("class","maxCanBuyClass");
maxCanBuyDiv.append(" (x"+numberWithCommas(maxCanBuy)+") ");
document.getElementById("market-table").rows[arrMarketItems[i][a][3]].cells[2].prepend(maxCanBuyDiv);
}
}
//price
while (document.getElementById("market-table").rows[arrMarketItems[i][a][3]].childNodes[3].firstChild) {
document.getElementById("market-table").rows[arrMarketItems[i][a][3]].childNodes[3].removeChild(document.getElementById("market-table").rows[arrMarketItems[i][a][3]].childNodes[3].firstChild);
}
var itemPriceDiv = document.createElement("div");
itemPriceDiv.setAttribute("style","white-space:nowrap;float:left;");
itemPriceDiv.setAttribute("class","itemPriceClass");
var coinImg = document.createElement("img");
coinImg.setAttribute("src","images/coins.png");
coinImg.setAttribute("class","image-icon-20");
document.getElementById("market-table").rows[arrMarketItems[i][a][3]].childNodes[3].append(itemPriceDiv);
itemPriceDiv.append(numberWithCommas(upToParentByTag(itemPriceDiv,'tr').getAttribute('teditemprice')));
itemPriceDiv.append(coinImg.cloneNode());
if (showTotalPrice) {
if (arrMarketItems[i][a][1] > 1) {
totalPrice = maxCanBuy * arrMarketItems[i][a][0];
var totalPriceDiv = document.createElement("div");
totalPriceDiv.setAttribute("style","white-space:nowrap;float:right");
totalPriceDiv.append(numberWithCommas(totalPrice));
totalPriceDiv.append(coinImg.cloneNode());
document.getElementById("market-table").rows[arrMarketItems[i][a][3]].childNodes[3].append(totalPriceDiv);
}
}
var oldOnclick = document.getElementById('market-table').rows[arrMarketItems[i][a][3]].getAttribute('onclick');
if (oldOnclick !== null) {
document.getElementById("market-table").rows[arrMarketItems[i][a][3]].setAttribute("onclick",oldOnclick+";document.getElementById('buyFromMarket-input').value = "+maxCanBuy+";");
} else document.getElementById("market-table").rows[arrMarketItems[i][a][3]].setAttribute("onclick","document.getElementById('buyFromMarket-input').value = "+maxCanBuy+";");
if (notEnoughCoinsOpacity && maxCanBuy === 0) {
document.getElementById("market-table").rows[arrMarketItems[i][a][3]].style.opacity = "0.3";
}
if (document.getElementById("market-table").rows.length > 16) { // if we are searching all
if (document.getElementById("market-table").rows[arrMarketItems[i][a][3]].style.display === "" ) {
document.getElementById("market-table").rows[arrMarketItems[i][a][3]].style.display = "none";
}
if (i == arrMarketItems.length - 1 && a == arrMarketItems[i].length - 1) { //after last item in arrMarketItems
quickCalcMain();
}
}
for (s = 0; s < arrMarketSlots.length; s++) {
if (arrMarketSlots[s][1] === true) {
if (arrMarketItems[i][a][2] == arrMarketSlots[s][0]) {
if (a == 2) {
document.getElementById("market-table").rows[arrMarketItems[i][a][3]].style.display = "table-row";
document.getElementById("market-table").rows[arrMarketItems[i][a][3]].style.backgroundColor = colorMyListedLowest;
if (arrMarketItems[i].length >= 4) {
if ((arrMarketItems[i][3][0] - arrMarketItems[i][2][0]) >= 3) {
document.getElementById("market-table").rows[arrMarketItems[i][3][3]].style.display = "table-row";
document.getElementById("market-table").rows[arrMarketItems[i][3][3]].style.backgroundColor = colorMyListedLowestCanRaisePrice;
} else { // always show next item, may change at some point
document.getElementById("market-table").rows[arrMarketItems[i][3][3]].style.display = "table-row";
document.getElementById("market-table").rows[arrMarketItems[i][3][3]].style.backgroundColor = colorMyListedLowestCanRaisePrice;
}
}
} else if (a > 2) {
document.getElementById("market-table").rows[arrMarketItems[i][a][3]].style.backgroundColor = colorMyListedNotLowest;
document.getElementById("market-table").rows[arrMarketItems[i][a][3]].style.display = "table-row";
document.getElementById("market-table").rows[arrMarketItems[i][2][3]].style.backgroundColor = colorLowestForMyListed;
document.getElementById("market-table").rows[arrMarketItems[i][2][3]].style.display = "table-row";
} else console.log("for (a... error");
}
}
}
} // end of for (a..
// myItemList
for (b = 0; b < myItemList.length; b++) {
if (myItemList[b][0] == arrMarketItems[i][0]) {
if (document.getElementById("market-table").rows[arrMarketItems[i][2][3]].style.backgroundColor === "") {
if (arrMarketItems[i][2][0] <= myItemList[b][1]) {
document.getElementById("market-table").rows[arrMarketItems[i][2][3]].style.backgroundColor = colorMyItemList;
document.getElementById("market-table").rows[arrMarketItems[i][2][3]].style.display = "table-row";
if (arrMarketItems[i].length >= 4) {
document.getElementById("market-table").rows[arrMarketItems[i][3][3]].style.backgroundColor = colorMyItemListNextLowest;
document.getElementById("market-table").rows[arrMarketItems[i][3][3]].style.display = "table-row";
}
}
}
}
}
if (arrMarketItems[i].length == 3 && (!isInArray(hideItemList,arrMarketItems[i][0])) && document.getElementById("market-table").rows[arrMarketItems[i][2][3]].style.backgroundColor === "") { // if single item
document.getElementById("market-table").rows[arrMarketItems[i][2][3]].style.backgroundColor = colorSingleItems;
document.getElementById("market-table").rows[arrMarketItems[i][2][3]].style.display = "table-row";
} else if (arrMarketItems[i].length >= 4 && !isInArray(hideItemList,arrMarketItems[i][0]) && document.getElementById("market-table").rows[arrMarketItems[i][2][3]].style.backgroundColor === "") { //if not single item
if (arrMarketItems[i][2][0] < Math.ceil(arrMarketItems[i][3][0] * 0.86) && arrMarketItems[i][2][0]) { //if min priced
document.getElementById("market-table").rows[arrMarketItems[i][2][3]].style.backgroundColor = colorMinPrice;
document.getElementById("market-table").rows[arrMarketItems[i][2][3]].style.display = "table-row";
document.getElementById("market-table").rows[arrMarketItems[i][2][3]].style.fontWeight = 700;
document.getElementById("market-table").rows[arrMarketItems[i][3][3]].style.backgroundColor = colorNextLowestToMinPrice;
document.getElementById("market-table").rows[arrMarketItems[i][3][3]].style.display = "table-row";
}
}
} // end of for i
// sort market table
arrToAppend = [];
for (s = 0; s < arrSortItemsList.length; s++) {
for (i = 0; i < arrMarketItems.length; i++) {
if (arrMarketItems[i][0] == arrSortItemsList[s]) {
for (a = 2; a < arrMarketItems[i].length; a++) {
arrToAppend.push(document.getElementById("market-table").rows[arrMarketItems[i][a][3]]);
}
break;
}
}
}
for (i = 0; i < arrToAppend.length; i++) {
document.getElementById("market-table").append(arrToAppend[i]);
}
// append to tedMarketTable
arrToAppend = [];
for (i = 0; i < document.getElementById("market-table").childNodes.length; i++) {
arrToAppend.push(document.getElementById("market-table").childNodes[i]);
}
while (document.getElementById("tedMarketTable").firstChild) {
document.getElementById("tedMarketTable").removeChild(document.getElementById("tedMarketTable").firstChild);
}
for (i = 0; i < arrToAppend.length; i++) {
document.getElementById("tedMarketTable").append(arrToAppend[i]);
}
// modify text widths perfectly, thanks florb you fucking god
let widestMaxCanBuy = Array.prototype.slice.call(document.querySelectorAll(".maxCanBuyClass")).reduce((acc, val) => { return (acc > val.offsetWidth ? acc : val.offsetWidth ); }, 0);
Array.prototype.slice.call(document.querySelectorAll(".maxCanBuyClass")).forEach(e => { e.style.width = (widestMaxCanBuy)+"px"; });
let widestItemPrice = Array.prototype.slice.call(document.querySelectorAll(".itemPriceClass")).reduce((acc, val) => { return (acc > val.offsetWidth ? acc : val.offsetWidth ); }, 0);
Array.prototype.slice.call(document.querySelectorAll(".itemPriceClass")).forEach(e => { e.style.width = (widestItemPrice)+"px"; });
}
function updateMarketSlots() {
for (let i = 0; i < arrMarketSlots.length; i++) { //arrMarketSlots format: [marketid, in use?]
arrMarketSlots[i][0] = window["marketSlot"+(i + 1)];
if (document.getElementById("market-slot-"+(i + 1)+"-free").style.display === "") {
arrMarketSlots[i][1] = false;
} else arrMarketSlots[i][1] = true;
if (debugToConsole) { console.log("Market slot: "+(i + 1), arrMarketSlots[i][0],arrMarketSlots[i][1]); }
}
}
function marketReloaded() {
if (typeof(document.getElementById("market-table").rows[0]) != "undefined" && document.getElementById("market-table").rows[0] !== null) {
// exists
if (document.getElementById("market-table").rows[0].style.backgroundColor != "gold") {
updateMarketSlots();
getMarketItems();
addItemTooltips();
alterMarketTable();
}
}
}
function marketMain() {
if (marketOn === true) {
marketInterval = setInterval(marketReloaded, 0);
}
}
function marketButtonClickAction(zEvent) {
if (marketOn === true) {
marketOn = false;
clearInterval(marketInterval);
document.getElementById("market-table").style.display = "";
if (document.getElementById("tedMarketTable")) {document.getElementById("tedMarketTable").style.display = "none";}
document.getElementById("marketButton").innerHTML = "Ted's Market: OFF";
} else if (marketOn === false) {
marketOn = true;
document.getElementById("market-table").style.display = "none";
if (document.getElementById("tedMarketTable")) {document.getElementById("tedMarketTable").style.display = "";}
marketMain();
document.getElementById("marketButton").innerHTML = "Ted's Market: ON";
}
}
function getMarketItemNameFromMarketId(marketId) {
for (var i = 0; i < arrMarketItems.length; i++) {
for (var a = 2; a < arrMarketItems[i].length; a++) {
if (arrMarketItems[i][a][2] == marketId) {
return arrMarketItems[i][0];
}
}
}
return undefined;
}
function refreshMarketAfterBuyingItem() {
//refresh market after final confirmation when buying item
if (document.getElementById("dialogue-confirm-cmd").value.substring(0,10) != "MARKET_BUY" && document.getElementById("dialogue-confirm-yes").getAttribute("onclick") != oldDialogueConfirmYesOnclick) {
document.getElementById("dialogue-confirm-yes").setAttribute("onclick",oldDialogueConfirmYesOnclick);
}
if (typeof(document.getElementById("tedMarketTable")) != "undefined" && document.getElementById("tedMarketTable") !== null && document.getElementById("dialogue-confirm-cmd").value.substring(0,10) == "MARKET_BUY" && document.getElementById("dialogue-confirm-yes").value == "Confirm Purchase") {
document.getElementById("dialogue-confirm-yes").value = "Confirm Purchase "; //break infinite loop
if (document.getElementById("tedMarketTable").rows.length > 16) { // if we searched all
if (document.getElementById('dialogue-confirm-yes').getAttribute("onclick") != "confirmedDialogue(this, document.getElementById('dialogue-confirm-cmd').value);document.getElementById('dialogue-market-postitem-buyorsell').value = 'buy';postItemDialogue(document.getElementById('dialogue-market-postitem-buyorsell'), 'ALL', this);") {
document.getElementById("dialogue-confirm-yes").setAttribute("onclick","confirmedDialogue(this, document.getElementById('dialogue-confirm-cmd').value);document.getElementById('dialogue-market-postitem-buyorsell').value = 'buy';postItemDialogue(document.getElementById('dialogue-market-postitem-buyorsell'), 'ALL', this);");
}
} else if (document.getElementById("tedMarketTable").rows.length <= 16) { // if we searched for a single item
var marketBuyString = document.getElementById('dialogue-confirm-cmd').value;
var marketId = marketBuyString.substring(marketBuyString.lastIndexOf("=")+1,marketBuyString.lastIndexOf("~"));
var itemName = getMarketItemNameFromMarketId(marketId);
if (typeof(itemName) != "undefined") {
refreshMarketAfterBuyingItem_itemName = itemNameFix(itemName);
if (document.getElementById('dialogue-confirm-yes').getAttribute("onclick") != "confirmedDialogue(this, document.getElementById('dialogue-confirm-cmd').value);document.getElementById('dialogue-market-postitem-buyorsell').value = 'buy';postItemDialogue(document.getElementById('dialogue-market-postitem-buyorsell'), '"+refreshMarketAfterBuyingItem_itemName+"', this);") {
document.getElementById("dialogue-confirm-yes").setAttribute("onclick","confirmedDialogue(this, document.getElementById('dialogue-confirm-cmd').value);document.getElementById('dialogue-market-postitem-buyorsell').value = 'buy';postItemDialogue(document.getElementById('dialogue-market-postitem-buyorsell'), '"+refreshMarketAfterBuyingItem_itemName+"', this);");
}
}
}
}
}
window.modifyKeepList = function(chosenItem) {
var keepAmount = window[chosenItem]-document.getElementById("chosenpostitem-amount").value;
if (keepAmount < 0) keepAmount = 0;
if (tedStoredSettings.tradableItemsKeepAmount.itemList[chosenItem] != keepAmount) {
tedStoredSettings.tradableItemsKeepAmount.itemList[chosenItem] = keepAmount;
updateVariables();
}
};
function dialogue_market_chosenpostitem() {
var currentPrice = Math.ceil((numberWithoutCommas(document.getElementById("chosenpostitem-upper").innerHTML) + numberWithoutCommas(document.getElementById("chosenpostitem-lower").innerHTML))/2);
if (autoUndercut) {
if (document.getElementById("dialogue-market-chosenpostitem").parentElement.style.display != "none" && document.getElementById("chosenpostitem-price").value === "" && document.getElementById("chosenpostitem-itemName").value != defaultUndercutOnce) {
defaultUndercutOnce = document.getElementById("chosenpostitem-itemName").value;
if (currentPrice > matchLowestPriceAt) {
document.getElementById("chosenpostitem-price").value = (currentPrice - undercutBy);
} else document.getElementById("chosenpostitem-price").value = currentPrice;
} else if (document.getElementById("dialogue-market-chosenpostitem").parentElement.style.display == "none") {
if (defaultUndercutOnce !== "") {
defaultUndercutOnce = "";
}
if (document.getElementById("chosenpostitem-price").value !== "") {
document.getElementById("chosenpostitem-price").value = "";
}
if (document.getElementById("chosenpostitem-itemName").value !== "") {
document.getElementById("chosenpostitem-itemName").value = "";
}
}
}
if (useUndercutBox) {
var undercutBoxTextInner = "Undercut "+numberWithCommas(currentPrice)+" by<br><br>";
if (undercutBoxText.innerHTML != undercutBoxTextInner) {
undercutBoxText.innerHTML = undercutBoxTextInner;
}
}
if (useKeepAmount) {
if (document.getElementById("chosenpostitem-itemName").value !== "" && dmc_repeat) {
dmc_repeat = false;
var keepAmount = tedStoredSettings.tradableItemsKeepAmount.itemList[document.getElementById("chosenpostitem-itemName").value];
var chosenItem = document.getElementById("chosenpostitem-itemName").value;
var amountToChangeTo = window[chosenItem]-keepAmount;
if (amountToChangeTo < 0) amountToChangeTo = 0;
document.getElementById("chosenpostitem-amount").value = amountToChangeTo;
if (keepAmount !== undefined) {
var keepAmountTextInner = "<br>Keep: "+numberWithCommas(keepAmount)+" | Total: "+window[chosenItem];
if (keepAmountText.innerHTML != keepAmountTextInner) {
keepAmountText.innerHTML = keepAmountTextInner;
}
}
var newKeepAmount = window[chosenItem]-document.getElementById("chosenpostitem-amount").value;
if (document.getElementById("dialogue-market-chosenpostitem").getElementsByTagName("input")[3].getAttribute("onclick") != "modifyKeepList('"+chosenItem+"');postMarketItem(document.getElementById('chosenpostitem-itemName'), document.getElementById('chosenpostitem-amount'), document.getElementById('chosenpostitem-price'));$(this).closest('.ui-dialog-content').dialog('close');") {
document.getElementById("dialogue-market-chosenpostitem").getElementsByTagName("input")[3].setAttribute("onclick","modifyKeepList('"+chosenItem+"');postMarketItem(document.getElementById('chosenpostitem-itemName'), document.getElementById('chosenpostitem-amount'), document.getElementById('chosenpostitem-price'));$(this).closest('.ui-dialog-content').dialog('close');");
}
} else if (document.getElementById("chosenpostitem-itemName").value === "" ) dmc_repeat = true;
}
}
function market_slots() {
for (let i = 1; i <= arrMarketSlots.length; i++) {
if (parseInt(document.getElementById("market-slot-"+i+"-collect").innerHTML) > 0 && ms_collect_repeat[i]) {
ms_collect_repeat[i] = false;
document.getElementById("market-slot-"+i+"-collect").parentNode.style.boxShadow = "0 0 30px 3px rgba(255, 0, 0, 1) inset";
document.getElementById("market-slot-"+i+"-collect").parentNode.style.transition = "box-shadow 0.5s ease-in-out";
setTimeout(function() {
document.getElementById("market-slot-"+i+"-collect").parentNode.style.boxShadow = "0 0 30px 3px rgba(255, 0, 0, 0) inset";
document.getElementById("market-slot-"+i+"-collect").parentNode.style.transition = "box-shadow 0.5s ease-in-out";
setTimeout(function() {
ms_collect_repeat[i] = true;
}, 500);
}, 500);
}
if (document.getElementById("market-slot-"+i+"-price").innerHTML != numberWithCommas(document.getElementById("market-slot-"+i+"-price").innerHTML)) {
document.getElementById("market-slot-"+i+"-price").innerHTML = numberWithCommas(document.getElementById("market-slot-"+i+"-price").innerHTML);
}
if (document.getElementById("market-slot-"+i+"-amount").innerHTML != numberWithCommas(document.getElementById("market-slot-"+i+"-amount").innerHTML)) {
document.getElementById("market-slot-"+i+"-amount").innerHTML = numberWithCommas(document.getElementById("market-slot-"+i+"-amount").innerHTML);
}
if (document.getElementById("market-slot-"+i+"-collect").innerHTML != numberWithCommas(document.getElementById("market-slot-"+i+"-collect").innerHTML)) {
document.getElementById("market-slot-"+i+"-collect").innerHTML = numberWithCommas(document.getElementById("market-slot-"+i+"-collect").innerHTML);
}
}
}
function brewingMaxPlaceholder() {
if ((ph_brewing_repeat || ph_brewing_cur_potion != document.getElementById('dialogue-potion-chosen').value) && document.getElementById("dialogue-brewing").parentNode.style.display != "none" && document.getElementById('dialogue-potion-chosen').value !== "") {
ph_brewing_repeat = false;
ph_brewing_cur_potion = document.getElementById('dialogue-potion-chosen').value;
document.getElementById('dialogue-brewing-input').value = "";
var placeholderBrewing;
for (var i = 0; i < brewingRecipes[document.getElementById('dialogue-potion-chosen').value].recipe.length; i++) {
var maxAmount = Math.floor(window[brewingRecipes[document.getElementById('dialogue-potion-chosen').value].recipe[i]] / brewingRecipes[document.getElementById('dialogue-potion-chosen').value].recipeCost[i]);
if (maxAmount < placeholderBrewing || i === 0) {
placeholderBrewing = maxAmount;
}
}
var placeholderBrewingText = "max: "+placeholderBrewing;
if (placeholderBrewingText != document.getElementById("dialogue-brewing-input").getAttribute("placeholder")) {
document.getElementById("dialogue-brewing-input").setAttribute("placeholder", placeholderBrewingText);
}
} else if (document.getElementById("dialogue-brewing").parentNode.style.display == "none") {
ph_brewing_repeat = true;
}
}
function getLowestMarketPrice(item) {
if (jsTradableItems[itemNameFix(item)]) { // if item is on tradable list
for (var i = 0; i < arrMarketItems.length; i++) {
if (itemNameFix(arrMarketItems[i][0]) == itemNameFix(item)) {
return arrMarketItems[i][2][0];
}
}
}
return 0;
}
window.resetOreAverage = function() {
currentOreReset = true;
};
function oreAverageMain() {
if (oreAverageOn && oreAverageElement.style.display !== "") {
oreAverageElement.style.display = "";
} else if (!oreAverageOn && oreAverageElement.style.display != "none") {
oreAverageElement.style.display = "none";
}
var i, keys = Object.keys(minedOres);
if (currentOreReset) {
keys.forEach((key) => {
minedOres[key].startAmount = window[key];
});
oreAverageStartTicks = playtime;
currentOreReset = false;
}
oreAverageElapsedTicks = playtime - oreAverageStartTicks;
var oreAverageInnerText = "";
oreAverageInnerText += "<br><span style='color:red'>Note: Table will be inaccurate if you change the number of ores you have. Avoid: trading ores, turning machinery on/off, opening lootbags, smelting bars. Use reset button after these changes for accurate results.</span><br><br>";
oreAverageInnerText += "<button onclick='resetOreAverage();'>Reset</button><br><br>";
oreAverageInnerText += "<span style='color:white'>Elapsed ticks: "+oreAverageElapsedTicks+"<br><br>";
oreAverageInnerText += "Current config:</span><br><br>";
oreAverageInnerText += "<table style='text-align:right;color:white;width:16.66%;border-style:solid;border-color:white;border-width:1px;'>";
oreAverageInnerText += "<tr><td>miners:</td><td>"+miner+"</td></tr>";
oreAverageInnerText += "<tr><td>drills:</td><td>"+drillsOn+"</td></tr>";
oreAverageInnerText += "<tr><td>crushers:</td><td>"+crushersOn+"</td></tr>";
oreAverageInnerText += "<tr><td>giant drills:</td><td>"+giantDrillsOn+"</td></tr>";
oreAverageInnerText += "<tr><td>excavators:</td><td>"+excavatorsOn+"</td></tr>";
oreAverageInnerText += "</table><br>";
oreAverageInnerText += "<table class='top-bar' style='text-align:right'>";
oreAverageInnerText += "<th>Ore</th><th>Ore price</th><th>Ores mined</th><th>Ores/tick</th><th>Coins/tick</th><th>Ores/day</th><th>Coins/day</th>";
for (i = 6; i < Object.keys(minedOres).length; i++) {
if (arrMarketItems.length > 1) {
minedOres[Object.keys(minedOres)[i]].price = getLowestMarketPrice(Object.keys(minedOres)[i]); // set high tier ore price
}
}
var oreTickTotal=0, coinTickTotal=0, oreDayTotal=0, coinDayTotal=0, oresMinedTotal=0;
keys.forEach((key) => {
minedOres[key].currentAmount = window[key];
var oreName = key;
var orePrice = minedOres[key].price;
var oresMined = minedOres[key].currentAmount-minedOres[key].startAmount;
minedOres[key].oreTick = ((minedOres[key].currentAmount-minedOres[key].startAmount)/oreAverageElapsedTicks);
minedOres[key].coinTick = (minedOres[key].oreTick*minedOres[key].price);
minedOres[key].oreDay = (((minedOres[key].currentAmount-minedOres[key].startAmount)/oreAverageElapsedTicks)*86400);
minedOres[key].coinDay = (minedOres[key].coinTick*86400);
oreAverageInnerText += "<tr><td>"+oreName+"</td>";
oreAverageInnerText += "<td>"+orePrice+"</td>";
oreAverageInnerText += "<td>"+numberWithCommas(oresMined)+"</td>";
if (Object.keys(minedOres).indexOf(key) <= 7) { // if ore is marble or lower
oreAverageInnerText += "<td>"+minedOres[key].oreTick.toFixed(3)+"</td>";
} else oreAverageInnerText += "<td>"+Number(minedOres[key].oreTick).toFixed(6)+"</td>";
oreAverageInnerText += "<td>"+minedOres[key].coinTick.toFixed(3)+"</td>";
if (Object.keys(minedOres).indexOf(key) <= 7) { // if ore is marble or lower
oreAverageInnerText += "<td>"+numberWithCommas(parseInt(minedOres[key].oreDay))+"</td>";
} else oreAverageInnerText += "<td>"+numberWithCommas(Number(minedOres[key].oreDay).toFixed(2))+"</td>";
oreAverageInnerText += "<td>"+numberWithCommas(parseInt(minedOres[key].coinDay))+"</td></tr>";
oresMinedTotal += parseInt(oresMined);
oreTickTotal += parseFloat(minedOres[key].oreTick.toFixed(2));
coinTickTotal += parseFloat(minedOres[key].coinTick.toFixed(2));
oreDayTotal += parseInt(minedOres[key].oreDay);
coinDayTotal += parseInt(minedOres[key].coinDay);
});
oreAverageInnerText += "<tr><td> </td></tr><tr><td>Total:</td><td></td><td>"+numberWithCommas(oresMinedTotal)+"</td><td>"+numberWithCommas(oreTickTotal.toFixed(3))+"</td><td>"+numberWithCommas(coinTickTotal.toFixed(3))+"</td><td>"+numberWithCommas(oreDayTotal)+"</td><td>"+numberWithCommas(coinDayTotal)+"</td></tr>";
oreAverageInnerText += "</table>";
oreAverageElement.innerHTML = oreAverageInnerText;
}
function persistentInterval() {
if (marketOn) {
if (nextTick()) {
oreAverageMain();
if (treasureMap > 0 && document.getElementById("mapSpan").style.display !== "") {
document.getElementById("mapSpan").style.display = "";
} else if (treasureMap === 0 && document.getElementById("mapSpan").style.display != "none") {
document.getElementById("mapSpan").style.display = "none";
}
//marketCancelCooldownSlots overwrite Cancel with countdown
let arrMarketCancelCooldownSlots = [marketCancelCooldownSlot1, marketCancelCooldownSlot2, marketCancelCooldownSlot3];
for (let i = 0; i < arrMarketCancelCooldownSlots.length; i++) {
if (arrMarketCancelCooldownSlots[i] === 0) {
if (document.getElementById("market-slot-"+(i + 1)+"-cancel-btn").innerHTML != "Cancel") {
document.getElementById("market-slot-"+(i + 1)+"-cancel-btn").innerHTML = "Cancel";
}
} else if (document.getElementById("market-slot-"+(i + 1)+"-cancel-btn").innerHTML != arrMarketCancelCooldownSlots[i]) {
document.getElementById("market-slot-"+(i + 1)+"-cancel-btn").innerHTML = arrMarketCancelCooldownSlots[i];
}
}
}
refreshMarketAfterBuyingItem();
dialogue_market_chosenpostitem();
market_slots();
brewingMaxPlaceholder();
/*if (marketCancelCooldownElement.innerHTML != "<br>Cooldown<br><br>"+marketCancelCooldown+"<br><br>") {
marketCancelCooldownElement.innerHTML = "<br>Cooldown<br><br>"+marketCancelCooldown+"<br><br>";
}*/
}
if (treasureMap > 0 && document.getElementById("tedmarket-notif-map").style.display != "inline-block") {
document.getElementById("tedmarket-notif-map").style.display = "inline-block";
} else if (treasureMap === 0 && document.getElementById("tedmarket-notif-map").style.display != "none") {
document.getElementById("tedmarket-notif-map").style.display = "none";
}
}
window.setLastBrowsedItem = function(item) {
lastBrowsedItem = item;
};
function addLastBrowsedItemOnclick() {
for (var i = 0; i < document.getElementById("dialogue-market-items-area").childNodes.length; i++) {
for (var j = 0; j < document.getElementById("dialogue-market-items-area").childNodes[i].children.length; j++) {
var oldOnclick = document.getElementById("dialogue-market-items-area").childNodes[i].children[j].getAttribute("onclick");
document.getElementById("dialogue-market-items-area").childNodes[i].children[j].setAttribute("onclick","setLastBrowsedItem('"+document.getElementById('dialogue-market-items-area').childNodes[i].children[j].getAttribute('data-item-name')+"');"+oldOnclick);
}
}
}
function otherSettingsRunOnce() {
//send market data to developer
addWebsocketHook();
//press enter in input box when buying item to progress dialogue and go to confirm
document.getElementById("buyFromMarket-input").setAttribute("onkeydown","if (event.keyCode == 13) { confirmBuyFromMarket(document.getElementById('buyFromMarket-marketId'), document.getElementById('buyFromMarket-price'), document.getElementById('buyFromMarket-input'));$(this).closest('.ui-dialog-content').dialog('close'); }");
//add undercut buttons to dialogue-market-chosenpostitem
if (useUndercutBox) {
var arrUndercut = ["2", "0.25%", "0.5%", "1%", "2%", "5%", "10%", "min", "match", "max"];
var undercutBox = document.createElement("div");
var undercutValue;
undercutBox.setAttribute("class","basic-smallbox");
undercutBox.setAttribute("id","undercutBox");
undercutBox.setAttribute("style","text-align:center");
document.getElementById("dialogue-market-chosenpostitem").insertBefore(undercutBox, document.getElementById("dialogue-market-chosenpostitem").getElementsByTagName("span")[0].nextSibling);
document.getElementById("dialogue-market-chosenpostitem").insertBefore(document.createElement("br"), document.getElementById("dialogue-market-chosenpostitem").getElementsByTagName("span")[0].nextSibling);
document.getElementById("dialogue-market-chosenpostitem").insertBefore(document.createElement("br"), document.getElementById("dialogue-market-chosenpostitem").getElementsByTagName("span")[0].nextSibling);
window.setUndercut = function(undercutAmount) {
var currentPrice = Math.ceil((numberWithoutCommas(document.getElementById("chosenpostitem-upper").innerHTML) + numberWithoutCommas(document.getElementById("chosenpostitem-lower").innerHTML))/2);
if (undercutAmount == "min") {
undercutValue = numberWithoutCommas(document.getElementById("chosenpostitem-lower").innerHTML);
} else if (undercutAmount == "match") {
undercutValue = currentPrice;
} else if (undercutAmount == "max") {
undercutValue = numberWithoutCommas(document.getElementById("chosenpostitem-upper").innerHTML);
} else if (undercutAmount.indexOf("%") > -1) {
undercutValue = currentPrice * ((100- undercutAmount.replace(/%/g, ""))/100);
} else {
undercutValue = currentPrice - undercutAmount;
}
document.getElementById("chosenpostitem-price").value = Math.ceil(undercutValue);
};
undercutBoxText.setAttribute("style","text-align:center");
undercutBox.append(undercutBoxText);
for (var i = 0; i < arrUndercut.length; i++) {
var undercutBtn = document.createElement("button");
undercutBtn.setAttribute("onclick","setUndercut('"+arrUndercut[i]+"');");
undercutBtn.append(arrUndercut[i]);
undercutBox.append(undercutBtn);
if (arrUndercut[i] == "min") {
document.getElementById("undercutBox").insertBefore(document.createElement("br"),document.getElementById("undercutBox").lastChild);
document.getElementById("undercutBox").insertBefore(document.createElement("br"),document.getElementById("undercutBox").lastChild);
}
document.getElementById("undercutBox").append(document.createTextNode('\u00a0')); //nbsp
}
// remove unnecessary multiple BR's that smitty left behind in dialogue-market-chosenpostitem
var el = document.getElementById("undercutBox").nextElementSibling;
while (el.nextElementSibling && el.tagName !== undefined && el.tagName != "BR") {
el = el.nextElementSibling;
}
if (el.tagName == "BR" && el.nextElementSibling && el.nextElementSibling.tagName == "BR") {
while (el.nextElementSibling.tagName == "BR") {
el.nextElementSibling.parentNode.removeChild(el.nextElementSibling);
}
}
// set global variable lastBrowsedItem to last browsed item via onclick
addLastBrowsedItemOnclick();
//add maps to noficiation area
var mapNotifWrapper = document.createElement("span");
mapNotifWrapper.setAttribute("class","notif-box");
mapNotifWrapper.setAttribute("style","display:none;background: linear-gradient(black, gold);");
mapNotifWrapper.setAttribute("id","tedmarket-notif-map");
mapNotifWrapper.setAttribute("onclick","clicksTreasureMap();");
var mapNotif = document.createElement("img");
mapNotif.setAttribute("src", "images/treasureMap.png");
mapNotif.setAttribute("class", "image-icon-50");
mapNotifWrapper.append(mapNotif);
document.getElementById("notifaction-area").prepend(mapNotifWrapper);
}
//add keepAmount to dialogue-market-chosenpostitem
if (useKeepAmount) {
keepAmountText.innerHTML = "Keep: error";
document.getElementById("chosenpostitem-amount").parentNode.insertBefore(keepAmountText, document.getElementById("chosenpostitem-amount").nextSibling);
document.getElementById("chosenpostitem-amount").parentNode.insertBefore(document.createElement("br"),document.getElementById("chosenpostitem-amount").nextSibling);
//document.getElementById("chosenpostitem-amount").parentNode.insertBefore(document.createTextNode('\u00a0'),document.getElementById("chosenpostitem-amount").nextSibling);
}
//fix collect button padding to allow 123,456,789 format
for (let i = 1; i <= arrMarketSlots.length; i++) {
document.getElementById("market-slot-"+i+"-collect-btn").style.padding = "10px 5px";
}
//add tooltips to items that do not have a tooltip
function tedTooltips() {
if (!document.getElementById("tooltip-stone")) { // don't add tooltips until default tooltips are loaded
setTimeout(function() {
tedTooltips();
}, 100);
} else {
var tKeys = Object.keys(jsTradableItems);
tKeys.forEach((key) => {
if (key == "emptyChisel") return;
if (!document.getElementById("tooltip-" + key)) {
if (document.getElementById("item-box-"+key)) {
let newTooltip = document.createElement("div");
document.getElementById("tooltip-list").append(newTooltip);
newTooltip.outerHTML = "<div id='tooltip-"+key+"' style='display:none;'> <span style='font-size:20pt'>"+getItemName(key)+"</span><br><br>tedMarket tooltip</div>";
document.getElementById("item-box-"+key).removeAttribute("title");
document.getElementById("item-box-"+key).setAttribute("data-tooltip-id","tooltip-"+key);
}
}
});
loadTooltips();
}
}
tedTooltips();
}
tedMarketUiSettings();
drawButtons();
marketMain();
document.body.append(oreAverageElement);
alterMarketSlots();
otherSettingsRunOnce();
setInterval(persistentInterval, 10);
}
});