<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.seculargames.org/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3ATreasureHuntingGuide.js</id>
	<title>MediaWiki:TreasureHuntingGuide.js - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.seculargames.org/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3ATreasureHuntingGuide.js"/>
	<link rel="alternate" type="text/html" href="https://wiki.seculargames.org/index.php?title=MediaWiki:TreasureHuntingGuide.js&amp;action=history"/>
	<updated>2026-07-29T05:22:22Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.seculargames.org/index.php?title=MediaWiki:TreasureHuntingGuide.js&amp;diff=45815&amp;oldid=prev</id>
		<title>imported&gt;Loramin at 16:27, 22 January 2021</title>
		<link rel="alternate" type="text/html" href="https://wiki.seculargames.org/index.php?title=MediaWiki:TreasureHuntingGuide.js&amp;diff=45815&amp;oldid=prev"/>
		<updated>2021-01-22T16:27:14Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;// Count spots&lt;br /&gt;
&lt;br /&gt;
var spots = [];&lt;br /&gt;
&lt;br /&gt;
$(&amp;#039;.wikitable tbody tr&amp;#039;).each(function(i, tr) {&lt;br /&gt;
  var $tds = $(tr).children(&amp;#039;td&amp;#039;);&lt;br /&gt;
  var level = $($tds[0]).text().trim();&lt;br /&gt;
  var zone = $($tds[1]).text().trim(); &lt;br /&gt;
  if (level &amp;amp;&amp;amp; zone) spots.push({ level: level, zone: zone });&lt;br /&gt;
}); &lt;br /&gt;
&lt;br /&gt;
$(&amp;#039;#numSpots&amp;#039;).text(spots.length);&lt;br /&gt;
&lt;br /&gt;
// Add price-checking to Treasure Hunting Guide&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Given the HTML for a &amp;lt;td&amp;gt; extracts the numeric value (and multiplies it by 20 if we&amp;#039;re&lt;br /&gt;
 * dealing with a stacked item)&lt;br /&gt;
 */&lt;br /&gt;
var getPriceFromCell = function(cell, isStack) {&lt;br /&gt;
  return parseInt(cell.split(&amp;#039; &amp;#039;)[0], 10) * (isStack ? 20 : 1);&lt;br /&gt;
};&lt;br /&gt;
/**&lt;br /&gt;
 * Given a bunch of &amp;lt;td&amp;gt;s from the auction tracker, this function separates out the&lt;br /&gt;
 * price info and returns a message containing it&lt;br /&gt;
 * @arg isStack boolean that&amp;#039;s true if we&amp;#039;re getting the price of a stack (20) of items&lt;br /&gt;
 */&lt;br /&gt;
var buildMessageFromCells = function(cells, itemName, isStack) {&lt;br /&gt;
  var thirtyCell = getPriceFromCell(cells[1], isStack);&lt;br /&gt;
  var ninetyCell = getPriceFromCell(cells[2], isStack);&lt;br /&gt;
  var allCell = getPriceFromCell(cells[3], isStack);&lt;br /&gt;
  return &amp;#039;&amp;lt;span style=&amp;quot;text-decoration: underline&amp;quot;&amp;gt;&amp;#039;+&lt;br /&gt;
         (isStack ? &amp;#039;a stack of (20x) &amp;#039; : &amp;#039;&amp;#039;) +&lt;br /&gt;
         itemName + &amp;#039;&amp;lt;/span&amp;gt;&amp;#039; +&lt;br /&gt;
         &amp;#039;&amp;lt;br/&amp;gt;30-day: &amp;#039; + thirtyCell +&lt;br /&gt;
         &amp;#039;&amp;lt;br/&amp;gt;90-day: &amp;#039; + ninetyCell +&lt;br /&gt;
         &amp;#039;&amp;lt;br/&amp;gt;All-Time: &amp;#039; + allCell;&lt;br /&gt;
}&lt;br /&gt;
/**&lt;br /&gt;
 * Extracts the HTML for the three price-related &amp;lt;td&amp;gt;s of the auction tracker&lt;br /&gt;
 */&lt;br /&gt;
var extractCellHtml = function(html, itemName) {&lt;br /&gt;
  var eoTableHtml = html.split(&amp;#039;eoTable3&amp;#039;)[1];&lt;br /&gt;
  if (!eoTableHtml) throw new Error(&amp;#039;No price information could be found for &amp;quot;&amp;#039; + itemName + &amp;#039;&amp;quot;.&amp;#039;);&lt;br /&gt;
  return eoTableHtml&lt;br /&gt;
    .split(&amp;#039;&amp;lt;td&amp;gt;&amp;#039;)&lt;br /&gt;
    .map(function(x) { return x.trim(); });&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
var handlePriceCheckClick = function(e) {&lt;br /&gt;
  var $parentTd = $(e.target).parent();&lt;br /&gt;
  var isStack = $parentTd.is(&amp;#039;.price_check_stack&amp;#039;);&lt;br /&gt;
  document.body.style.cursor = &amp;#039;wait&amp;#039;;&lt;br /&gt;
  var $anchors = $parentTd.prev().find(&amp;#039;.hbdiv &amp;gt; a&amp;#039;);&lt;br /&gt;
  var itemNames = $anchors.map(function(i, a) { return $(a).attr(&amp;#039;title&amp;#039;); });&lt;br /&gt;
  var promises = itemNames.map(function(i, itemName) {&lt;br /&gt;
    return $.ajax(&amp;#039;/&amp;#039; + itemName);&lt;br /&gt;
  });&lt;br /&gt;
  $.when.apply($, promises).then(function(firstArg) {&lt;br /&gt;
    document.body.style.cursor = &amp;#039;&amp;#039;;&lt;br /&gt;
    // Arguments will vary based on whether we did 1 or 2+ AJAX calls (thanks jQuery!)&lt;br /&gt;
    var pages = typeof firstArg === &amp;#039;string&amp;#039; ?&lt;br /&gt;
      [firstArg] : // We only looked up one page&lt;br /&gt;
      Array.from(arguments).map(function(args) { return args[0]; });  // We looked up multiple&lt;br /&gt;
    try {&lt;br /&gt;
      var messages = pages.map(function(html) {&lt;br /&gt;
        var itemName = html.split(&amp;#039;title&amp;gt;&amp;#039;)[1].split(&amp;#039; - Project&amp;#039;)[0];&lt;br /&gt;
        var cells = extractCellHtml(html, itemName);&lt;br /&gt;
        return buildMessageFromCells(cells, itemName, isStack);&lt;br /&gt;
      });&lt;br /&gt;
      $parentTd&lt;br /&gt;
        .removeClass(&amp;#039;price_check&amp;#039;)&lt;br /&gt;
        .html(messages.join(&amp;#039;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;#039;));&lt;br /&gt;
    } catch (err) {&lt;br /&gt;
      alert(err.message || &amp;#039;Something went wrong!&amp;#039;);&lt;br /&gt;
      document.body.style.cursor = &amp;#039;&amp;#039;;&lt;br /&gt;
    }&lt;br /&gt;
  }).fail(function(message) {&lt;br /&gt;
    document.body.style.cursor = &amp;#039;&amp;#039;;&lt;br /&gt;
    alert(message || &amp;#039;Something went wrong!&amp;#039;);&lt;br /&gt;
  });&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
$(&amp;#039;.price_check span, .price_check_stack span&amp;#039;).click(handlePriceCheckClick);&lt;/div&gt;</summary>
		<author><name>imported&gt;Loramin</name></author>
	</entry>
</feed>