{"id":2135,"date":"2026-09-10T15:51:29","date_gmt":"2026-09-10T19:51:29","guid":{"rendered":"https:\/\/miniquasar.com\/?post_type=product&#038;p=2135"},"modified":"2026-10-01T08:05:46","modified_gmt":"2026-10-01T12:05:46","slug":"leopold-the-ascended","status":"publish","type":"product","link":"https:\/\/miniquasar.com\/us\/product\/leopold-the-ascended\/","title":{"rendered":"Leopold the Ascended \u2013 Justice Reborn"},"content":{"rendered":"<div class=\"tmq-below\">\n<div class=\"tmq-story\">\n<section>\n      <span class=\"label\">The full story<\/span><\/p>\n<h2>Leopold the Ascended \u2013 Justice Reborn<\/h2>\n<p>Death long sought Leopold after the destruction of Namneri\u2019s Chalice. Having gruesomely perished during the fighting in Sundestra as Hendrak ascended, Leopold awoke five days later, finding himself very much alive. Driven by his Erdrydion\u2019s will, he was led to find remnants of Namneri\u2019s shattered Chalice, yet half a dozen more times he was slain in his quest, awaking again and again. Finally, when the chalice was remade with the shards scattered across Tharador, Leopold found his final rest, and earned a place among Erdrydion\u2019s Selvaneri in Syelden.<\/p>\n<p>In the streets of Sundestra during the final days of the Dragonblight Plague, Leopold, Paladin of Erdrydion, was one of the few survivors still making a stand against the eldritch abominations that had been amalgamating the corpses of plague victims. He had managed to scrape by, saving survivors where he could and gathering them in the few safe havens across the city. As the final battle with Hendrak raged on in the grotesque spire of flesh above the city, the abominations below began their own assault on the survivors in a bid of desperation.<\/p>\n<p>Leopold made a valiant stand against them, alongside a ragtag group of fighters and remnant guards and soldiers. They were mercilessly slaughtered, their bodies beginning to be formed into the eldritch biomasses which would reinforce Hendrak in his final battle. Yet respite came, an ear shattering thunder and blinding light erupted across the city from the spire. The eldritch beasts perished in their place, though Leopold\u2019s wounds were too dire, and his life slipped away. For what seemed like aeons he dreamed: a life as a wanderer, walking upon windswept plains bathed in an azure moonlight. On the horizon a warm orange glow called his name, yet as he began his journey towards it, he awoke.<\/p>\n<p>Washed upon the shores of Draksborne\u2019s arm coast, he found himself, bound still in his same armour, his sword embedded in the sand before him. The world he awoke in was five days after Hendrak had been defeated, and he quickly saw the destruction left in the wake of Dragonblight. His mind was rattled, had he truly perished? Or had the abominations inflicted some poison on his mind that took so long to recover from? Soon he found his answer when he reunited with a sect of Erdrydion clergyman who were travelling to Sundestra to aid in its purification. They told him of the destruction of Namneri\u2019s Chalice, and Leopold thus realised his soul was now bound for purgatory in death. This was confirmed to him soon after, for he volunteered to search for these shards of Namneri\u2019s Chalice alongside many of his kin. Leopold\u2019s search drew him to a small chapter of cultists hidden in the ruins of Eredel, where they had been coveting a shard to prevent its reconstruction. They took Leopold by surprise when they learned of his quest, riddling him with stab wounds and leaving him to bleed out in a patch of dirt in the city\u2019s outskirts.<\/p>\n<p>The same dream took him, and he awoke again five days past, washing upon the shore of a river, with all his armour and weapons still bound to him. He stormed the cultist stronghold, where they were taken aback to see him. Each one of them was cut down without hesitation, and the shard recovered, brought back to Sundestra as another piece of the puzzle was slowly put together. Yet the Church of the Tharameni demanded more of him, and he was sent back into the darkness to retrieve pieces of Namneri\u2019s relic. Half a dozen times he perished in pursuit of these shards: assailed by beasts, crushed by an undead ogre, mauled by werewolves. Death had become a routine for him at this point, and he quickly grew tired of it. When the Chalice was finally completed, he found his eternal rest. In Syelden he was taken to Erdrydion\u2019s side, ascended as a Selvaneri for his relentless devotion to his task, and the grave suffering he endured in it.<\/p>\n<\/section>\n<div class=\"tmq-reveal-head\"><span class=\"kicker\">The set<\/span><\/p>\n<p>The dark forces of Mindoriel\u2019s Spawn have invaded Syelden, the Endless End. Tharador\u2019s afterlife of infinite planes, each tailored to the souls that reside there. The Tharameni and their devout protectors must fend off the evil of Idinhelieth, the harbinger of disease and pestilence, before his rot corrupts even the most pure of places. Should they fail, the afterlife would become a torturous hell for all.<\/p>\n<\/div>\n<figure class=\"tmq-reveal\"><a class=\"tmq-reveal-card\" href=\"https:\/\/miniquasar.com\/campaigns\/hell-at-heavens-gate\/\"><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\/hell-gate-release-tmq.png\" alt=\"Hell at Heaven's Gate set\"><img decoding=\"async\" class=\"tmq-reveal-b\" loading=\"eager\" width=\"420\" height=\"420\" src=\"https:\/\/miniquasar.com\/wp-content\/uploads\/2026\/09\/hell-gate-set-minis.png\" alt=\"Hell at Heaven's Gate miniatures\"><\/span><\/a><\/figure>\n<div class=\"tmq-reveal-head\"><span class=\"kicker\">The campaign<\/span><\/p>\n<p>In Divine Gambit Pt III the party awakes in the blackness of the void, after having suffered an untimely end. They discover, however, that the sanctuary of heaven has been breached by the forces of evil, who are slowly destroying the fabric of the afterlife. They must band together with other survivors to drive the forces of the abyss out, restoring order to Syelden and the infinite planes that exist within it.<\/p>\n<\/div>\n<figure class=\"tmq-reveal\"><a class=\"tmq-reveal-card\" href=\"https:\/\/miniquasar.com\/campaigns\/hell-at-heavens-gate\/\"><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\/hell-gate-campaign-cover.png\" alt=\"Hell at Heaven's Gate campaign\"><img decoding=\"async\" class=\"tmq-reveal-b\" loading=\"eager\" width=\"420\" height=\"420\" src=\"https:\/\/miniquasar.com\/wp-content\/uploads\/2026\/09\/hell-open-book.png\" alt=\"Hell at Heaven's Gate campaign book\"><\/span><\/a><\/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  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  var $form = $(\"form.variations_form\");\n  if ($form.length) {\n    var variations = $form.data(\"product_variations\");\n    if (!variations) {\n      variations = [];\n    }\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  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. Large 50mm base. Made in Canada.<\/p>\n<p class=\"tmq-chips\"><span>Humanoid<\/span><span>Celestial<\/span><span>Large<\/span><\/p>\n<div class=\"tmq-set\"><span class=\"label\">Campaign set<\/span><\/p>\n<h3>Hell at Heaven&#8217;s Gate<\/h3>\n<p><a class=\"tmq-set-link\" href=\"https:\/\/miniquasar.com\/campaigns\/hell-at-heavens-gate\/\">View the set<\/a><\/div>\n","protected":false},"featured_media":2146,"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":[110],"product_tag":[],"class_list":["post-2135","product","type-product","status-publish","has-post-thumbnail","product_cat-hell-at-heavens-gate","pa_class-fighter","pa_class-paladin","pa_gender-male","pa_mini-type-humanoid","pa_race-celestial","pa_race-human","pa_set-hell-at-heavens-gate","pa_size-large-50mm","pa_tabletop-size-large","first","instock","taxable","shipping-taxable","purchasable","product-type-variable","has-default-attributes","entry","content-bg","loop-entry"],"_links":{"self":[{"href":"https:\/\/miniquasar.com\/us\/wp-json\/wp\/v2\/product\/2135","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=2135"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/miniquasar.com\/us\/wp-json\/wp\/v2\/media\/2146"}],"wp:attachment":[{"href":"https:\/\/miniquasar.com\/us\/wp-json\/wp\/v2\/media?parent=2135"}],"wp:term":[{"taxonomy":"product_brand","embeddable":true,"href":"https:\/\/miniquasar.com\/us\/wp-json\/wp\/v2\/product_brand?post=2135"},{"taxonomy":"product_cat","embeddable":true,"href":"https:\/\/miniquasar.com\/us\/wp-json\/wp\/v2\/product_cat?post=2135"},{"taxonomy":"product_tag","embeddable":true,"href":"https:\/\/miniquasar.com\/us\/wp-json\/wp\/v2\/product_tag?post=2135"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}