-
⚠️ PhobiaCide's Wormhole Guide is a Published Google Sheets work book that was Modified from Rykki's Wormhole Guide(deprecated)
- 🗃️ site name and type
- 〰️ number of waves
- 🛸 number of ships
- 🦀 class of ships(e.g. frigate, cruiser, battleship)
- 💥 potential damage output(DPS) of each wave
- 🔫 which sleeper will trigger the next wave
- 🍳 number of warp scramblers
- 🕸️ number of stasis webifiers
- 🔋 capacitor neutralization in GJ/s
- 💎total loot value for a given site
- 👾 sleeper EHP/isk value for a given site
- 🔮 If your ship and fit can handle a particular site
- 💎 The ISK value of a particular ore field
- ☁️ Which gas cloud is best to huff first
- ⏱ Best possible site time under ideal conditions
-
📉 View Chart
Figure Definition Scram Points of scram and range Web Quantity of webs and optimal range Neut Rate of capacitor neutralization and optimal range RRep Rate of remote repair and optimal range Sig The signature radius of the ship Speed The sleeper's top speed when not at orbit range Distance The sleeper's preferred distance at which to orbit Velocity The speed the sleeper will burn while orbiting
-
Thanks to Fuzzy Steve for maintaining a market database and for writing loadRegionAggregates()
/** * @function * @alias loadRegionAggregates() * @summary Requests aggregated market data from market.fuzzwork.co.uk for a given list of type Ids * @param {array} dirtyTypeIds - must be 2-dimensional * @param {number} [regionId = 10000002] * @throws Will throw an error if dirtyTypeIds is undefined * * @returns {array} Market data for the given types */ function loadRegionAggregates(dirtyTypeIds, regionId = 10000002) { try { if (typeof dirtyTypeIds == `undefined`) { throw `Need a list of typeids`; } const prices = []; const cleanTypeIds = []; const url = `https://market.fuzzwork.co.uk/aggregates/?region=${regionId}&types=`; const options = { method: `get`, payload: `` }; dirtyTypeIds.forEach(row => { row.forEach(cell => { if (typeof cell === "number") { cleanTypeIds.push(cell); } }); }); prices.push([ "Buy volume", "Buy Weighted Average", "Max Buy", "Min Buy", "Buy Std Dev", "Median Buy", "Percentile Buy Price", "Sell volume", "Sell Weighted Average", "Max sell", "Min Sell", "Sell Std Dev", "Median Sell", "Percentile Sell Price", ]); function spliceChunks(array, chunkSize) { const result = []; while (array.length > 0) { const chunk = array.splice(0, chunkSize); result.push(chunk); } return result; } const chunkSize = 100; const chunkedArray = spliceChunks(cleanTypeIds, chunkSize); chunkedArray.forEach(chunk => { Utilities.sleep(Math.random() * 200); const urlTypes = chunk.join(",").replace(/,$/, ""); const json = JSON.parse( UrlFetchApp.fetch(url + urlTypes, options).getContentText(), ); if (json) { chunk.forEach(entry => { const price = [ parseInt(json[entry].buy.volume), parseInt(json[entry].buy.weightedAverage), parseFloat(json[entry].buy.max), parseFloat(json[entry].buy.min), parseFloat(json[entry].buy.stddev), parseFloat(json[entry].buy.median), parseFloat(json[entry].buy.percentile), parseInt(json[entry].sell.volume), parseFloat(json[entry].sell.weightedAverage), parseFloat(json[entry].sell.max), parseFloat(json[entry].sell.min), parseFloat(json[entry].sell.stddev), parseFloat(json[entry].sell.median), parseFloat(json[entry].sell.percentile), ]; prices.push(price); }); } }); } catch (error) { // TODO (developer) Handle Exception console.error(`loadRegionAggregates() failed with error: ${error.message}.`, ); } finally { return prices; } }
Without further ado, here is a link to see the wormhole guide!