{"id":1946,"date":"2026-09-06T10:34:06","date_gmt":"2026-09-06T14:34:06","guid":{"rendered":"https:\/\/miniquasar.com\/?post_type=product&#038;p=1946"},"modified":"2026-09-15T08:49:54","modified_gmt":"2026-09-15T12:49:54","slug":"forgotten-knights","status":"publish","type":"product","link":"https:\/\/miniquasar.com\/us\/product\/forgotten-knights\/","title":{"rendered":"Forgotten Knights \u2013 Vine Possessed Armour"},"content":{"rendered":"<div class=\"tmq-below\">\n<div class=\"tmq-story\">\n<section>\n      <span class=\"label\">The full story<\/span><\/p>\n<h2>Forgotten Knights \u2013 Vine Possessed Armour<\/h2>\n<p>This listing is a set of 3 Forgotten Knights miniatures \u2014 vine-possessed suits of armour, each a Normal-sized figure.<\/p>\n<p>Knights who perished in Steinvad forest during the war. When Formen\u2019s ambushes were no longer prudent to keep Leacianus\u2019 advancing forces at bay, the Coalition deployed heavy shock troops to try slow the advance. Though unfortunately steel does little to stop the relentless swells of arcane fire, and many of this knights were reduced to cinders as the violet flames engulfed them. Only their armour remained as their flesh and bone turned to ash. Years later, they still remain on the forest floor, the healing land reclaiming the steel and iron nestled in its soil.<\/p>\n<p>Yet for Pontifax, he saw a chance to animate servants from these wreathed suits of armour. Knights to serve himself and his Queen, Userios. Thus from their ashen graves the suits of armour rise, husks puppeteered by vine, root and stem. Relentless, unwavering, resolved, they are the perfect soldiers, holding no fear and no trepidation for their fate, or loved ones that might be left behind. They are soulless automatons, marching in defense of their Queen\u2019s land.<\/p>\n<p>Against the Feywalkers and Druidic interlopers they are set, and lest their foes be armed with fire, they will find great difficulty in bringing down the stalwart defenders. Thus the Forgotten Knights of the Liturium War now serve a new purpose, though one more dire than falling in defense of their homeland.<\/p>\n<\/section>\n<div class=\"tmq-reveal-head\"><span class=\"kicker\">The set<\/span><\/p>\n<p>The Fey Court is a campaign set of Finders Keepers miniatures. Order the full lineup, or any five, and the digital campaign bundle comes with them.<\/p>\n<\/div>\n<figure class=\"tmq-reveal\"><a class=\"tmq-reveal-card\" href=\"https:\/\/miniquasar.com\/campaigns\/the-fey-court\/\"><span class=\"tmq-reveal-frame\"><img fetchpriority=\"high\" decoding=\"async\" class=\"tmq-reveal-a\" loading=\"eager\" width=\"420\" height=\"420\" src=\"https:\/\/miniquasar.com\/wp-content\/uploads\/2026\/09\/fey-court-release-tmq.png\" alt=\"The Fey Court set\"><img decoding=\"async\" class=\"tmq-reveal-b\" loading=\"eager\" width=\"420\" height=\"420\" src=\"https:\/\/miniquasar.com\/wp-content\/uploads\/2026\/09\/fey-court-set-minis.jpg\" alt=\"The Fey Court miniatures\"><\/span><\/a><\/figure>\n<div class=\"tmq-reveal-head\"><span class=\"kicker\">The campaign<\/span><\/p>\n<p>A full monthly set from the Spotless Wood and Formen. The sculpts work in any game. Order the full lineup, or any five miniatures, and the digital campaign bundle comes with them.<\/p>\n<\/div>\n<figure class=\"tmq-reveal\"><a class=\"tmq-reveal-card\" href=\"https:\/\/miniquasar.com\/campaigns\/the-fey-court\/\"><span class=\"tmq-reveal-frame\"><img decoding=\"async\" class=\"tmq-reveal-a\" loading=\"eager\" width=\"420\" height=\"420\" src=\"https:\/\/miniquasar.com\/wp-content\/uploads\/2026\/09\/campaign-fey-court-cover-clean.png\" alt=\"The Fey Court campaign\"><img decoding=\"async\" class=\"tmq-reveal-b\" loading=\"eager\" width=\"420\" height=\"420\" src=\"https:\/\/miniquasar.com\/wp-content\/uploads\/2026\/09\/fey-open-book.png\" alt=\"The Fey Court campaign book\"><\/span><\/a><\/figure>\n<figure class=\"tmq-size-guide\">\n      <img decoding=\"async\" src=\"https:\/\/miniquasar.com\/wp-content\/uploads\/2026\/08\/size-guide-tmq.png\" alt=\"Size guide \u2014 32mm tabletop and 75mm display\"><br \/>\n    <\/figure>\n<\/p><\/div>\n<aside class=\"tmq-details\">\n    <span class=\"label\">Details<\/span><\/p>\n<h3>Painting<\/h3>\n<p>We specialize in custom painted miniatures, so if you are interested in painted minis, please send us a message and we will arrange that for you. All miniatures sold are unpainted, unless otherwise specified. If you would like us to add free matte black primer to the prints, you can let us know, and they&#8217;ll be ready to paint right out of the box!<\/p>\n<h3>Shipping<\/h3>\n<p>Our models are shipped assembled if they are not too delicate, but are usually separated from the base. Wings and some other parts may also be detached and need to be put together, especially for larger models. To put the pieces together, you could use epoxy putty, super glue, or any strong glue that works for plastics. This is to ensure that none of the delicate pieces break or get damaged during shipping. If you really need pieces glued together, please let us know and we will do our best to accommodate.<\/p>\n<h3>Free Miniature<\/h3>\n<p>Get a free miniature with your order. No requirements, every order gets one. It will be a random character from our store. If you order multiple minis, you may even get more than one for free! Enjoy.<\/p>\n<h3>Model Scale<\/h3>\n<p>Normal-sized miniatures come in two sizes: 32mm and 75mm, which is the height of the humanoid body, so with the base and other accessories like hats, they will end up being a little taller. 32mm is the standard size if you are playing D&amp;D on a physical battle map.<\/p>\n<p>Larger miniatures are measured by the diameter of their base. Large-sized miniatures usually have a 50mm base, huge-sized ones have a 75mm base, gargantuan ones have a 100-120mm base. For specific measurements on any model, please contact us and we&#8217;ll be happy to give you the exact numbers.<\/p>\n<h3>Creation of Miniatures<\/h3>\n<p>These models are made by the fantastic people at DM Stash, and they make incredible models, so please check them out. We are officially licensed to print and sell their models to you, so you can enjoy them too! We print them with an Elegoo Saturn 4 Ultra resin printer with 16K resolution (the highest quality available). They are printed using Elegoo Standard 3.0 Vanilla coloured resin, an expensive resin that ensures models are strong without compromising on the detail. The supports are cut off, the model is sanded if needed, and inspected to ensure perfection. The model is washed off with pure alcohol, then cured inside an Elegoo ultcuring enclosure, and prepared for printing.<\/p>\n<\/aside>\n<\/div>\n<p><script>\njQuery(function ($) {\n  function tmqCartBounce() {\n    var $el = $(\".header-cart-wrap, .tmq-header-cart\").first();\n    if (!$el.length) {\n      return;\n    }\n    $el.removeClass(\"tmq-cart-bounce\");\n    if ($el[0]) {\n      $el[0].offsetWidth;\n    }\n    $el.addClass(\"tmq-cart-bounce\");\n    window.setTimeout(function () {\n      $el.removeClass(\"tmq-cart-bounce\");\n    }, 700);\n  }\n  if (window.sessionStorage) {\n    if (sessionStorage.getItem(\"tmqCartBounce\") === \"1\") {\n      sessionStorage.removeItem(\"tmqCartBounce\");\n      window.setTimeout(tmqCartBounce, 80);\n    }\n  }\n  $(document.body).on(\"added_to_cart\", function () {\n    if (window.sessionStorage) {\n      sessionStorage.setItem(\"tmqCartBounce\", \"1\");\n    }\n    tmqCartBounce();\n  });\n  var $sum = $(\"div.product .summary\");\n  function tmqMoney(prices) {\n    var raw, minor, n, prefix;\n    if (!prices) {\n      return \"\";\n    }\n    raw = prices.price;\n    minor = prices.currency_minor_unit;\n    if (typeof minor === \"undefined\") {\n      minor = 2;\n    }\n    n = Number(raw);\n    if (isNaN(n)) {\n      return \"\";\n    }\n    prefix = prices.currency_prefix;\n    if (!prefix) {\n      prefix = \"$\";\n    }\n    return prefix + (n \/ Math.pow(10, minor)).toFixed(2);\n  }\n  function tmqVarName(v) {\n    var i, a, attrs, text, idx;\n    attrs = v.attributes;\n    if (attrs) {\n      if (attrs.length) {\n        for (i = 0; i !== attrs.length; i++) {\n          a = attrs[i];\n          if (a.value) {\n            return a.value;\n          }\n          if (a.option) {\n            return a.option;\n          }\n        }\n      }\n    }\n    text = v.variation || \"\";\n    idx = text.lastIndexOf(\": \");\n    if (idx !== -1) {\n      return text.substring(idx + 2);\n    }\n    if (text) {\n      return text;\n    }\n    return \"\";\n  }\n  function tmqBlob(im) {\n    return ((im.name || \"\") + \" \" + (im.src || \"\") + \" \" + (im.thumbnail || \"\") + \" \" + (im.alt || \"\")).toLowerCase();\n  }\n  function tmqIsGuide(im) {\n    var s = tmqBlob(im);\n    if (s.indexOf(\"size-guide\") !== -1) {\n      return true;\n    }\n    if (s.indexOf(\"size_guide\") !== -1) {\n      return true;\n    }\n    if (s.indexOf(\"size guide\") !== -1) {\n      return true;\n    }\n    return false;\n  }\n  function tmqIsPack(im) {\n    var s = tmqBlob(im);\n    if (s.indexOf(\"pack-set\") !== -1) {\n      return true;\n    }\n    if (s.indexOf(\"pack_set\") !== -1) {\n      return true;\n    }\n    return false;\n  }\n  function tmqPickThumbs(imgs) {\n    var i, im, others, show;\n    others = [];\n    for (i = 0; i !== imgs.length; i++) {\n      im = imgs[i];\n      if (tmqIsGuide(im)) {\n        continue;\n      }\n      if (tmqIsPack(im)) {\n        continue;\n      }\n      others.push(im);\n    }\n    if (others.length > 4) {\n      return others;\n    }\n    show = [];\n    for (i = 0; i !== imgs.length; i++) {\n      im = imgs[i];\n      if (tmqIsGuide(im)) {\n        continue;\n      }\n      if (imgs.length > 6) {\n        if (i === 6) {\n          continue;\n        }\n      }\n      show.push(im);\n    }\n    return show;\n  }\n  function tmqRenderSizes($p, vars) {\n    var i, v, label, price, $rows, $row, $price, $link, list;\n    if (!vars) {\n      return;\n    }\n    if (!vars.length) {\n      return;\n    }\n    if ($p.find(\".tmq-size-rows\").length) {\n      return;\n    }\n    list = vars.slice().sort(function (a, b) {\n      var na = tmqVarName(a);\n      var nb = tmqVarName(b);\n      if (nb > na) {\n        return -1;\n      }\n      if (na > nb) {\n        return 1;\n      }\n      return 0;\n    });\n    $rows = $(document.createElement(\"div\")).addClass(\"tmq-size-rows\");\n    for (i = 0; i !== list.length; i++) {\n      v = list[i];\n      label = tmqVarName(v);\n      price = tmqMoney(v.prices);\n      if (!label) {\n        if (!price) {\n          continue;\n        }\n      }\n      $row = $(document.createElement(\"div\")).addClass(\"tmq-size-row\");\n      if (label) {\n        $row.append($(document.createElement(\"span\")).addClass(\"tmq-size-label\").text(label));\n      }\n      if (price) {\n        $row.append(document.createTextNode(\" \"));\n        $row.append($(document.createElement(\"span\")).addClass(\"tmq-size-amt\").text(price));\n      }\n      $rows.append($row);\n    }\n    if (!$rows.children().length) {\n      return;\n    }\n    $price = $p.find(\".price\").first();\n    $link = $p.find(\"a.woocommerce-LoopProduct-link\").first();\n    if ($price.length) {\n      $price.addClass(\"tmq-price-hide\");\n      $price.hide();\n      $price.after($rows);\n    } else {\n      if ($link.length) {\n        $link.after($rows);\n      } else {\n        $p.append($rows);\n      }\n    }\n  }\n  function tmqRenderThumbs($p, imgs) {\n    var i, im, show, $img, $photo, $thumbs, $t, thumb, full, origSrc, origSrcset;\n    if (!imgs) {\n      return;\n    }\n    if (!imgs.length) {\n      return;\n    }\n    if ($p.find(\".tmq-card-thumbs\").length) {\n      return;\n    }\n    show = tmqPickThumbs(imgs);\n    if (!show.length) {\n      return;\n    }\n    $img = $p.find(\"img\").first();\n    if (!$img.length) {\n      return;\n    }\n    origSrc = $img.attr(\"src\");\n    origSrcset = $img.attr(\"srcset\") || \"\";\n    $p.data(\"tmq-orig-src\", origSrc);\n    $p.data(\"tmq-orig-srcset\", origSrcset);\n    if (!$img.parent().hasClass(\"tmq-card-photo\")) {\n      $img.wrap($(document.createElement(\"span\")).addClass(\"tmq-card-photo\"));\n    }\n    $photo = $img.parent();\n    $thumbs = $(document.createElement(\"span\")).addClass(\"tmq-card-thumbs\");\n    for (i = 0; i !== show.length; i++) {\n      im = show[i];\n      thumb = im.thumbnail;\n      if (!thumb) {\n        thumb = im.src;\n      }\n      full = im.src;\n      if (!full) {\n        full = thumb;\n      }\n      if (!thumb) {\n        continue;\n      }\n      $t = $(document.createElement(\"img\"));\n      $t.attr(\"src\", thumb);\n      $t.attr(\"data-full\", full);\n      $t.attr(\"alt\", im.alt || im.name || \"\");\n      $thumbs.append($t);\n    }\n    $photo.append($thumbs);\n    $thumbs.on(\"click\", \"img\", function (e) {\n      var next = $(this).attr(\"data-full\");\n      e.preventDefault();\n      e.stopPropagation();\n      if (next) {\n        $img.attr(\"src\", next);\n        $img.removeAttr(\"srcset\");\n        $img.removeAttr(\"sizes\");\n      }\n      return false;\n    });\n    $p.on(\"mouseleave\", function () {\n      var src = $p.data(\"tmq-orig-src\");\n      var srcset = $p.data(\"tmq-orig-srcset\");\n      if (src) {\n        $img.attr(\"src\", src);\n      }\n      if (srcset) {\n        $img.attr(\"srcset\", srcset);\n      }\n    });\n  }\n  function tmqEnhanceCard($p) {\n    var cls, m, id;\n    if ($p.data(\"tmq-ready\")) {\n      return;\n    }\n    $p.data(\"tmq-ready\", 1);\n    cls = $p.attr(\"class\") || \"\";\n    m = cls.match(\/post-(\\d+)\/);\n    if (!m) {\n      return;\n    }\n    id = m[1];\n    $.getJSON(\"https:\/\/miniquasar.com\/wp-json\/wc\/store\/v1\/products\/\" + id, function (data) {\n      var vars;\n      if (!data) {\n        return;\n      }\n      tmqRenderThumbs($p, data.images || []);\n      vars = data.variations;\n      if (!vars) {\n        return;\n      }\n      if (!vars.length) {\n        return;\n      }\n      if (vars[0].prices) {\n        tmqRenderSizes($p, vars);\n        return;\n      }\n      $.getJSON(\n        \"https:\/\/miniquasar.com\/wp-json\/wc\/store\/v1\/products\",\n        { type: \"variation\", parent: id },\n        function (list) {\n          tmqRenderSizes($p, list);\n        }\n      );\n    });\n  }\n  function tmqPackIndividuals($form, variations, $sizeSel, $modelSel) {\n    var $sec, $grid, $art, $img, $h3, $btns, $btn, $gal, $host, $found, $slugFront, $slugHit, $wordFront, $wordHit, sizeOpts, si, sizeVal, sizeLabel, modelVal, modelLabel, slug, lastWord, src, alt, blob, found, price, priceText, i, a, k, hit, pid, vid, url, payload, attrs, idAttr, m, $b;\n    if ($(\".tmq-individuals\").length) {\n      return;\n    }\n    sizeOpts = [];\n    $sizeSel.find(\"option\").each(function () {\n      if (this.value) {\n        sizeOpts.push({ val: this.value, text: this.text || this.value });\n      }\n    });\n    sizeOpts.sort(function (a, b) {\n      var ra, rb, ta, tb;\n      ta = (a.text || \"\").toLowerCase();\n      tb = (b.text || \"\").toLowerCase();\n      ra = 2;\n      rb = 2;\n      if (ta.indexOf(\"32\") !== -1) {\n        ra = 0;\n      } else {\n        if (ta.indexOf(\"75\") !== -1) {\n          ra = 1;\n        }\n      }\n      if (tb.indexOf(\"32\") !== -1) {\n        rb = 0;\n      } else {\n        if (tb.indexOf(\"75\") !== -1) {\n          rb = 1;\n        }\n      }\n      return ra - rb;\n    });\n    $sec = $(document.createElement(\"div\")).addClass(\"tmq-individuals\");\n    $sec.append($(document.createElement(\"span\")).addClass(\"label\").text(\"Get individual miniatures from this set\"));\n    $grid = $(document.createElement(\"div\")).addClass(\"tmq-individuals-grid\");\n    $sec.append($grid);\n    $gal = $(\".woocommerce-product-gallery img\");\n    $modelSel.find(\"option\").each(function () {\n      if (!this.value) {\n        return;\n      }\n      modelVal = this.value;\n      modelLabel = (this.text || modelVal).replace(\/^Choose an option\/i, \"\").trim();\n      if ((modelLabel.toLowerCase().indexOf(\"full set\") !== -1 || modelLabel.toLowerCase().indexOf(\"all 3\") !== -1)) {\n        return;\n      }\n      $art = $(document.createElement(\"article\")).addClass(\"tmq-ind\").attr(\"data-model\", modelVal);\n      slug = modelLabel.toLowerCase().replace(\/\\s+\/g, \"-\");\n      lastWord = modelLabel.toLowerCase().replace(\/^.*\\s\/, \"\");\n      $slugFront = $();\n      $slugHit = $();\n      $wordFront = $();\n      $wordHit = $();\n      $gal.each(function () {\n        var $im = $(this);\n        src = (($im.attr(\"src\") || \"\") + \" \" + ($im.attr(\"data-src\") || \"\") + \" \" + ($im.attr(\"data-large_image\") || \"\")).toLowerCase();\n        alt = ($im.attr(\"alt\") || \"\").toLowerCase();\n        blob = src + \" \" + alt;\n        if (blob.indexOf(slug) !== -1) {\n          if (!$slugHit.length) {\n            $slugHit = $im;\n          }\n          if (src.indexOf(\"-front\") !== -1) {\n            if (!$slugFront.length) {\n              $slugFront = $im;\n            }\n          }\n        }\n        if (lastWord) {\n          if (blob.indexOf(lastWord) !== -1) {\n            if (!$wordHit.length) {\n              $wordHit = $im;\n            }\n            if (src.indexOf(\"-front\") !== -1) {\n              if (!$wordFront.length) {\n                $wordFront = $im;\n              }\n            }\n          }\n        }\n      });\n      $found = $();\n      if ($slugFront.length) {\n        $found = $slugFront;\n      } else {\n        if ($slugHit.length) {\n          $found = $slugHit;\n        } else {\n          if ($wordFront.length) {\n            $found = $wordFront;\n          } else {\n            if ($wordHit.length) {\n              $found = $wordHit;\n            } else {\n              $found = $gal.first();\n            }\n          }\n        }\n      }\n      $img = $(document.createElement(\"img\")).attr(\"alt\", modelLabel);\n      src = \"\";\n      if ($found.length) {\n        src = $found.attr(\"data-large_image\") || \"\";\n        if (!src) {\n          src = $found.attr(\"data-src\") || \"\";\n        }\n        if (!src) {\n          src = $found.attr(\"src\") || \"\";\n        }\n      }\n      if (src) {\n        $img.attr(\"src\", src);\n        $art.append($img);\n      }\n      $h3 = $(document.createElement(\"h3\")).text(modelLabel);\n      $art.append($h3);\n      $btns = $(document.createElement(\"div\")).addClass(\"tmq-ind-btns\");\n      for (si = 0; si !== sizeOpts.length; si++) {\n        sizeVal = sizeOpts[si].val;\n        sizeLabel = (sizeOpts[si].text || sizeVal).replace(\/^Choose an option\/i, \"\").trim();\n        found = null;\n        for (i = 0; i !== variations.length; i++) {\n          a = variations[i].attributes || {};\n          hit = 0;\n          for (k in a) {\n            if (a[k] === sizeVal) {\n              hit = hit + 1;\n            }\n            if (a[k] === modelVal) {\n              hit = hit + 1;\n            }\n          }\n          if (hit > 1) {\n            found = variations[i];\n          }\n        }\n        if (!found) {\n          continue;\n        }\n        price = \"\";\n        if (found.display_price != null) {\n          price = found.display_price;\n        }\n        priceText = \"\";\n        if (price !== \"\") {\n          priceText = \"$\" + Number(price).toFixed(2);\n        }\n        $btn = $(document.createElement(\"button\")).attr(\"type\", \"button\").addClass(\"tmq-ind-btn\");\n        $btn.attr(\"data-size\", sizeVal);\n        $btn.attr(\"data-model\", modelVal);\n        $btn.attr(\"data-variation\", found.variation_id);\n        $btn.append($(document.createElement(\"span\")).addClass(\"tmq-ind-size\").text(sizeLabel));\n        if (priceText) {\n          $btn.append($(document.createElement(\"span\")).addClass(\"tmq-ind-price\").text(priceText));\n        }\n        $btn.append($(document.createElement(\"span\")).addClass(\"tmq-ind-add\").text(\"Add to cart\"));\n        $btns.append($btn);\n      }\n      $art.append($btns);\n      $grid.append($art);\n    });\n    if (!$grid.children().length) {\n      return;\n    }\n    $host = $(\"div.product .summary\").first();\n    if ($host.length) {\n      $host.after($sec);\n    } else {\n      $host = $(\".woocommerce-product-gallery\").first();\n      if ($host.length) {\n        $host.after($sec);\n      } else {\n        $host = $(\".tmq-below\").first();\n        if ($host.length) {\n          $host.before($sec);\n        }\n      }\n    }\n    $sec.on(\"click\", \".tmq-ind-btn\", function (e) {\n      e.preventDefault();\n      $b = $(this);\n      vid = $b.attr(\"data-variation\");\n      pid = $form.data(\"product_id\");\n      if (!pid) {\n        pid = $form.find(\"input[name=product_id]\").val();\n      }\n      if (!pid) {\n        idAttr = $form.closest(\".product\").attr(\"id\") || \"\";\n        m = String(idAttr).match(\/(\\d+)\/);\n        if (m) {\n          pid = m[1];\n        }\n      }\n      url = \"\/?wc-ajax=add_to_cart\";\n      if (typeof wc_add_to_cart_params !== \"undefined\") {\n        if (wc_add_to_cart_params.wc_ajax_url) {\n          url = wc_add_to_cart_params.wc_ajax_url.replace(\"%%endpoint%%\", \"add_to_cart\");\n        }\n      }\n      if (!vid) {\n        return;\n      }\n      payload = {\n        product_id: vid,\n        variation_id: vid,\n        quantity: 1\n      };\n      if (pid) {\n        payload.parent_id = pid;\n      }\n      found = null;\n      for (i = 0; i !== variations.length; i++) {\n        if (String(variations[i].variation_id) === String(vid)) {\n          found = variations[i];\n        }\n      }\n      if (found) {\n        attrs = found.attributes;\n        if (attrs) {\n          for (k in attrs) {\n            payload[k] = attrs[k];\n            payload[\"variation[\" + k + \"]\"] = attrs[k];\n          }\n        }\n      }\n      $.post(url, payload, function (res) {\n        if (res) {\n          if (res.error) {\n            return;\n          }\n          if (res.fragments) {\n            $.each(res.fragments, function (sel, html) {\n              $(sel).replaceWith(html);\n            });\n          }\n        }\n        if (window.sessionStorage) {\n          sessionStorage.setItem(\"tmqCartBounce\", \"1\");\n        }\n        $(document.body).trigger(\"added_to_cart\");\n      });\n    });\n  }\n  var $form = $(\"form.variations_form\");\n  if ($form.length) {\n    var variations = $form.data(\"product_variations\");\n    if (!variations) {\n      variations = [];\n    }\n    var $sizeSel = $();\n    var $modelSel = $();\n    var grouped = 0;\n    $form.find(\"select\").each(function () {\n      var $s = $(this);\n      var n = ($s.attr(\"name\") || \"\").toLowerCase();\n      if (n.indexOf(\"size\") !== -1) {\n        if (n.indexOf(\"tabletop\") === -1) {\n          $sizeSel = $s;\n        }\n      }\n      if (n.indexOf(\"model\") !== -1) {\n        $modelSel = $s;\n      }\n    });\n    if ($sizeSel.length) {\n      if ($modelSel.length) {\n        grouped = 1;\n      }\n    }\n    if (grouped) {\n      var $box, sizeOpts, modelOpts, setOpts, si, mi, sizeVal, sizeLabel, modelVal, modelLabel, $btn, price, priceText, found, i, a, k, hit, currentSize, currentModel;\n      $sizeSel.addClass(\"tmq-size-native\");\n      $modelSel.addClass(\"tmq-size-native\");\n      $box = $(document.createElement(\"div\")).addClass(\"tmq-size-picks\").attr(\"role\", \"radiogroup\").attr(\"aria-label\", \"Size\");\n      sizeOpts = [];\n      $sizeSel.find(\"option\").each(function () {\n        if (this.value) {\n          sizeOpts.push({ val: this.value, text: this.text || this.value });\n        }\n      });\n      sizeOpts.sort(function (a, b) {\n        var ra, rb, ta, tb;\n        ta = (a.text || \"\").toLowerCase();\n        tb = (b.text || \"\").toLowerCase();\n        ra = 2;\n        rb = 2;\n        if (ta.indexOf(\"32\") !== -1) {\n          ra = 0;\n        } else {\n          if (ta.indexOf(\"75\") !== -1) {\n            ra = 1;\n          }\n        }\n        if (tb.indexOf(\"32\") !== -1) {\n          rb = 0;\n        } else {\n          if (tb.indexOf(\"75\") !== -1) {\n            rb = 1;\n          }\n        }\n        return ra - rb;\n      });\n      modelOpts = [];\n      $modelSel.find(\"option\").each(function () {\n        if (this.value) {\n          modelOpts.push({ val: this.value, text: this.text || this.value });\n        }\n      });\n      setOpts = [];\n      for (mi = 0; mi !== modelOpts.length; mi++) {\n        modelLabel = (modelOpts[mi].text || modelOpts[mi].val).replace(\/^Choose an option\/i, \"\").trim();\n        if ((modelLabel.toLowerCase().indexOf(\"full set\") !== -1 || modelLabel.toLowerCase().indexOf(\"all 3\") !== -1)) {\n          setOpts.push(modelOpts[mi]);\n        }\n      }\n      for (si = 0; si !== sizeOpts.length; si++) {\n        sizeVal = sizeOpts[si].val;\n        sizeLabel = (sizeOpts[si].text || sizeVal).replace(\/^Choose an option\/i, \"\").trim();\n        for (mi = 0; mi !== setOpts.length; mi++) {\n          modelVal = setOpts[mi].val;\n          price = \"\";\n          found = null;\n          for (i = 0; i !== variations.length; i++) {\n            a = variations[i].attributes || {};\n            hit = 0;\n            for (k in a) {\n              if (a[k] === sizeVal) {\n                hit = hit + 1;\n              }\n              if (a[k] === modelVal) {\n                hit = hit + 1;\n              }\n            }\n            if (hit > 1) {\n              found = variations[i];\n            }\n          }\n          if (!found) {\n            continue;\n          }\n          if (found.display_price != null) {\n            price = found.display_price;\n          }\n          priceText = \"\";\n          if (price !== \"\") {\n            priceText = \"$\" + Number(price).toFixed(2);\n          }\n          $btn = $(document.createElement(\"button\")).attr(\"type\", \"button\").addClass(\"tmq-size-pick\").attr(\"role\", \"radio\").attr(\"aria-checked\", \"false\");\n          $btn.attr(\"data-size\", sizeVal);\n          $btn.attr(\"data-model\", modelVal);\n          $btn.append($(document.createElement(\"span\")).addClass(\"tmq-size-name\").text(sizeLabel));\n          if (priceText) {\n            $btn.append($(document.createElement(\"span\")).addClass(\"tmq-size-price\").text(priceText));\n          }\n          $btn.on(\"click\", function () {\n            var sv = $(this).attr(\"data-size\");\n            var mv = $(this).attr(\"data-model\");\n            $box.find(\".tmq-size-pick\").removeClass(\"is-on\").attr(\"aria-checked\", \"false\");\n            $(this).addClass(\"is-on\").attr(\"aria-checked\", \"true\");\n            $sizeSel.val(sv);\n            $sizeSel.trigger(\"change\");\n            $modelSel.val(mv);\n            $modelSel.trigger(\"change\");\n          });\n          $box.append($btn);\n        }\n      }\n      $form.find(\"select\").last().after($box);\n      currentSize = $sizeSel.val();\n      currentModel = $modelSel.val();\n      if (currentSize) {\n        if (currentModel) {\n          $box.find('.tmq-size-pick[data-size=\"' + currentSize + '\"][data-model=\"' + currentModel + '\"]').addClass(\"is-on\").attr(\"aria-checked\", \"true\");\n        } else {\n          $box.find(\".tmq-size-pick\").first().trigger(\"click\");\n        }\n      } else {\n        $box.find(\".tmq-size-pick\").first().trigger(\"click\");\n      }\n      tmqPackIndividuals($form, variations, $sizeSel, $modelSel);\n    } else {\n      $form.find(\"select\").each(function () {\n        var $sel = $(this);\n        var $box, current, usable;\n        usable = $sel.find(\"option[value]\").filter(function () {\n          return this.value;\n        });\n        if (!(usable.length >= 1)) {\n          return;\n        }\n        $sel.addClass(\"tmq-size-native\");\n        $box = $(document.createElement(\"div\")).addClass(\"tmq-size-picks\").attr(\"role\", \"radiogroup\").attr(\"aria-label\", \"Size\");\n        $sel.find(\"option\").each(function () {\n          var val = this.value;\n          var label, price, priceText, $btn, i, a, k;\n          if (!val) {\n            return;\n          }\n          label = (this.text || val).replace(\/^Choose an option\/i, \"\").trim();\n          price = \"\";\n          for (i = 0; i !== variations.length; i++) {\n            a = variations[i].attributes || {};\n            for (k in a) {\n              if (a[k] === val) {\n                if (variations[i].display_price != null) {\n                  price = variations[i].display_price;\n                }\n              }\n            }\n          }\n          priceText = \"\";\n          if (price !== \"\") {\n            priceText = \"$\" + Number(price).toFixed(2);\n          }\n          $btn = $(document.createElement(\"button\")).attr(\"type\", \"button\").addClass(\"tmq-size-pick\").attr(\"role\", \"radio\").attr(\"aria-checked\", \"false\");\n          $btn.attr(\"data-value\", val);\n          $btn.append($(document.createElement(\"span\")).addClass(\"tmq-size-name\").text(label));\n          if (priceText) {\n            $btn.append($(document.createElement(\"span\")).addClass(\"tmq-size-price\").text(priceText));\n          }\n          $btn.on(\"click\", function () {\n            $box.find(\".tmq-size-pick\").removeClass(\"is-on\").attr(\"aria-checked\", \"false\");\n            $(this).addClass(\"is-on\").attr(\"aria-checked\", \"true\");\n            $sel.val(val).trigger(\"change\");\n          });\n          $box.append($btn);\n        });\n        $sel.after($box);\n        current = $sel.val();\n        if (current) {\n          $box.find('[data-value=\"' + current + '\"]').addClass(\"is-on\").attr(\"aria-checked\", \"true\");\n        } else {\n          $box.find(\".tmq-size-pick\").first().trigger(\"click\");\n        }\n      });\n    }\n  }\n  var paintHref = \"https:\/\/miniquasar.com\/contact\/\";\n  var paintHtml = $(document.createElement(\"a\")).addClass(\"tmq-paint-link\").attr(\"href\", paintHref).text(\"Inquire about Painted Miniatures\");\n  var $after;\n  if ($sum.length) {\n    if (!$sum.find(\".tmq-paint-link\").length) {\n      $after = $sum.find(\".tmq-size-picks\").first();\n      if ($after.length) {\n        $after.after(paintHtml);\n      } else {\n        $sum.find(\"form.cart\").before(paintHtml);\n      }\n    }\n  }\n});\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Unpainted 16K resin miniature. Sizes 32mm and 75mm. Made in Canada.<\/p>\n<p class=\"tmq-chips\"><span>Monster<\/span><span>Construct<\/span><span>Fey<\/span><span>Normal<\/span><\/p>\n<div class=\"tmq-set\"><span class=\"label\">Campaign set<\/span><\/p>\n<h3>The Fey Court<\/h3>\n<p><a class=\"tmq-set-link\" href=\"https:\/\/miniquasar.com\/campaigns\/the-fey-court\/\">View the set<\/a><\/div>\n","protected":false},"featured_media":1955,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_kad_post_transparent":"default","_kad_post_title":"","_kad_post_layout":"default","_kad_post_sidebar_id":"","_kad_post_content_style":"default","_kad_post_vertical_padding":"default","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":""},"product_brand":[],"product_cat":[24,100],"product_tag":[],"class_list":["post-1946","product","type-product","status-publish","has-post-thumbnail","product_cat-individual-minis","product_cat-the-fey-court","pa_gender-other","pa_mini-type-monster","pa_race-construct","pa_race-fey","pa_set-the-fey-court","pa_size-32mm","pa_size-75mm","pa_tabletop-size-normal","first","instock","taxable","shipping-taxable","purchasable","product-type-variable","entry","content-bg","loop-entry"],"_links":{"self":[{"href":"https:\/\/miniquasar.com\/us\/wp-json\/wp\/v2\/product\/1946","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/miniquasar.com\/us\/wp-json\/wp\/v2\/product"}],"about":[{"href":"https:\/\/miniquasar.com\/us\/wp-json\/wp\/v2\/types\/product"}],"replies":[{"embeddable":true,"href":"https:\/\/miniquasar.com\/us\/wp-json\/wp\/v2\/comments?post=1946"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/miniquasar.com\/us\/wp-json\/wp\/v2\/media\/1955"}],"wp:attachment":[{"href":"https:\/\/miniquasar.com\/us\/wp-json\/wp\/v2\/media?parent=1946"}],"wp:term":[{"taxonomy":"product_brand","embeddable":true,"href":"https:\/\/miniquasar.com\/us\/wp-json\/wp\/v2\/product_brand?post=1946"},{"taxonomy":"product_cat","embeddable":true,"href":"https:\/\/miniquasar.com\/us\/wp-json\/wp\/v2\/product_cat?post=1946"},{"taxonomy":"product_tag","embeddable":true,"href":"https:\/\/miniquasar.com\/us\/wp-json\/wp\/v2\/product_tag?post=1946"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}