<!DOCTYPE html>
<html lang="en-US">
<head >
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' />
<!-- Google tag (gtag.js) consent mode dataLayer added by Site Kit -->
<script id="google_gtagjs-js-consent-mode-data-layer">
window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}
gtag('consent', 'default', {"ad_personalization":"denied","ad_storage":"denied","ad_user_data":"denied","analytics_storage":"denied","functionality_storage":"denied","security_storage":"denied","personalization_storage":"denied","region":["AT","BE","BG","CH","CY","CZ","DE","DK","EE","ES","FI","FR","GB","GR","HR","HU","IE","IS","IT","LI","LT","LU","LV","MT","NL","NO","PL","PT","RO","SE","SI","SK"],"wait_for_update":500});
window._googlesitekitConsentCategoryMap = {"statistics":["analytics_storage"],"marketing":["ad_storage","ad_user_data","ad_personalization"],"functional":["functionality_storage","security_storage"],"preferences":["personalization_storage"]};
window._googlesitekitConsents = {"ad_personalization":"denied","ad_storage":"denied","ad_user_data":"denied","analytics_storage":"denied","functionality_storage":"denied","security_storage":"denied","personalization_storage":"denied","region":["AT","BE","BG","CH","CY","CZ","DE","DK","EE","ES","FI","FR","GB","GR","HR","HU","IE","IS","IT","LI","LT","LU","LV","MT","NL","NO","PL","PT","RO","SE","SI","SK"],"wait_for_update":500};
</script>
<!-- End Google tag (gtag.js) consent mode dataLayer added by Site Kit -->

	<!-- This site is optimized with the Yoast SEO plugin v20.5 - https://yoast.com/wordpress/plugins/seo/ -->
	<title>cros.land - just figuring things out</title>
	<meta name="description" content="just figuring things out" />
	<link rel="canonical" href="https://cros.land/" />
	<link rel="next" href="https://cros.land/page/2/" />
	<meta property="og:locale" content="en_US" />
	<meta property="og:type" content="website" />
	<meta property="og:title" content="cros.land" />
	<meta property="og:description" content="Kenji Crosland&#039;s Blog: Thoughts about personal growth, meditation and mindfulness, the creative process, career development, and technology." />
	<meta property="og:url" content="https://cros.land/" />
	<meta property="og:site_name" content="cros.land" />
	<meta property="og:image" content="https://cros.land/wp-content/uploads/2014/07/croslandcube.jpeg" />
	<meta name="twitter:card" content="summary_large_image" />
	<meta name="twitter:site" content="@kenjicrosland" />
	<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"CollectionPage","@id":"https://cros.land/","url":"https://cros.land/","name":"cros.land - just figuring things out","isPartOf":{"@id":"https://cros.land/#website"},"about":{"@id":"https://cros.land/#/schema/person/9884a3398e36ba19d63d90c61de997ea"},"description":"just figuring things out","breadcrumb":{"@id":"https://cros.land/#breadcrumb"},"inLanguage":"en-US"},{"@type":"BreadcrumbList","@id":"https://cros.land/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home"}]},{"@type":"WebSite","@id":"https://cros.land/#website","url":"https://cros.land/","name":"cros.land","description":"just figuring things out","publisher":{"@id":"https://cros.land/#/schema/person/9884a3398e36ba19d63d90c61de997ea"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://cros.land/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https://cros.land/#/schema/person/9884a3398e36ba19d63d90c61de997ea","name":"Kenji","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https://cros.land/#/schema/person/image/","url":"https://cros.land/wp-content/uploads/2022/10/kenji-crosland-profile.jpeg","contentUrl":"https://cros.land/wp-content/uploads/2022/10/kenji-crosland-profile.jpeg","width":2048,"height":1364,"caption":"Kenji"},"logo":{"@id":"https://cros.land/#/schema/person/image/"},"sameAs":["https://www.facebook.com/kenji.crosland","https://twitter.com/http://www.twitter.com/kenjicrosland","http://admin"]}]}</script>
	<!-- / Yoast SEO plugin. -->


<link rel='dns-prefetch' href='//www.googletagmanager.com' />
<link rel='dns-prefetch' href='//pagead2.googlesyndication.com' />
<link rel="alternate" type="application/rss+xml" title="cros.land &raquo; Feed" href="https://cros.land/feed/" />
<link rel="alternate" type="application/rss+xml" title="cros.land &raquo; Comments Feed" href="https://cros.land/comments/feed/" />
<style id="wp-img-auto-sizes-contain-inline-css">
img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
/*# sourceURL=wp-img-auto-sizes-contain-inline-css */
</style>
<link rel='stylesheet' id='genesis-blocks-style-css-css' href='https://cros.land/wp-content/plugins/genesis-blocks/dist/style-blocks.build.css?ver=1770321915' media='all' />
<link rel='stylesheet' id='genesis-sample-css' href='https://cros.land/wp-content/themes/genesis-sample/style.css?ver=3.0.1' media='all' />
<style id="wp-emoji-styles-inline-css">

	img.wp-smiley, img.emoji {
		display: inline !important;
		border: none !important;
		box-shadow: none !important;
		height: 1em !important;
		width: 1em !important;
		margin: 0 0.07em !important;
		vertical-align: -0.1em !important;
		background: none !important;
		padding: 0 !important;
	}
/*# sourceURL=wp-emoji-styles-inline-css */
</style>
<style id="wp-block-library-inline-css">
:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style*=border-color]){border-style:solid}html :where([style*=border-top-color]){border-top-style:solid}html :where([style*=border-right-color]){border-right-style:solid}html :where([style*=border-bottom-color]){border-bottom-style:solid}html :where([style*=border-left-color]){border-left-style:solid}html :where([style*=border-width]){border-style:solid}html :where([style*=border-top-width]){border-top-style:solid}html :where([style*=border-right-width]){border-right-style:solid}html :where([style*=border-bottom-width]){border-bottom-style:solid}html :where([style*=border-left-width]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}}

/*# sourceURL=/wp-includes/css/dist/block-library/common.min.css */
</style>
<style id="wp-block-heading-inline-css">
h1:where(.wp-block-heading).has-background,h2:where(.wp-block-heading).has-background,h3:where(.wp-block-heading).has-background,h4:where(.wp-block-heading).has-background,h5:where(.wp-block-heading).has-background,h6:where(.wp-block-heading).has-background{padding:1.25em 2.375em}h1.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h1.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h2.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h2.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h3.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h3.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h4.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h4.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h5.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h5.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h6.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h6.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]){rotate:180deg}
/*# sourceURL=https://cros.land/wp-includes/blocks/heading/style.min.css */
</style>
<style id="wp-block-image-inline-css">
.wp-block-image>a,.wp-block-image>figure>a{display:inline-block}.wp-block-image img{box-sizing:border-box;height:auto;max-width:100%;vertical-align:bottom}@media not (prefers-reduced-motion){.wp-block-image img.hide{visibility:hidden}.wp-block-image img.show{animation:show-content-image .4s}}.wp-block-image[style*=border-radius] img,.wp-block-image[style*=border-radius]>a{border-radius:inherit}.wp-block-image.has-custom-border img{box-sizing:border-box}.wp-block-image.aligncenter{text-align:center}.wp-block-image.alignfull>a,.wp-block-image.alignwide>a{width:100%}.wp-block-image.alignfull img,.wp-block-image.alignwide img{height:auto;width:100%}.wp-block-image .aligncenter,.wp-block-image .alignleft,.wp-block-image .alignright,.wp-block-image.aligncenter,.wp-block-image.alignleft,.wp-block-image.alignright{display:table}.wp-block-image .aligncenter>figcaption,.wp-block-image .alignleft>figcaption,.wp-block-image .alignright>figcaption,.wp-block-image.aligncenter>figcaption,.wp-block-image.alignleft>figcaption,.wp-block-image.alignright>figcaption{caption-side:bottom;display:table-caption}.wp-block-image .alignleft{float:left;margin:.5em 1em .5em 0}.wp-block-image .alignright{float:right;margin:.5em 0 .5em 1em}.wp-block-image .aligncenter{margin-left:auto;margin-right:auto}.wp-block-image :where(figcaption){margin-bottom:1em;margin-top:.5em}.wp-block-image.is-style-circle-mask img{border-radius:9999px}@supports ((-webkit-mask-image:none) or (mask-image:none)) or (-webkit-mask-image:none){.wp-block-image.is-style-circle-mask img{border-radius:0;-webkit-mask-image:url('data:image/svg+xml;utf8,<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"><circle cx="50" cy="50" r="50"/></svg>');mask-image:url('data:image/svg+xml;utf8,<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"><circle cx="50" cy="50" r="50"/></svg>');mask-mode:alpha;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}}:root :where(.wp-block-image.is-style-rounded img,.wp-block-image .is-style-rounded img){border-radius:9999px}.wp-block-image figure{margin:0}.wp-lightbox-container{display:flex;flex-direction:column;position:relative}.wp-lightbox-container img{cursor:zoom-in}.wp-lightbox-container img:hover+button{opacity:1}.wp-lightbox-container button{align-items:center;backdrop-filter:blur(16px) saturate(180%);background-color:#5a5a5a40;border:none;border-radius:4px;cursor:zoom-in;display:flex;height:20px;justify-content:center;opacity:0;padding:0;position:absolute;right:16px;text-align:center;top:16px;width:20px;z-index:100}@media not (prefers-reduced-motion){.wp-lightbox-container button{transition:opacity .2s ease}}.wp-lightbox-container button:focus-visible{outline:3px auto #5a5a5a40;outline:3px auto -webkit-focus-ring-color;outline-offset:3px}.wp-lightbox-container button:hover{cursor:pointer;opacity:1}.wp-lightbox-container button:focus{opacity:1}.wp-lightbox-container button:focus,.wp-lightbox-container button:hover,.wp-lightbox-container button:not(:hover):not(:active):not(.has-background){background-color:#5a5a5a40;border:none}.wp-lightbox-overlay{box-sizing:border-box;cursor:zoom-out;height:100vh;left:0;overflow:hidden;position:fixed;top:0;visibility:hidden;width:100%;z-index:100000}.wp-lightbox-overlay .wp-lightbox-close-button{align-items:center;cursor:pointer;display:flex;font-family:inherit;gap:8px;justify-content:center;line-height:1;min-height:40px;min-width:40px;padding:0 4px;position:absolute;right:calc(env(safe-area-inset-right) + 16px);top:calc(env(safe-area-inset-top) + 16px);z-index:5000000}.wp-lightbox-overlay .wp-lightbox-close-button:focus,.wp-lightbox-overlay .wp-lightbox-close-button:hover,.wp-lightbox-overlay .wp-lightbox-close-button:not(:hover):not(:active):not(.has-background){background:none;border:none}.wp-lightbox-overlay .wp-lightbox-close-button:has(.wp-lightbox-close-text:not([hidden])) .wp-lightbox-close-icon svg{height:1em;width:1em}.wp-lightbox-overlay .wp-lightbox-close-icon svg{display:block}.wp-lightbox-overlay .wp-lightbox-navigation-button-next,.wp-lightbox-overlay .wp-lightbox-navigation-button-prev{align-items:center;bottom:16px;cursor:pointer;display:flex;font-family:inherit;gap:4px;justify-content:center;line-height:1;min-height:40px;min-width:40px;padding:0 8px;position:absolute;z-index:2000002}.wp-lightbox-overlay .wp-lightbox-navigation-button-next[hidden],.wp-lightbox-overlay .wp-lightbox-navigation-button-prev[hidden]{display:none}@media (min-width:960px){.wp-lightbox-overlay .wp-lightbox-navigation-button-next,.wp-lightbox-overlay .wp-lightbox-navigation-button-prev{bottom:50%;transform:translateY(-50%)}}.wp-lightbox-overlay .wp-lightbox-navigation-button-next:focus,.wp-lightbox-overlay .wp-lightbox-navigation-button-next:hover,.wp-lightbox-overlay .wp-lightbox-navigation-button-next:not(:hover):not(:active):not(.has-background),.wp-lightbox-overlay .wp-lightbox-navigation-button-prev:focus,.wp-lightbox-overlay .wp-lightbox-navigation-button-prev:hover,.wp-lightbox-overlay .wp-lightbox-navigation-button-prev:not(:hover):not(:active):not(.has-background){background:none;border:none;padding:0 8px}.wp-lightbox-overlay .wp-lightbox-navigation-button-next:has(.wp-lightbox-navigation-text:not([hidden])) .wp-lightbox-navigation-icon svg,.wp-lightbox-overlay .wp-lightbox-navigation-button-prev:has(.wp-lightbox-navigation-text:not([hidden])) .wp-lightbox-navigation-icon svg{display:block;height:1.5em;width:1.5em}.wp-lightbox-overlay .wp-lightbox-navigation-button-prev{left:calc(env(safe-area-inset-left) + 16px)}.wp-lightbox-overlay .wp-lightbox-navigation-button-next{right:calc(env(safe-area-inset-right) + 16px)}.wp-lightbox-overlay .wp-lightbox-navigation-icon svg{vertical-align:middle}.wp-lightbox-overlay .lightbox-image-container{height:var(--wp--lightbox-container-height);left:50%;overflow:hidden;position:absolute;top:50%;transform:translate(-50%,-50%);transform-origin:top left;width:var(--wp--lightbox-container-width);z-index:2000001}.wp-lightbox-overlay .wp-block-image{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;margin:0;position:relative;transform-origin:0 0;width:100%;z-index:3000000}.wp-lightbox-overlay .wp-block-image img{height:var(--wp--lightbox-image-height);min-height:var(--wp--lightbox-image-height);min-width:var(--wp--lightbox-image-width);width:var(--wp--lightbox-image-width)}.wp-lightbox-overlay .wp-block-image figcaption{display:none}.wp-lightbox-overlay button{background:none;border:none}.wp-lightbox-overlay .scrim{background-color:#fff;height:100%;opacity:.9;position:absolute;width:100%;z-index:2000000}.wp-lightbox-overlay.active{visibility:visible}@media not (prefers-reduced-motion){.wp-lightbox-overlay.active{animation:turn-on-visibility .25s both}.wp-lightbox-overlay.active img{animation:turn-on-visibility .35s both}.wp-lightbox-overlay.show-closing-animation:not(.active){animation:turn-off-visibility .35s both}.wp-lightbox-overlay.show-closing-animation:not(.active) img{animation:turn-off-visibility .25s both}.wp-lightbox-overlay.zoom.active{animation:none;opacity:1;visibility:visible}.wp-lightbox-overlay.zoom.active .lightbox-image-container{animation:lightbox-zoom-in .4s}.wp-lightbox-overlay.zoom.active .lightbox-image-container img{animation:none}.wp-lightbox-overlay.zoom.active .scrim{animation:turn-on-visibility .4s forwards}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active){animation:none}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active) .lightbox-image-container{animation:lightbox-zoom-out .4s}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active) .lightbox-image-container img{animation:none}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active) .scrim{animation:turn-off-visibility .4s forwards}}@keyframes show-content-image{0%{visibility:hidden}99%{visibility:hidden}to{visibility:visible}}@keyframes turn-on-visibility{0%{opacity:0}to{opacity:1}}@keyframes turn-off-visibility{0%{opacity:1;visibility:visible}99%{opacity:0;visibility:visible}to{opacity:0;visibility:hidden}}@keyframes lightbox-zoom-in{0%{transform:translate(calc((-100vw + var(--wp--lightbox-scrollbar-width))/2 + var(--wp--lightbox-initial-left-position)),calc(-50vh + var(--wp--lightbox-initial-top-position))) scale(var(--wp--lightbox-scale))}to{transform:translate(-50%,-50%) scale(1)}}@keyframes lightbox-zoom-out{0%{transform:translate(-50%,-50%) scale(1);visibility:visible}99%{visibility:visible}to{transform:translate(calc((-100vw + var(--wp--lightbox-scrollbar-width))/2 + var(--wp--lightbox-initial-left-position)),calc(-50vh + var(--wp--lightbox-initial-top-position))) scale(var(--wp--lightbox-scale));visibility:hidden}}
/*# sourceURL=https://cros.land/wp-includes/blocks/image/style.min.css */
</style>
<style id="wp-block-list-inline-css">
ol,ul{box-sizing:border-box}:root :where(.wp-block-list.has-background){padding:1.25em 2.375em}
/*# sourceURL=https://cros.land/wp-includes/blocks/list/style.min.css */
</style>
<style id="wp-block-paragraph-inline-css">
.is-small-text{font-size:.875em}.is-regular-text{font-size:1em}.is-large-text{font-size:2.25em}.is-larger-text{font-size:3em}.has-drop-cap:not(:focus):first-letter{float:left;font-size:8.4em;font-style:normal;font-weight:100;line-height:.68;margin:.05em .1em 0 0;text-transform:uppercase}body.rtl .has-drop-cap:not(:focus):first-letter{float:none;margin-left:.1em}p.has-drop-cap.has-background{overflow:hidden}:root :where(p.has-background){padding:1.25em 2.375em}:where(p.has-text-color:not(.has-link-color)) a{color:inherit}p.has-text-align-left[style*="writing-mode:vertical-lr"],p.has-text-align-right[style*="writing-mode:vertical-rl"]{rotate:180deg}
/*# sourceURL=https://cros.land/wp-includes/blocks/paragraph/style.min.css */
</style>
<style id="wp-block-embed-inline-css">
.wp-block-embed.alignleft,.wp-block-embed.alignright,.wp-block[data-align=left]>[data-type="core/embed"],.wp-block[data-align=right]>[data-type="core/embed"]{max-width:360px;width:100%}.wp-block-embed.alignleft .wp-block-embed__wrapper,.wp-block-embed.alignright .wp-block-embed__wrapper,.wp-block[data-align=left]>[data-type="core/embed"] .wp-block-embed__wrapper,.wp-block[data-align=right]>[data-type="core/embed"] .wp-block-embed__wrapper{min-width:280px}.wp-block-cover .wp-block-embed{min-height:240px;min-width:320px}.wp-block-group.is-layout-flex .wp-block-embed{flex:1 1 0%;min-width:0}.wp-block-embed{overflow-wrap:break-word}.wp-block-embed :where(figcaption){margin-bottom:1em;margin-top:.5em}.wp-block-embed iframe{max-width:100%}.wp-block-embed__wrapper{position:relative}.wp-embed-responsive .wp-has-aspect-ratio .wp-block-embed__wrapper:before{content:"";display:block;padding-top:50%}.wp-embed-responsive .wp-has-aspect-ratio iframe{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}.wp-embed-responsive .wp-embed-aspect-21-9 .wp-block-embed__wrapper:before{padding-top:42.85%}.wp-embed-responsive .wp-embed-aspect-18-9 .wp-block-embed__wrapper:before{padding-top:50%}.wp-embed-responsive .wp-embed-aspect-16-9 .wp-block-embed__wrapper:before{padding-top:56.25%}.wp-embed-responsive .wp-embed-aspect-4-3 .wp-block-embed__wrapper:before{padding-top:75%}.wp-embed-responsive .wp-embed-aspect-1-1 .wp-block-embed__wrapper:before{padding-top:100%}.wp-embed-responsive .wp-embed-aspect-9-16 .wp-block-embed__wrapper:before{padding-top:177.77%}.wp-embed-responsive .wp-embed-aspect-1-2 .wp-block-embed__wrapper:before{padding-top:200%}
/*# sourceURL=https://cros.land/wp-includes/blocks/embed/style.min.css */
</style>
<style id="wp-block-quote-inline-css">
.wp-block-quote{box-sizing:border-box;overflow-wrap:break-word}.wp-block-quote.is-large:where(:not(.is-style-plain)),.wp-block-quote.is-style-large:where(:not(.is-style-plain)){margin-bottom:1em;padding:0 1em}.wp-block-quote.is-large:where(:not(.is-style-plain)) p,.wp-block-quote.is-style-large:where(:not(.is-style-plain)) p{font-size:1.5em;font-style:italic;line-height:1.6}.wp-block-quote.is-large:where(:not(.is-style-plain)) cite,.wp-block-quote.is-large:where(:not(.is-style-plain)) footer,.wp-block-quote.is-style-large:where(:not(.is-style-plain)) cite,.wp-block-quote.is-style-large:where(:not(.is-style-plain)) footer{font-size:1.125em;text-align:right}.wp-block-quote>cite{display:block}
/*# sourceURL=https://cros.land/wp-includes/blocks/quote/style.min.css */
</style>

<style id="classic-theme-styles-inline-css">
/*! This file is auto-generated */
.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
/*# sourceURL=/wp-includes/css/classic-themes.min.css */
</style>

<style id="global-styles-inline-css">
:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--color--theme-primary: #0073e5;--wp--preset--color--theme-secondary: #0073e5;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,0) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 12px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 20px;--wp--preset--font-size--x-large: 42px;--wp--preset--font-size--normal: 18px;--wp--preset--font-size--larger: 24px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}:where(body) { margin: 0; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-theme-primary-color{color: var(--wp--preset--color--theme-primary) !important;}.has-theme-secondary-color{color: var(--wp--preset--color--theme-secondary) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-theme-primary-background-color{background-color: var(--wp--preset--color--theme-primary) !important;}.has-theme-secondary-background-color{background-color: var(--wp--preset--color--theme-secondary) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-theme-primary-border-color{border-color: var(--wp--preset--color--theme-primary) !important;}.has-theme-secondary-border-color{border-color: var(--wp--preset--color--theme-secondary) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}.has-normal-font-size{font-size: var(--wp--preset--font-size--normal) !important;}.has-larger-font-size{font-size: var(--wp--preset--font-size--larger) !important;}
/*# sourceURL=global-styles-inline-css */
</style>

<link rel='stylesheet' id='contact-form-7-css' href='https://cros.land/wp-content/plugins/contact-form-7/includes/css/styles.css?ver=6.1.1' media='all' />
<link rel='stylesheet' id='patreon-wordpress-css-css' href='https://cros.land/wp-content/plugins/patreon-connect/assets/css/app.css?ver=7.0.4' media='all' />
<link rel='stylesheet' id='dashicons-css' href='https://cros.land/wp-includes/css/dashicons.min.css?ver=7.0.4' media='all' />
<link rel='stylesheet' id='genesis-sample-gutenberg-css' href='https://cros.land/wp-content/themes/genesis-sample/lib/gutenberg/front-end.css?ver=3.0.1' media='all' />
<style id="genesis-sample-gutenberg-inline-css">
.ab-block-post-grid .ab-post-grid-items h2 a:hover {
	color: #0073e5;
}

.site-container .wp-block-button .wp-block-button__link {
	background-color: #0073e5;
}

.wp-block-button .wp-block-button__link:not(.has-background),
.wp-block-button .wp-block-button__link:not(.has-background):focus,
.wp-block-button .wp-block-button__link:not(.has-background):hover {
	color: #ffffff;
}

.site-container .wp-block-button.is-style-outline .wp-block-button__link {
	color: #0073e5;
}

.site-container .wp-block-button.is-style-outline .wp-block-button__link:focus,
.site-container .wp-block-button.is-style-outline .wp-block-button__link:hover {
	color: #2396ff;
}		.site-container .has-small-font-size {
			font-size: 12px;
		}		.site-container .has-normal-font-size {
			font-size: 18px;
		}		.site-container .has-large-font-size {
			font-size: 20px;
		}		.site-container .has-larger-font-size {
			font-size: 24px;
		}		.site-container .has-theme-primary-color,
		.site-container .wp-block-button .wp-block-button__link.has-theme-primary-color,
		.site-container .wp-block-button.is-style-outline .wp-block-button__link.has-theme-primary-color {
			color: #0073e5;
		}

		.site-container .has-theme-primary-background-color,
		.site-container .wp-block-button .wp-block-button__link.has-theme-primary-background-color,
		.site-container .wp-block-pullquote.is-style-solid-color.has-theme-primary-background-color {
			background-color: #0073e5;
		}		.site-container .has-theme-secondary-color,
		.site-container .wp-block-button .wp-block-button__link.has-theme-secondary-color,
		.site-container .wp-block-button.is-style-outline .wp-block-button__link.has-theme-secondary-color {
			color: #0073e5;
		}

		.site-container .has-theme-secondary-background-color,
		.site-container .wp-block-button .wp-block-button__link.has-theme-secondary-background-color,
		.site-container .wp-block-pullquote.is-style-solid-color.has-theme-secondary-background-color {
			background-color: #0073e5;
		}
/*# sourceURL=genesis-sample-gutenberg-inline-css */
</style>
<link rel='stylesheet' id='simple-social-icons-font-css' href='https://cros.land/wp-content/plugins/simple-social-icons/css/style.css?ver=3.0.2' media='all' />
<script id="jquery-core-js" src="https://cros.land/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
<script id="jquery-migrate-js" src="https://cros.land/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1"></script>

<!-- Google tag (gtag.js) snippet added by Site Kit -->
<!-- Google Analytics snippet added by Site Kit -->
<script id="google_gtagjs-js" src="https://www.googletagmanager.com/gtag/js?id=GT-NFJBG48" async></script>
<script id="google_gtagjs-js-after">
window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}
gtag("set","linker",{"domains":["cros.land"]});
gtag("js", new Date());
gtag("set", "developer_id.dZTNiMT", true);
gtag("config", "GT-NFJBG48");
//# sourceURL=google_gtagjs-js-after
</script>
<link rel="https://api.w.org/" href="https://cros.land/wp-json/" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://cros.land/xmlrpc.php?rsd" />
<meta name="generator" content="Site Kit by Google 1.186.0" /><style>@font-face {
            font-family: 'Libre Franklin Extra Bold';
            src: url('https://cros.land/wp-content/plugins/patreon-connect/assets/fonts/librefranklin-extrabold-webfont.woff2') format('woff2'),
                 url('https://cros.land/wp-content/plugins/patreon-connect/assets/fonts/librefranklin-extrabold-webfont.woff') format('woff');
            font-weight: bold;
            }</style><link rel='stylesheet' type='text/css' href='https://cros.land/wp-content/plugins/subscription-options/suboptions.css' />
<link rel="pingback" href="https://cros.land/xmlrpc.php" />

<!-- Google AdSense meta tags added by Site Kit -->
<meta name="google-adsense-platform-account" content="ca-host-pub-2644536267352236">
<meta name="google-adsense-platform-domain" content="sitekit.withgoogle.com">
<!-- End Google AdSense meta tags added by Site Kit -->

<!-- Google Tag Manager snippet added by Site Kit -->
<script>
			( function( w, d, s, l, i ) {
				w[l] = w[l] || [];
				w[l].push( {'gtm.start': new Date().getTime(), event: 'gtm.js'} );
				var f = d.getElementsByTagName( s )[0],
					j = d.createElement( s ), dl = l != 'dataLayer' ? '&l=' + l : '';
				j.async = true;
				j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
				f.parentNode.insertBefore( j, f );
			} )( window, document, 'script', 'dataLayer', 'GTM-T65WXX6B' );
			
</script>

<!-- End Google Tag Manager snippet added by Site Kit -->

<!-- Google AdSense snippet added by Site Kit -->
<script async crossorigin="anonymous" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8082592059032029&#038;host=ca-host-pub-2644536267352236"></script>

<!-- End Google AdSense snippet added by Site Kit -->

	<!-- Clean Archives Reloaded v3.2.0 | http://www.viper007bond.com/wordpress-plugins/clean-archives-reloaded/ -->
	<style type="text/css">.car-collapse .car-yearmonth { cursor: s-resize; } </style>
	<script type="text/javascript">
		/* <![CDATA[ */
			jQuery(document).ready(function() {
				jQuery('.car-collapse').find('.car-monthlisting').hide();
				jQuery('.car-collapse').find('.car-monthlisting:first').show();
				jQuery('.car-collapse').find('.car-yearmonth').click(function() {
					jQuery(this).next('ul').slideToggle('fast');
				});
				jQuery('.car-collapse').find('.car-toggler').click(function() {
					if ( 'Expand All' == jQuery(this).text() ) {
						jQuery(this).parent('.car-container').find('.car-monthlisting').show();
						jQuery(this).text('Collapse All');
					}
					else {
						jQuery(this).parent('.car-container').find('.car-monthlisting').hide();
						jQuery(this).text('Expand All');
					}
					return false;
				});
			});
		/* ]]> */
	</script>

<link rel="icon" href="https://cros.land/wp-content/uploads/2026/01/favicon-16x16-1.png" sizes="32x32" />
<link rel="icon" href="https://cros.land/wp-content/uploads/2026/01/favicon-16x16-1.png" sizes="192x192" />
<link rel="apple-touch-icon" href="https://cros.land/wp-content/uploads/2026/01/favicon-16x16-1.png" />
<meta name="msapplication-TileImage" content="https://cros.land/wp-content/uploads/2026/01/favicon-16x16-1.png" />
</head>
<body class="home blog wp-embed-responsive wp-theme-genesis wp-child-theme-genesis-sample header-full-width content-sidebar genesis-breadcrumbs-hidden genesis-footer-widgets-hidden">		<!-- Google Tag Manager (noscript) snippet added by Site Kit -->
		<noscript>
			<iframe src="https://www.googletagmanager.com/ns.html?id=GTM-T65WXX6B" height="0" width="0" style="display:none;visibility:hidden"></iframe>
		</noscript>
		<!-- End Google Tag Manager (noscript) snippet added by Site Kit -->
		<div class="site-container"><ul class="genesis-skip-link"><li><a href="#genesis-nav-primary" class="screen-reader-shortcut"> Skip to primary navigation</a></li><li><a href="#genesis-content" class="screen-reader-shortcut"> Skip to main content</a></li><li><a href="#genesis-sidebar-primary" class="screen-reader-shortcut"> Skip to primary sidebar</a></li></ul><header class="site-header"><div class="wrap"><div class="title-area"><h1 class="site-title"><a href="https://cros.land/">cros.land</a></h1><p class="site-description">just figuring things out</p></div><nav class="nav-primary" aria-label="Main" id="genesis-nav-primary"><div class="wrap"><ul id="menu-header-menu" class="menu genesis-nav-menu menu-primary js-superfish"><li id="menu-item-3284" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item current_page_item menu-item-home menu-item-3284"><a href="https://cros.land" aria-current="page"><span >Home</span></a></li>
<li id="menu-item-4278" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-4278"><a href="https://cros.land/kenjis-dungeon-master-tools/"><span >Kenji&#8217;s Dungeon Master Tools</span></a></li>
<li id="menu-item-3558" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3558"><a href="https://cros.land/a-dms-guide-to-lost-mines-of-phandelver/"><span >Lost Mines of Phandelver Guide</span></a></li>
<li id="menu-item-3285" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3285"><a href="https://cros.land/contact-me/"><span >Contact Me</span></a></li>
<li id="menu-item-3286" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3286"><a href="https://cros.land/archives/"><span >Archives</span></a></li>
</ul></div></nav></div></header><div class="site-inner"><div class="content-sidebar-wrap"><main class="content" id="genesis-content"><article class="post-4345 post type-post status-publish format-standard category-uncategorized entry" aria-label="2024 rules support, and the rebuild underneath it"><header class="entry-header"><h2 class="entry-title"><a class="entry-title-link" rel="bookmark" href="https://cros.land/2026/07/2024-rules-support-and-the-rebuild-underneath-it/">2024 rules support, and the rebuild underneath it</a></h2>
<p class="entry-meta"><time class="entry-time">July 30, 2026</time> by <span class="entry-author"><a href="https://cros.land/author/admin/" class="entry-author-link" rel="author"><span class="entry-author-name">Kenji</span></a></span> <span class="entry-comments-link"><a href="https://cros.land/2026/07/2024-rules-support-and-the-rebuild-underneath-it/#respond">Leave a Comment</a></span> </p></header><div class="entry-content">
<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="660" src="https://cros.land/wp-content/uploads/2026/07/image-1024x660.png" alt="" class="wp-image-4346" srcset="https://cros.land/wp-content/uploads/2026/07/image-1024x660.png 1024w, https://cros.land/wp-content/uploads/2026/07/image-300x193.png 300w, https://cros.land/wp-content/uploads/2026/07/image-768x495.png 768w, https://cros.land/wp-content/uploads/2026/07/image-1536x990.png 1536w, https://cros.land/wp-content/uploads/2026/07/image.png 1802w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">The <a href="https://cros.land/ai-powered-dnd-5e-monster-statblock-generator/">statblock generator</a> now works in both editions of 5e, and there is a new tool for converting the monsters you already have.</p>



<p class="wp-block-paragraph"><strong>Generate in 2014 or 2024 format.</strong> One switch, any challenge rating, and the output uses the right layout and phrasing for its edition. The 2024 cards have the official structure: merged immunities, the MOD and SAVE grid, saving throws written as Failure and Success.</p>



<p class="wp-block-paragraph"><strong>Pick a combat role, or let it read your concept.</strong> Brute, defender, skirmisher, artillery, controller, lurker, support, and swarm. The role changes the actual math, so a lurker and a brute at the same CR are meaningfully different creatures.</p>



<p class="wp-block-paragraph"><strong>Flip any saved monster between editions.</strong> Tabs on the statblock card switch between printings once both exist. Converting rewrites the wording only. Every number stays exactly where it was.</p>



<p class="wp-block-paragraph"><strong>Convert statblocks you already have.</strong> The <a href="https://cros.land/dnd-5e-statblock-converter-2014-to-2024/">statblock converter</a> is a new tool: paste a monster in, and it works out which edition it came from and converts it. Conversions count as generations against the daily limit rather than sitting behind a separate gate.</p>



<p class="wp-block-paragraph"><strong>Export in both editions.</strong> Homebrewery markdown in the official 2024 frame style, Foundry VTT, and Improved Initiative. The dungeon, NPC, and encounter tools also generate statblocks in whichever edition you prefer.</p>



<h2 class="wp-block-heading">The library I built by hand</h2>



<p class="wp-block-paragraph">For most of this tool&#8217;s life, the monster generator worked from a library I built by hand.</p>



<p class="wp-block-paragraph">I went through the SRD one monster at a time and had ChatGPT strip each one down to its mechanics. Take a creature, remove everything that makes it that creature, and keep what is left: the armor class, the hit points, the attack routine, the number and shape of its abilities. Do that across the whole book and you end up with a library of generic templates sorted by challenge rating, which I labeled with the only three distinctions I bothered to draw at the time: stronger defense, stronger offense, and balanced.</p>



<p class="wp-block-paragraph">Generating a monster meant picking a template that matched what you asked for and having the model reskin it. The AI never decided the numbers then either. They came from a template, which came from a creature a professional had already balanced, and that is why the output was mechanically sound.</p>



<p class="wp-block-paragraph">The limitation was never the numbers. It was that every monster you got was shaped like whatever template came up. Ability slots were inherited along with the math, so if the template underneath happened to come from something with a breath weapon and an aura, you got a breath weapon and an aura, however they were dressed. The model was adapting abilities rather than inventing them. With a finite library and three labels, you eventually start seeing the same creatures wearing different coats.</p>



<p class="wp-block-paragraph">Adding the 2024 rules is what made this a decision I could not put off. Every template in that library came out of the 2014 SRD. Supporting a second edition properly meant either doing the whole stripping exercise again against a different book, or building something that could produce a template on demand.</p>



<p class="wp-block-paragraph">So I took the leap I had been avoiding. Instead of drawing a template from a shelf, compute one.</p>



<h2 class="wp-block-heading">What a chassis is</h2>



<p class="wp-block-paragraph">The core of the new generator is what I ended up calling a chassis. Give it a challenge rating and a combat role, and it computes every number in the statblock before the AI is involved at all, along with a plan for what kinds of abilities the creature should have. Not which abilities. What kinds: a signature attack here, a defensive trait there, one nova effect at this damage ceiling, a reaction if the role wants one. Slots to be filled rather than abilities to be reskinned.</p>



<p class="wp-block-paragraph">The math comes from the same place a designer&#8217;s does. The Dungeon Master&#8217;s Guide gives target values by CR for defense and offense, and the chassis derives from those: armor class, hit points, proficiency bonus, attack bonus, save DC, and a total damage budget for the creature&#8217;s turn. That budget then gets divided up. If the monster makes three attacks, each one is a third. Area effects get roughly half the single-target number, because an area effect that hits four people is doing four times the work. Creatures with legendary actions get a discount on their basic turn, because they act more often than once a round.</p>



<p class="wp-block-paragraph">The combat role is where it gets fun. My old three labels became eight roles, and each one shifts the math the way official monsters actually differ from each other:</p>



<p class="wp-block-paragraph"><strong>Brute:</strong> more hit points, lower armor class. Easy to hit, hard to drop.<br><strong>Defender:</strong> high armor class, slightly reduced damage.<br><strong>Lurker:</strong> fragile, low sustained damage, and a much larger once-per-fight nova.<br><strong>Controller:</strong> less damage, higher save DC, because its job is conditions.<br><strong>Swarm, artillery, skirmisher, support:</strong> each with their own shape.</p>



<p class="wp-block-paragraph">This is the part that expanded what the generator can produce. A lurker and a brute at the same CR are genuinely different creatures now, with different survivability and different damage patterns, because the numbers say so before a single word gets written. Nothing is drawn from a shelf, so nothing is constrained to the shape of the creature a template was stripped from. Old monsters saved under the previous labels still map onto the new roles, so regenerating one lands where you would expect.</p>



<p class="wp-block-paragraph">The AI&#8217;s job changed in kind. It used to adapt: here is a creature&#8217;s mechanics, make it something else. Now it invents into a container. It receives a filled-in skeleton that says, in effect, &#8220;your melee attack is +7 for 14 damage in two dice plus five, your area effect is a 21-point save for half, you have one trait slot and three action slots, one of which should be a once-per-fight nova,&#8221; and its entire job is to decide what those things <em>*are*</em>. What the creature is made of, what its abilities do, what they are called. Then assembly stamps the engine&#8217;s numbers back over whatever the model wrote, so even a model having a bad day cannot ship a CR 3 monster with CR 12 damage.</p>



<p class="wp-block-paragraph">A side effect I did not expect: because every number exists before the first API call, the loading state can show you the real armor class and hit points immediately while the rest fills in. The architecture leaked into the interface in a nice way.</p>



<h2 class="wp-block-heading">The cost</h2>



<p class="wp-block-paragraph">Here is the honest part. The template library gave up variety in exchange for guaranteed sanity. Generating the template gives up some of that sanity in exchange for variety.</p>



<p class="wp-block-paragraph">A template stripped from a published monster carried more than numbers. It carried a professional&#8217;s judgment about which abilities belong on the same creature, even after the flavor was gone. A computed chassis has the numbers and none of that judgment. It is assembled from correct parts, and correct parts can still combine into something odd. The failure mode is not usually broken math, since the engine owns the math. It is coherence. A creature whose abilities do not quite belong to the same animal. A name that describes an attack routine instead of a creature. An elemental that reads like an undead.</p>



<p class="wp-block-paragraph">Most of the month I&#8217;ve been working to close that gap.</p>



<h2 class="wp-block-heading"><strong>Roughly a hundred and fifty checks</strong></h2>



<p class="wp-block-paragraph">Every generated block runs through a linter before it ships. The rules are boring individually and powerful together: an area effect that deals damage cannot also stun without a recharge gate, a grapple must carry an escape DC, a restrained condition needs a way out, Prone never takes a duration because standing up is the exit, a damage rider is extra dice rather than a flat bonus, an entry cannot reference an ability that does not exist in the block.</p>



<p class="wp-block-paragraph">Where I could, the fix is deterministic. The linter does not just flag a missing escape DC, it stamps the right one in. About half of everything the linter catches gets repaired without another API call. What remains goes back to the model as a short list of specific problems with the exact text to fix.</p>



<p class="wp-block-paragraph">The discipline that made this work is a rule I set early: no check ships until it has been swept against all 329 monsters in the 2024 SRD without a single false positive. Any rule that fires on an official monster is wrong about D&amp;D, no matter how sensible it sounded when I wrote it.</p>



<p class="wp-block-paragraph">That killed a lot of my ideas, and the kills were more useful than the survivors. I wanted a rule that no monster should have four different energy damage types. The sweep found exactly one official monster that does, so the threshold moved. I wanted to flag raise-the-dead necromancy on creatures that are not undead. An official dragon casts Create Undead. I wanted to catch monsters that give themselves conditions they are immune to, which is a real defect, and the first version of that rule flagged the Air Elemental, because &#8220;pushed away from the elemental and knocked prone&#8221; puts the elemental&#8217;s name in the wrong grammatical position. Each of those taught me something about how the actual game is written that I would have gotten wrong from memory.</p>



<h2 class="wp-block-heading">One judgment call</h2>



<p class="wp-block-paragraph">Deterministic rules only catch patterns you can describe. They cannot catch a cloud of spores that no ability ever creates, or a trait named Steam Shroud that produces no steam.</p>



<p class="wp-block-paragraph">So every generated monster now gets one extra API call: an audit that reads the finished block and looks for problems a Dungeon Master would hit at the table. Can every effect be adjudicated? Does every imposed condition have a way out? Does anything contradict anything else? It also grades the monster&#8217;s name and flags a creature type that the content does not support.</p>



<p class="wp-block-paragraph">The important part is that the audit has to show its work. Every finding must quote the exact text it is complaining about, verbatim. If the quote does not appear in the block, the finding is thrown away before it reaches anything. That one rule makes a nondeterministic judge safe to wire into a pipeline, because a hallucinated complaint costs nothing.</p>



<p class="wp-block-paragraph">When the audit is right, its findings ride along with the linter&#8217;s into the same repair call, so a block with both kinds of problems is fixed in one pass instead of two.</p>



<h2 class="wp-block-heading">Where I decided to stop</h2>



<p class="wp-block-paragraph">The generator still produces the occasional strange monster. A creature that would have been better classified as a monstrosity than an elemental. An ability with a condition that is technically always true. A name that is fine but not great.</p>



<p class="wp-block-paragraph">I spent a while treating each of those as a bug, and eventually landed on a better test: would this break a table, or would a Dungeon Master fix it in half a second without noticing they had? Published monsters have oddities that fall in that second category all the time. That is the bar the generator is held to now, and it clears it.</p>



<p class="wp-block-paragraph">What I got in exchange is worth it. The abilities coming out of the generator are dramatically more interesting than anything the template library produced, because they are being invented for a creature rather than inherited from one. The monster that eats a party member and drags them underground, the construct whose cracked bell forces it to ring, the swarm that shatters and reforms with half its hit points. None of those are variations on an SRD entry. They exist because the math was already handled and the model had nothing left to do except be imaginative about what a monster could be.</p>
</div><footer class="entry-footer"><p class="entry-meta"><span class="entry-categories">Filed Under: <a href="https://cros.land/category/uncategorized/" rel="category tag">Uncategorized</a></span> </p></footer></article><article class="post-4340 post type-post status-publish format-standard has-post-thumbnail category-dungeons-and-dragons entry" aria-label="Notes on redesigning my D&amp;D tool suite"><header class="entry-header"><h2 class="entry-title"><a class="entry-title-link" rel="bookmark" href="https://cros.land/2026/07/notes-on-redesigning-my-dd-tool-suite/">Notes on redesigning my D&amp;D tool suite</a></h2>
<p class="entry-meta"><time class="entry-time">July 18, 2026</time> by <span class="entry-author"><a href="https://cros.land/author/admin/" class="entry-author-link" rel="author"><span class="entry-author-name">Kenji</span></a></span> <span class="entry-comments-link"><a href="https://cros.land/2026/07/notes-on-redesigning-my-dd-tool-suite/#respond">Leave a Comment</a></span> </p></header><div class="entry-content">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="572" src="https://cros.land/wp-content/uploads/2026/07/parchment-design-system-1024x572.png" alt="" class="wp-image-4341" srcset="https://cros.land/wp-content/uploads/2026/07/parchment-design-system-1024x572.png 1024w, https://cros.land/wp-content/uploads/2026/07/parchment-design-system-300x167.png 300w, https://cros.land/wp-content/uploads/2026/07/parchment-design-system-768x429.png 768w, https://cros.land/wp-content/uploads/2026/07/parchment-design-system.png 1376w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">For about two years, every tool on this site was built with <a href="https://cedar.rei.com/">Cedar</a>, the open-source design system I worked on while I was a software developer at <a href="https://www.rei.com/">REI</a>. That was a deliberate choice and, for a long time, the right one. Cedar is accessible by default, thoroughly tested, and I knew every component in it. When you are one person shipping a suite of generators, starting from a design system you already know is worth an enormous amount. I got to spend my time on prompts and dungeon layouts instead of arguing with myself about button padding.</p>



<p class="wp-block-paragraph">Then I started actually using the tools at my own table, and something kept bothering me.</p>



<h2 class="wp-block-heading">Cedar is excellent. It was the wrong fit.</h2>



<p class="wp-block-paragraph">Cedar was built for outdoor ecommerce. It is bright and clean, and organized around getting someone from a product photo to a checkout button. Every one of those qualities is correct for selling tents. None of them are correct for a page a Dungeon Master reads at the table.</p>



<p class="wp-block-paragraph">The tools were producing good content. A generated NPC would come back with a real personality, a distinct voice, a set of relationships worth playing. Then it rendered in a crisp sans-serif inside a card that could have been a shipping confirmation. The content said &#8220;sourcebook.&#8221; The interface said &#8220;SaaS dashboard.&#8221; Everything worked, and nothing felt like anything.</p>



<p class="wp-block-paragraph">That gap matters more than it used to. There are a lot of AI tools now, and most of them look the same: the same neutral grays, the same rounded cards, the same interface you have seen a hundred times. When the underlying models are available to everyone, the thing that separates tools is whether they feel like they were made by a person who cared. Generic is a real liability.</p>



<h2 class="wp-block-heading">Looking at manuscripts instead of websites</h2>



<p class="wp-block-paragraph">So I stopped looking at other apps for reference and decided to choose colors that would mimic a medieval manuscript. When I was doing this research two colors jumped out at me: Lapis Lazuli and Burgundy. </p>



<p class="wp-block-paragraph"><strong>Lapis</strong> is the obvious one. Ultramarine was made by grinding lapis lazuli, a stone that came overland from Afghanistan, and it cost more than gold by weight. You did not spend it on ornament. You spent it on the things that mattered most. It carried importance because it was expensive enough to mean something.</p>



<p class="wp-block-paragraph"><strong>Burgundy</strong> has an even more useful history for a designer. Red earth pigment was what scribes used for headings, initials, and instructions to the reader. The Latin for red earth is <em>rubrica</em>, which is where we get the word rubric. The red ink in a manuscript is literally the structural markup: this is a heading, this is where a new section begins, this is the part that tells you how to use the rest.</p>



<p class="wp-block-paragraph">Once I saw that, the palette stopped being an aesthetic preference and became a rule I could actually build on.</p>



<h2 class="wp-block-heading">Color has to mean something</h2>



<p class="wp-block-paragraph">The parchment system has one load-bearing rule, and everything else follows from it:</p>



<ul class="wp-block-list">
<li><strong>Burgundy is content.</strong> Titles, proper nouns, the names of things, the small-caps labels that structure a card. It is the rubric ink. If it is burgundy, it is part of what you are reading.</li>



<li><strong>Lapis is the tool.</strong> Buttons, form labels, navigation, anything that belongs to the machinery rather than the document. If it is lapis, it is something you operate.</li>



<li><strong>Red is destruction, and nothing else.</strong> Delete gets its own register so that a delete button can never be mistaken for a heading.</li>
</ul>



<p class="wp-block-paragraph">The practical effect is that you can tell what a thing does before you read it. That sounds small. In a suite where seven tools all produce dense text, it does an enormous amount of quiet work.</p>



<p class="wp-block-paragraph">Surfaces followed the same logic. Everything you read sits on cream, the color of aged paper, and everything carries a very subtle paper grain: a CSS texture that mottles the cream the way real vellum ages unevenly. It runs at four percent opacity, which is low enough that most people never consciously notice it and high enough that removing it makes the whole page look flat. The chrome around the document stays clean. Texture belongs to the page you read, not the frame you hold it in.</p>



<h2 class="wp-block-heading">The part that actually matters: readability</h2>



<p class="wp-block-paragraph">Here is the thing I did not expect. The redesign barely changed what the tools do. What it changed was how much work it takes to read them, and that turned out to be most of the value.</p>



<p class="wp-block-paragraph">Some of what came out of the migration:</p>



<p class="wp-block-paragraph"><strong>Two tiers of emphasis instead of one.</strong> My first pass made every emphasized term burgundy and bold. It looked great on an NPC description, where the emphasis lands on a few proper nouns. It fell apart completely on a magic item or an encounter, where a dozen mechanical values all want attention and the page turns into a thicket of bold burgundy. So emphasis split in two: burgundy bold for narrative anchors like names and factions, used two or three times a paragraph at most, and plain ink bold for mechanical values like AC, damage, and distances. Dense pages now read as prose with findable numbers.</p>



<p class="wp-block-paragraph"><strong>Real type instead of faux bold.</strong> Everything you read is Source Serif 4 with genuine weight files loaded, so bold text is an actual bold cut rather than the browser smearing a regular one. It is the kind of thing nobody notices and everybody feels.</p>



<p class="wp-block-paragraph"><strong>One card anatomy everywhere.</strong> Items, NPCs, settings, monsters, and factions all share a structure now, so learning to scan one teaches you all of them.</p>



<p class="wp-block-paragraph"><strong>Editing where the content lives.</strong> Fields turn into inputs in place on the card. No modal, no separate form, no losing your place.</p>



<p class="wp-block-paragraph"><strong>Loading states shaped like the content.</strong> Skeletons that match the card that is coming, so the page stops jumping around while a generation finishes.</p>



<p class="wp-block-paragraph"><strong>Sentence case on every button.</strong> Small change, much calmer interface.</p>



<p class="wp-block-paragraph">I also wrote acceptance tests as part of the migration rather than after it, which is not a glamorous detail, but redesigning seven tools at once without a safety net is how you ship a beautiful broken thing.</p>



<h2 class="wp-block-heading">Writing it down</h2>



<p class="wp-block-paragraph">The last piece was documenting the whole thing. There is a file in the repository called <code>parchment.md</code> that describes the system as it actually exists, including the places where it is still inconsistent and my honest notes about which of those are worth fixing and which are special cases I had a reason for at the time.</p>



<p class="wp-block-paragraph">That document is why the system holds together. Every time I sit down to build a new surface, the accumulated reasoning is right there instead of locked in my memory of a decision I made in June. When I added the statblock converter last week, it took about twenty minutes to make it look like it belonged, because the answer to every question it raised was already written down.</p>



<p class="wp-block-paragraph">The tools do the same things they did before. They just finally look like they know what they are for.</p>
</div><footer class="entry-footer"><p class="entry-meta"><span class="entry-categories">Filed Under: <a href="https://cros.land/category/dungeons-and-dragons/" rel="category tag">Dungeons And Dragons</a></span> </p></footer></article><article class="post-4310 post type-post status-publish format-standard has-post-thumbnail category-uncategorized entry" aria-label="Your Tools Now Talk to Each Other"><header class="entry-header"><h2 class="entry-title"><a class="entry-title-link" rel="bookmark" href="https://cros.land/2026/03/your-tools-now-talk-to-each-other/">Your Tools Now Talk to Each Other</a></h2>
<p class="entry-meta"><time class="entry-time">March 26, 2026</time> by <span class="entry-author"><a href="https://cros.land/author/admin/" class="entry-author-link" rel="author"><span class="entry-author-name">Kenji</span></a></span> <span class="entry-comments-link"><a href="https://cros.land/2026/03/your-tools-now-talk-to-each-other/#respond">Leave a Comment</a></span> </p></header><div class="entry-content">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="660" src="https://cros.land/wp-content/uploads/2026/03/robots-talking-to-each-other-1024x660.png" alt="" class="wp-image-4311" srcset="https://cros.land/wp-content/uploads/2026/03/robots-talking-to-each-other-1024x660.png 1024w, https://cros.land/wp-content/uploads/2026/03/robots-talking-to-each-other-300x193.png 300w, https://cros.land/wp-content/uploads/2026/03/robots-talking-to-each-other-768x495.png 768w, https://cros.land/wp-content/uploads/2026/03/robots-talking-to-each-other-1536x990.png 1536w, https://cros.land/wp-content/uploads/2026/03/robots-talking-to-each-other.png 1976w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">When I first built the <a href="https://cros.land/ai-powered-dnd-5e-monster-statblock-generator-premium/">statblock generator</a>, it was a standalone thing. You&#8217;d make a creature, copy the output, and paste it wherever you needed it. The NPC generator was the same — generate a character, copy it out. Each tool lived on its own island.</p>



<p class="wp-block-paragraph">That&#8217;s been changing.</p>



<p class="wp-block-paragraph">Over the last few months I&#8217;ve been quietly rebuilding the plumbing underneath the tools so they actually share data. The statblock you generate isn&#8217;t just text anymore — it&#8217;s a living object that your NPCs, encounters, and dungeons can all reference. Edit it in one place, and it updates everywhere.</p>



<p class="wp-block-paragraph">Here&#8217;s what&#8217;s new.</p>



<h2 class="wp-block-heading">Shared Statblocks</h2>



<p class="wp-block-paragraph">This is the big architectural change. Previously, if you generated a statblock for an NPC inside the dungeon generator, that statblock was trapped inside the dungeon. You couldn&#8217;t see it in the statblock generator. You couldn&#8217;t use it in an encounter. It just lived in one place.</p>



<p class="wp-block-paragraph">Now there&#8217;s one canonical statblock store. Generate a statblock anywhere — the statblock generator, the NPC generator, the dungeon generator — and it shows up everywhere. Your dungeon&#8217;s boss monster can be pulled into an encounter. Your NPC&#8217;s combat stats can be edited in the statblock generator where you have the full editing tools. One source of truth.</p>



<p class="wp-block-paragraph">If you&#8217;ve got existing data, don&#8217;t worry. The migration happens automatically the next time you load the tools. Your nested statblocks get extracted into the shared store and replaced with references. Nothing gets lost.</p>



<h2 class="wp-block-heading">Create NPCs from Statblocks</h2>



<p class="wp-block-paragraph">This is where the connected tools start to feel like a connected <em>system</em>.</p>



<p class="wp-block-paragraph">Every statblock now has a &#8220;Create NPC&#8221; button in the footer. Click it, and you land in the NPC generator with that creature pre-selected. The generator knows the creature&#8217;s stats — its intelligence, its type, its abilities — and uses that to shape the NPC it creates.</p>



<p class="wp-block-paragraph">A creature that can think and talk — a dragon, a vampire, even a dim-witted hill giant — gets the full NPC treatment: personality, motivations, relationships, roleplaying tips. A dragon becomes a scheming political figure. A vampire becomes a patron of the arts with a terrible secret.</p>



<p class="wp-block-paragraph">A mindless creature — a construct following its programming, a beast acting on instinct, an ooze dissolving everything in its path — gets something different. Instead of pretending your animated armor has feelings, the system generates a creature profile about its origin, its local reputation, and the NPCs whose lives it affects. The hunter tracking it. The wizard who lost control of it. The farmer whose livestock it keeps eating. The creature is a narrative force, not a speaking character.</p>



<p class="wp-block-paragraph">You can also search the entire SRD monster list when generating NPCs. Pick a Goblin, and the generator pulls in creature intelligence data — pack tactics, cowardly when outnumbered, worships powerful creatures — and uses that to create a specific, memorable individual. Not &#8220;a goblin&#8221; but Skragg the Broker, an information dealer who trades secrets between tribes and is braver than most because he knows where all the exits are.<br><br><em>Check out the new and improved <a href="https://cros.land/rpg-ai-npc-generator/">npc generator</a>!</em></p>



<h2 class="wp-block-heading">What&#8217;s Next</h2>



<p class="wp-block-paragraph">The cross-tool connections are just getting started. Right now statblocks and NPCs talk to each other. Next up is connecting items, encounters, and locations into the same web. The long-term vision is a session workspace where everything you&#8217;ve generated across the tools comes together in one view — your encounters, NPCs, locations, and items organized by session, ready for game night.</p>



<p class="wp-block-paragraph">If you&#8217;re a Patreon supporter, you&#8217;re funding all of this directly. Every feature, every bug fix, every architecture improvement. If you&#8217;ve been using the free tools and want to support the work (and unlock the premium features), the link is below.</p>



<p class="wp-block-paragraph">As always, if something breaks or feels clunky, I want to know. Hit me up on <a href="https://discord.gg/DJVTbkH4VG">Discord</a> or drop a comment. This is a one-person operation and your feedback is what decides what gets built next.</p>



<p class="wp-block-paragraph">— Kenji</p>
</div><footer class="entry-footer"><p class="entry-meta"><span class="entry-categories">Filed Under: <a href="https://cros.land/category/uncategorized/" rel="category tag">Uncategorized</a></span> </p></footer></article><article class="post-4297 post type-post status-publish format-standard has-post-thumbnail category-dungeons-and-dragons entry" aria-label="D&amp;D 5e Encounter Generator — Build Encounters Your Players Will Actually Remember"><header class="entry-header"><h2 class="entry-title"><a class="entry-title-link" rel="bookmark" href="https://cros.land/2026/03/dd-5e-encounter-generator-build-encounters-your-players-will-actually-remember/">D&amp;D 5e Encounter Generator — Build Encounters Your Players Will Actually Remember</a></h2>
<p class="entry-meta"><time class="entry-time">March 7, 2026</time> by <span class="entry-author"><a href="https://cros.land/author/admin/" class="entry-author-link" rel="author"><span class="entry-author-name">Kenji</span></a></span> <span class="entry-comments-link"><a href="https://cros.land/2026/03/dd-5e-encounter-generator-build-encounters-your-players-will-actually-remember/#respond">Leave a Comment</a></span> </p></header><div class="entry-content">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="572" src="https://cros.land/wp-content/uploads/2026/03/aboleth-camel-encounter-1024x572.png" alt="" class="wp-image-4298" srcset="https://cros.land/wp-content/uploads/2026/03/aboleth-camel-encounter-1024x572.png 1024w, https://cros.land/wp-content/uploads/2026/03/aboleth-camel-encounter-300x168.png 300w, https://cros.land/wp-content/uploads/2026/03/aboleth-camel-encounter-768x429.png 768w, https://cros.land/wp-content/uploads/2026/03/aboleth-camel-encounter.png 1440w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><em>A quiet desert oasis rests beneath a scorching sun, its dark pool reflecting the harsh daylight and a ring of ten camels standing around it. Their bodies are lean and sunbaked, but their eyes hold an empty glaze, distant and unblinking as they sway subtly back and forth. At the pool&#8217;s edge, a massive fish-like shape shifts beneath the brackish surface — a hulking, ancient aboleth whose sickly glowing eyes scan without haste. The camels do not graze or drink; instead, they stand unnervingly still, occasionally twitching as if pulled by unseen strings. For a moment, the desert falls silent except for a faint ripple on the water&#8217;s surface — and then the gaze of the aboleth seems to reach toward you.</em></p>
</blockquote>



<p class="wp-block-paragraph">That encounter was generated by throwing an aboleth and ten camels into the generator with no other context. No location, no scene description, just those two creatures. The tool turned the camels into psychic hostages at a desert oasis. The aboleth bargains for servitude, the camels are the reason you can&#8217;t just fireball the pool, and the saddlebags link to a merchant house that opens a thread beyond the fight.</p>



<h2 class="wp-block-heading">What Is This?</h2>



<p class="wp-block-paragraph">Most encounter builders are calculators. You pick monsters, they tell you the CR math, and you&#8217;re left to figure out the rest — what the monsters are doing when the party arrives, what happens mid-fight, and what the players find afterward.</p>



<p class="wp-block-paragraph">This tool generates the actual encounter. You get read-aloud text to narrate to your players, DM notes with tactical positioning and terrain mechanics, a mid-encounter turn that shifts the stakes, and aftermath hooks that connect the fight to the wider campaign.</p>



<p class="wp-block-paragraph">Pick your monsters, optionally describe a location or situation, and hit generate. That&#8217;s it.</p>



<h2 class="wp-block-heading">How It Works</h2>



<p class="wp-block-paragraph">Every creature in the SRD has enriched data beyond what&#8217;s in the stat block. Each one has a tactical identity — how it fights as a whole, what combos it tries to execute. Each one has personality traits that shape the encounter&#8217;s tone. Some negotiate. Some flee when wounded. Some fight to the death without a word.</p>



<p class="wp-block-paragraph">An aboleth negotiates because that&#8217;s what aboleths do — they&#8217;re ancient psychic manipulators who prefer servitude over destruction. A remorhaz just charges because it&#8217;s a mindless predator driven by heat and hunger. The encounters come from the creatures themselves, not from generic templates.</p>



<p class="wp-block-paragraph">This is what makes the tool different from typing &#8220;generate a D&amp;D encounter&#8221; into a chatbot. There&#8217;s a data layer underneath that knows how 328 SRD creatures behave, retreat, socialize, and what they leave behind when they&#8217;re defeated.</p>



<h2 class="wp-block-heading">Custom Creatures</h2>



<p class="wp-block-paragraph">The tool also works with custom stat blocks. You can build your own creatures in the <a href="https://cros.land/ai-powered-dnd-5e-monster-statblock-generator/">Statblock Generator</a> and add them to encounters alongside SRD monsters.</p>



<p class="wp-block-paragraph">When you create a custom creature, the tool automatically enriches it with the same tactical and personality data that the SRD creatures have. It reads the stat block&#8217;s abilities, checks the creature&#8217;s intelligence, and figures out how it should behave.</p>



<p class="wp-block-paragraph">I tested this with a custom creature called the Plague Bellringer — a cursed undead with INT 6 that can&#8217;t stop ringing a necrotic bell. One of its abilities, Despairing Ring, mechanically forces nearby creatures to move closer in a compulsion to free it. The tool picked up on that flavor text and built the encounter around the party figuring out that the monster is asking for help, not threatening them. The bellringer isn&#8217;t a boss to kill — it&#8217;s a puzzle to solve.</p>



<h2 class="wp-block-heading">Try It</h2>



<p class="wp-block-paragraph">The encounter generator is free to use with no account required. Pick some monsters, set the scene if you want, and see what it comes up with.</p>



<p class="wp-block-paragraph"><strong><a href="https://cros.land/dnd-5e-encounter-generator/">Try the Encounter Generator →</a></strong></p>



<p class="wp-block-paragraph">I&#8217;d love to hear what creature combos produce interesting results. The weirder the better — the whole point of the enriched creature data is that it should find a coherent relationship between any set of monsters you throw at it.</p>
</div><footer class="entry-footer"><p class="entry-meta"><span class="entry-categories">Filed Under: <a href="https://cros.land/category/dungeons-and-dragons/" rel="category tag">Dungeons And Dragons</a></span> </p></footer></article><article class="post-4290 post type-post status-publish format-standard has-post-thumbnail category-dungeons-and-dragons entry" aria-label="New Tool: Roll20 Statblock Auto-Fill Extension Now Available!"><header class="entry-header"><h2 class="entry-title"><a class="entry-title-link" rel="bookmark" href="https://cros.land/2026/02/new-tool-roll20-statblock-auto-fill-extension-now-available/">New Tool: Roll20 Statblock Auto-Fill Extension Now Available!</a></h2>
<p class="entry-meta"><time class="entry-time">February 10, 2026</time> by <span class="entry-author"><a href="https://cros.land/author/admin/" class="entry-author-link" rel="author"><span class="entry-author-name">Kenji</span></a></span> <span class="entry-comments-link"><a href="https://cros.land/2026/02/new-tool-roll20-statblock-auto-fill-extension-now-available/#respond">Leave a Comment</a></span> </p></header><div class="entry-content">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="683" src="https://cros.land/wp-content/uploads/2026/02/ChatGPT-Image-Feb-5-2026-07_40_39-PM-1024x683.png" alt="" class="wp-image-4291" srcset="https://cros.land/wp-content/uploads/2026/02/ChatGPT-Image-Feb-5-2026-07_40_39-PM-1024x683.png 1024w, https://cros.land/wp-content/uploads/2026/02/ChatGPT-Image-Feb-5-2026-07_40_39-PM-300x200.png 300w, https://cros.land/wp-content/uploads/2026/02/ChatGPT-Image-Feb-5-2026-07_40_39-PM-768x512.png 768w, https://cros.land/wp-content/uploads/2026/02/ChatGPT-Image-Feb-5-2026-07_40_39-PM-600x400.png 600w, https://cros.land/wp-content/uploads/2026/02/ChatGPT-Image-Feb-5-2026-07_40_39-PM.png 1536w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Quick update — I just released a new Chrome extension that some of you might find useful, especially if you run games on <strong>Roll20</strong>.</p>



<p class="wp-block-paragraph">The extension connects directly to the <strong>monster statblocks you generate on cros.land</strong> and automatically fills out the Roll20 NPC/monster sheet for you. If you’ve ever typed one of those sheets in manually, you know how many fields there are. This speeds up the whole “get a homebrew creature into Roll20” process by a lot.</p>



<p class="wp-block-paragraph">If you use Roll20, you can check it out here:<br><strong><a href="https://chromewebstore.google.com/detail/conjure-creature/oepoeaoeoaaedbgobaegpfamofhkbifo">https://chromewebstore.google.com/detail/conjure-creature/oepoeaoeoaaedbgobaegpfamofhkbifo</a></strong></p>



<p class="wp-block-paragraph">And here’s a quick demo video showing it in action:</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Streamlining D&amp;D Monster Creation with Conjure Creature Extension" width="500" height="281" src="https://www.youtube.com/embed/O2PynqITqd0?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p class="wp-block-paragraph">If you don’t use Roll20, no worries — this is just one more option in the toolbox. I’m aiming to make the ecosystem of tools as flexible as possible, and this felt like a natural next step.</p>



<p class="wp-block-paragraph">If there are <strong>other platforms, tools, or workflows</strong> you think would pair well with what I’ve built, I’d love to hear your ideas. Integrations like this only exist because someone mentioned a pain point, so keep the suggestions coming.</p>



<p class="wp-block-paragraph">Thanks as always for using the tools — more updates soon!</p>
</div><footer class="entry-footer"><p class="entry-meta"><span class="entry-categories">Filed Under: <a href="https://cros.land/category/dungeons-and-dragons/" rel="category tag">Dungeons And Dragons</a></span> </p></footer></article><article class="post-4286 post type-post status-publish format-standard category-uncategorized entry" aria-label="The Tools Are Growing Up: Inline Editing + A Real Home Page"><header class="entry-header"><h2 class="entry-title"><a class="entry-title-link" rel="bookmark" href="https://cros.land/2026/01/the-tools-are-growing-up-inline-editing-a-real-home-page/">The Tools Are Growing Up: Inline Editing + A Real Home Page</a></h2>
<p class="entry-meta"><time class="entry-time">January 25, 2026</time> by <span class="entry-author"><a href="https://cros.land/author/admin/" class="entry-author-link" rel="author"><span class="entry-author-name">Kenji</span></a></span> <span class="entry-comments-link"><a href="https://cros.land/2026/01/the-tools-are-growing-up-inline-editing-a-real-home-page/#respond">Leave a Comment</a></span> </p></header><div class="entry-content">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="683" src="https://cros.land/wp-content/uploads/2026/01/inline-editing-1024x683.png" alt="" class="wp-image-4287" srcset="https://cros.land/wp-content/uploads/2026/01/inline-editing-1024x683.png 1024w, https://cros.land/wp-content/uploads/2026/01/inline-editing-300x200.png 300w, https://cros.land/wp-content/uploads/2026/01/inline-editing-768x512.png 768w, https://cros.land/wp-content/uploads/2026/01/inline-editing-600x400.png 600w, https://cros.land/wp-content/uploads/2026/01/inline-editing.png 1536w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Hey everybody, it&#8217;s been a while since I&#8217;ve made an update post, and I have a lot to share this time around. Because, while the stat block generator and the item generator had inline editing, I realized that in order for these tools to truly be of use to dungeon masters, they need to be more than generators — they need to be places where a DM can collaborate with the AI, modify outputs, and maintain a single source of truth for their creations: the settings they develop in the setting generator, the NPCs they build in the NPC generator, and the dungeons they construct in the dungeon generator.</p>



<p class="wp-block-paragraph">So, after having battled some complexity on the back end, I managed to make something reasonably simple where people can click, edit, and essentially change any piece of information the tool produces. If a line of wording is off, or something needs just a bit of personal input or improvement, that can now be done directly in the interface. These changes have been implemented for the <a href="https://cros.land/rpg-setting-generator-and-world-building-tool/">Setting Generator</a>, the <a href="https://cros.land/rpg-ai-npc-generator/">NPC Generator</a> and the <a href="https://cros.land/kenjis-dungeon-generator-2-0/">Dungeon Generator</a>.</p>



<p class="wp-block-paragraph">That shifts these tools from something that&#8217;s an interesting novelty — something that helps game masters brainstorm ideas — into something they can actually return to and reference for their campaigns. And that is really the goal moving forward.</p>



<p class="wp-block-paragraph">I want to make sure each tool is as useful as possible. And while you&#8217;re free to maintain your own notes and your own campaign documents, I’m aiming to create a tool suite that’s useful and comprehensive enough that you can simply return to the site and reference what you’ve already created.</p>



<p class="wp-block-paragraph">As a more personal update, these apps have shifted from being a side project to becoming my main focus. My contract ended in December, and after thinking about the current job market, the potential of these tools, and the amount of runway I have in savings, I’ve been doubling down on building this out. I’m still open to collaborations or job conversations — especially anything involving gaming or where gaming intersects with AI — but for now this project is my center of gravity.</p>



<p class="wp-block-paragraph">Also, while this might be of less interest to long-time users, I’ve been more actively promoting the business, and part of that has meant creating a <a href="https://cros.land/kenjis-dungeon-master-tools/">proper landing page </a>— something clean, presentable, and easy to share, whether on Reddit, Facebook, or wherever people talk about their campaigns. The goal was to offer a better overview of everything in one place, a page people can send to friends without having to explain how all the pieces fit together.</p>
</div><footer class="entry-footer"><p class="entry-meta"><span class="entry-categories">Filed Under: <a href="https://cros.land/category/uncategorized/" rel="category tag">Uncategorized</a></span> </p></footer></article><div class="archive-pagination pagination" role="navigation" aria-label="Pagination"><ul><li class="active" ><a href="https://cros.land/" aria-label="Current page" aria-current="page"><span class="screen-reader-text">Go to page</span> 1</a></li>
<li><a href="https://cros.land/page/2/"><span class="screen-reader-text">Go to page</span> 2</a></li>
<li><a href="https://cros.land/page/3/"><span class="screen-reader-text">Go to page</span> 3</a></li>
<li class="pagination-omission"><span class="screen-reader-text">Interim pages omitted</span> &#x02026;</li> 
<li><a href="https://cros.land/page/12/"><span class="screen-reader-text">Go to page</span> 12</a></li>
<li class="pagination-next"><a href="https://cros.land/page/2/" ><span class="screen-reader-text">Go to</span> Next Page &#x000BB;</a></li>
</ul></div>
</main><aside class="sidebar sidebar-primary widget-area" role="complementary" aria-label="Primary Sidebar" id="genesis-sidebar-primary"><h2 class="genesis-sidebar-title screen-reader-text">Primary Sidebar</h2><section id="search-3" class="widget widget_search"><div class="widget-wrap"><form class="search-form" method="get" action="https://cros.land/" role="search"><label class="search-form-label screen-reader-text" for="searchform-1">Search this website</label><input class="search-form-input" type="search" name="s" id="searchform-1" placeholder="Search this website"><input class="search-form-submit" type="submit" value="Search"><meta content="https://cros.land/?s={s}"></form></div></section>
<section id="block-5" class="widget widget_block widget_media_image"><div class="widget-wrap">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="682" src="https://cros.land/wp-content/uploads/2022/10/kenji-crosland-profile-1024x682.jpeg" alt="" class="wp-image-4114" srcset="https://cros.land/wp-content/uploads/2022/10/kenji-crosland-profile-1024x682.jpeg 1024w, https://cros.land/wp-content/uploads/2022/10/kenji-crosland-profile-300x200.jpeg 300w, https://cros.land/wp-content/uploads/2022/10/kenji-crosland-profile-768x512.jpeg 768w, https://cros.land/wp-content/uploads/2022/10/kenji-crosland-profile-1536x1023.jpeg 1536w, https://cros.land/wp-content/uploads/2022/10/kenji-crosland-profile-600x400.jpeg 600w, https://cros.land/wp-content/uploads/2022/10/kenji-crosland-profile.jpeg 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption><strong>Hello! My name is Kenji Crosland and welcome to my blog. I recently spent nearly a year <a href="https://cros.land/travels-with-serpy-my-9-month-trip-through-the-southern-us/">traveling the Southern US</a> looking for a new home. I also write about <a href="https://cros.land/category/dungeons-and-dragons/">how to run pen and paper RPGs</a>. I also make <a href="https://cros.land/kenjis-dungeon-master-tools/">game master tools</a>. Say hello!</strong></figcaption></figure>
</div></section>
<section id="block-12" class="widget widget_block"><div class="widget-wrap"><h3 class="widgettitle widget-title">Player Tools</h3>
<ul>
  <li><a href="https://cros.land/dnd-5e-inventory-manager/">D&D 5e Inventory Manager</a></li>
  <li><a href="https://cros.land/dnd-5e-loot-splitter/">D&D 5e Loot Splitter</a></li>
</ul>
<br><br>
<h3 class="widgettitle widget-title">Game Master Tools</h3>
<ul>
  <li><a href="https://cros.land/ai-powered-dnd-5e-monster-statblock-generator/">D&D 5e Monster Statblock Generator</a></li>
  <li><a href="https://cros.land/convert-dnd-monster-statblocks-to-2024/">2014 to 2024 Statblock Converter</a></li>
  <li><a href="https://cros.land/kenjis-dungeon-generator-2-0/">Dungeon Generator</a></li>
  <li><a href="https://cros.land/dnd-5e-magic-item-generator/">D&D 5e Magic Item Generator</a></li>
  <li><a href="https://cros.land/magic-item-price-calculator-for-dd-5e/">D&D 5e Magic Item Price Calculator</a></li>
  <li><a href="https://cros.land/dnd-5e-encounter-generator/">D&D 5e Encounter Generator</a></li>
  <li><a href="https://cros.land/dd-5e-chase-tracker-app/">D&D 5e Chase Tracker</a></li>
  <li><a href="https://cros.land/rpg-setting-generator-and-world-building-tool/">Worldbuilding Dashboard and Settings Generator</a></li>
  <li><a href="https://cros.land/ai-rpg-location-generator/">Location Description Generator</a></li>
  <li><a href="https://cros.land/rpg-ai-npc-generator/">NPC Generator</a></li>
</ul>
<br><br>
<h3 class="widgettitle widget-title">Game Master Tools For Patrons</h3>
<ul>
  <li><a href="https://cros.land/ai-powered-bookshelf-generator/">Bookshelf Generator</a></li>
  <li><a href="https://cros.land/ai-powered-lore-and-timeline-generator/">Lore and Timeline Generator</a></li>
</ul></div></section>
<section id="featured-post-2" class="widget featured-content featuredpost"><div class="widget-wrap"><h3 class="widgettitle widget-title">Recent Posts</h3>
<article class="post-4345 post type-post status-publish format-standard category-uncategorized entry" aria-label="2024 rules support, and the rebuild underneath it"><a href="https://cros.land/2026/07/2024-rules-support-and-the-rebuild-underneath-it/" class="alignright" aria-hidden="true" tabindex="-1"><img width="150" height="150" src="https://cros.land/wp-content/uploads/2026/07/image-150x150.png" class="entry-image attachment-post" alt="" decoding="async" loading="lazy" srcset="https://cros.land/wp-content/uploads/2026/07/image-150x150.png 150w, https://cros.land/wp-content/uploads/2026/07/image-75x75.png 75w, https://cros.land/wp-content/uploads/2026/07/image-600x600.png 600w" sizes="auto, (max-width: 150px) 100vw, 150px" /></a><header class="entry-header"><h4 class="entry-title"><a href="https://cros.land/2026/07/2024-rules-support-and-the-rebuild-underneath-it/">2024 rules support, and the rebuild underneath it</a></h4><p class="entry-meta"><time class="entry-time">July 30, 2026</time> By <span class="entry-author"><a href="https://cros.land/author/admin/" class="entry-author-link" rel="author"><span class="entry-author-name">Kenji</span></a></span> </p></header></article><article class="post-4340 post type-post status-publish format-standard has-post-thumbnail category-dungeons-and-dragons entry" aria-label="Notes on redesigning my D&amp;D tool suite"><a href="https://cros.land/2026/07/notes-on-redesigning-my-dd-tool-suite/" class="alignright" aria-hidden="true" tabindex="-1"><img width="150" height="150" src="https://cros.land/wp-content/uploads/2026/07/parchment-design-system-150x150.png" class="entry-image attachment-post" alt="" decoding="async" loading="lazy" srcset="https://cros.land/wp-content/uploads/2026/07/parchment-design-system-150x150.png 150w, https://cros.land/wp-content/uploads/2026/07/parchment-design-system-75x75.png 75w, https://cros.land/wp-content/uploads/2026/07/parchment-design-system-600x600.png 600w" sizes="auto, (max-width: 150px) 100vw, 150px" /></a><header class="entry-header"><h4 class="entry-title"><a href="https://cros.land/2026/07/notes-on-redesigning-my-dd-tool-suite/">Notes on redesigning my D&amp;D tool suite</a></h4><p class="entry-meta"><time class="entry-time">July 18, 2026</time> By <span class="entry-author"><a href="https://cros.land/author/admin/" class="entry-author-link" rel="author"><span class="entry-author-name">Kenji</span></a></span> </p></header></article><article class="post-4310 post type-post status-publish format-standard has-post-thumbnail category-uncategorized entry" aria-label="Your Tools Now Talk to Each Other"><a href="https://cros.land/2026/03/your-tools-now-talk-to-each-other/" class="alignright" aria-hidden="true" tabindex="-1"><img width="150" height="150" src="https://cros.land/wp-content/uploads/2026/03/robots-talking-to-each-other-150x150.png" class="entry-image attachment-post" alt="" decoding="async" loading="lazy" srcset="https://cros.land/wp-content/uploads/2026/03/robots-talking-to-each-other-150x150.png 150w, https://cros.land/wp-content/uploads/2026/03/robots-talking-to-each-other-75x75.png 75w, https://cros.land/wp-content/uploads/2026/03/robots-talking-to-each-other-600x600.png 600w" sizes="auto, (max-width: 150px) 100vw, 150px" /></a><header class="entry-header"><h4 class="entry-title"><a href="https://cros.land/2026/03/your-tools-now-talk-to-each-other/">Your Tools Now Talk to Each Other</a></h4><p class="entry-meta"><time class="entry-time">March 26, 2026</time> By <span class="entry-author"><a href="https://cros.land/author/admin/" class="entry-author-link" rel="author"><span class="entry-author-name">Kenji</span></a></span> </p></header></article><article class="post-4297 post type-post status-publish format-standard has-post-thumbnail category-dungeons-and-dragons entry" aria-label="D&amp;D 5e Encounter Generator — Build Encounters Your Players Will Actually Remember"><a href="https://cros.land/2026/03/dd-5e-encounter-generator-build-encounters-your-players-will-actually-remember/" class="alignright" aria-hidden="true" tabindex="-1"><img width="150" height="150" src="https://cros.land/wp-content/uploads/2026/03/aboleth-camel-encounter-150x150.png" class="entry-image attachment-post" alt="" decoding="async" loading="lazy" srcset="https://cros.land/wp-content/uploads/2026/03/aboleth-camel-encounter-150x150.png 150w, https://cros.land/wp-content/uploads/2026/03/aboleth-camel-encounter-75x75.png 75w, https://cros.land/wp-content/uploads/2026/03/aboleth-camel-encounter-600x600.png 600w" sizes="auto, (max-width: 150px) 100vw, 150px" /></a><header class="entry-header"><h4 class="entry-title"><a href="https://cros.land/2026/03/dd-5e-encounter-generator-build-encounters-your-players-will-actually-remember/">D&amp;D 5e Encounter Generator — Build Encounters Your Players Will Actually Remember</a></h4><p class="entry-meta"><time class="entry-time">March 7, 2026</time> By <span class="entry-author"><a href="https://cros.land/author/admin/" class="entry-author-link" rel="author"><span class="entry-author-name">Kenji</span></a></span> </p></header></article><article class="post-4290 post type-post status-publish format-standard has-post-thumbnail category-dungeons-and-dragons entry" aria-label="New Tool: Roll20 Statblock Auto-Fill Extension Now Available!"><a href="https://cros.land/2026/02/new-tool-roll20-statblock-auto-fill-extension-now-available/" class="alignright" aria-hidden="true" tabindex="-1"><img width="150" height="150" src="https://cros.land/wp-content/uploads/2026/02/ChatGPT-Image-Feb-5-2026-07_40_39-PM-150x150.png" class="entry-image attachment-post" alt="" decoding="async" loading="lazy" srcset="https://cros.land/wp-content/uploads/2026/02/ChatGPT-Image-Feb-5-2026-07_40_39-PM-150x150.png 150w, https://cros.land/wp-content/uploads/2026/02/ChatGPT-Image-Feb-5-2026-07_40_39-PM-75x75.png 75w, https://cros.land/wp-content/uploads/2026/02/ChatGPT-Image-Feb-5-2026-07_40_39-PM-600x600.png 600w" sizes="auto, (max-width: 150px) 100vw, 150px" /></a><header class="entry-header"><h4 class="entry-title"><a href="https://cros.land/2026/02/new-tool-roll20-statblock-auto-fill-extension-now-available/">New Tool: Roll20 Statblock Auto-Fill Extension Now Available!</a></h4><p class="entry-meta"><time class="entry-time">February 10, 2026</time> By <span class="entry-author"><a href="https://cros.land/author/admin/" class="entry-author-link" rel="author"><span class="entry-author-name">Kenji</span></a></span> </p></header></article></div></section>
</aside></div></div><footer class="site-footer"><div class="wrap"><p>Copyright &#x000A9;&nbsp;2026 · <a href="https://demo.studiopress.com/">Genesis Sample</a> on <a href="https://www.studiopress.com/">Genesis Framework</a> · <a href="https://wordpress.org/">WordPress</a> · <a rel="nofollow" href="https://cros.land/wp-login.php">Log in</a></p></div></footer></div><script type="speculationrules">
{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/genesis-sample/*","/wp-content/themes/genesis/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
</script>
	<script type="text/javascript">
		function genesisBlocksShare( url, title, w, h ){
			var left = ( window.innerWidth / 2 )-( w / 2 );
			var top  = ( window.innerHeight / 2 )-( h / 2 );
			return window.open(url, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=600, height=600, top='+top+', left='+left);
		}
	</script>
	<style type="text/css" media="screen"></style><script id="wp-hooks-js" src="https://cros.land/wp-includes/js/dist/hooks.min.js?ver=7496969728ca0f95732d"></script>
<script id="wp-i18n-js" src="https://cros.land/wp-includes/js/dist/i18n.min.js?ver=781d11515ad3d91786ec"></script>
<script id="wp-i18n-js-after">
wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } );
//# sourceURL=wp-i18n-js-after
</script>
<script id="swv-js" src="https://cros.land/wp-content/plugins/contact-form-7/includes/swv/js/index.js?ver=6.1.1"></script>
<script id="contact-form-7-js-before">
var wpcf7 = {
    "api": {
        "root": "https:\/\/cros.land\/wp-json\/",
        "namespace": "contact-form-7\/v1"
    },
    "cached": 1
};
//# sourceURL=contact-form-7-js-before
</script>
<script id="contact-form-7-js" src="https://cros.land/wp-content/plugins/contact-form-7/includes/js/index.js?ver=6.1.1"></script>
<script id="patreon-wordpress-js-js" src="https://cros.land/wp-content/plugins/patreon-connect/assets/js/app.js?ver=7.0.4"></script>
<script id="genesis-blocks-dismiss-js-js" src="https://cros.land/wp-content/plugins/genesis-blocks/dist/assets/js/dismiss.js?ver=1770321915"></script>
<script id="hoverIntent-js" src="https://cros.land/wp-includes/js/hoverIntent.min.js?ver=1.10.2"></script>
<script id="superfish-js" src="https://cros.land/wp-content/themes/genesis/lib/js/menu/superfish.min.js?ver=1.7.10"></script>
<script id="superfish-args-js" src="https://cros.land/wp-content/themes/genesis/lib/js/menu/superfish.args.min.js?ver=3.4.0"></script>
<script id="skip-links-js" src="https://cros.land/wp-content/themes/genesis/lib/js/skip-links.min.js?ver=3.4.0"></script>
<script id="googlesitekit-consent-mode-js" src="https://cros.land/wp-content/plugins/google-site-kit/dist/assets/js/googlesitekit-consent-mode-86cb52dcb9f2b27ed244.js"></script>
<script id="genesis-sample-responsive-menu-js-extra">
var genesis_responsive_menu = {"mainMenu":"Menu","menuIconClass":"dashicons-before dashicons-menu","subMenu":"Submenu","subMenuIconClass":"dashicons-before dashicons-arrow-down-alt2","menuClasses":{"others":[".nav-primary"]}};
//# sourceURL=genesis-sample-responsive-menu-js-extra
</script>
<script id="genesis-sample-responsive-menu-js" src="https://cros.land/wp-content/themes/genesis/lib/js/menu/responsive-menus.min.js?ver=1.1.3"></script>
<script id="wp-emoji-settings" type="application/json">
{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://cros.land/wp-includes/js/wp-emoji-release.min.js?ver=7.0.4"}}
</script>
<script type="module">
/*! This file is auto-generated */
var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))});
//# sourceURL=https://cros.land/wp-includes/js/wp-emoji-loader.min.js
</script>
</body></html>
