<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?action=history&amp;feed=atom&amp;title=Template%3AHeroClassDef</id>
	<title>Template:HeroClassDef - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?action=history&amp;feed=atom&amp;title=Template%3AHeroClassDef"/>
	<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:HeroClassDef&amp;action=history"/>
	<updated>2026-09-22T23:11:53Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.5</generator>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:HeroClassDef&amp;diff=15883&amp;oldid=prev</id>
		<title>76561198026315966: obelisk-bot: Pushing translation table rework</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:HeroClassDef&amp;diff=15883&amp;oldid=prev"/>
		<updated>2026-05-14T20:48:07Z</updated>

		<summary type="html">&lt;p&gt;obelisk-bot: Pushing translation table rework&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 20:48, 14 May 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l20&quot;&gt;Line 20:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 20:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Each row holds the &amp;#039;&amp;#039;&amp;#039;default values&amp;#039;&amp;#039;&amp;#039; that every hero of that class inherits. Individual &amp;lt;code&amp;gt;HeroDef&amp;lt;/code&amp;gt; rows carry only the &amp;#039;&amp;#039;deltas&amp;#039;&amp;#039; — fields the hero diverges from the class on (always &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;icon&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;specialization&amp;lt;/code&amp;gt;,&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Each row holds the &amp;#039;&amp;#039;&amp;#039;default values&amp;#039;&amp;#039;&amp;#039; that every hero of that class inherits. Individual &amp;lt;code&amp;gt;HeroDef&amp;lt;/code&amp;gt; rows carry only the &amp;#039;&amp;#039;deltas&amp;#039;&amp;#039; — fields the hero diverges from the class on (always &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;icon&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;specialization&amp;lt;/code&amp;gt;,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;code&amp;gt;startSquad&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;startSkills&amp;lt;/code&amp;gt;, etc.; sometimes &amp;lt;code&amp;gt;stats&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;startLevel&amp;lt;/code&amp;gt;,&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;code&amp;gt;startSquad&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;startSkills&amp;lt;/code&amp;gt;, etc.; sometimes &amp;lt;code&amp;gt;stats&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;startLevel&amp;lt;/code&amp;gt;,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;etc. for campaign and tutorial heroes who deviate from the canonical template). When a &amp;lt;code&amp;gt;HeroDef&amp;lt;/code&amp;gt; row omits a class-level field, the wiki display layer joins to &amp;lt;code&amp;gt;HeroClassDef&amp;lt;/code&amp;gt; to fill it in&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. See D-026&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;etc. for campaign and tutorial heroes who deviate from the canonical template). When a &amp;lt;code&amp;gt;HeroDef&amp;lt;/code&amp;gt; row omits a class-level field, the wiki display layer joins to &amp;lt;code&amp;gt;HeroClassDef&amp;lt;/code&amp;gt; to fill it in.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Empirical: across all 108 faction heroes, the 11 class-level fields listed below are &amp;#039;&amp;#039;&amp;#039;invariant&amp;#039;&amp;#039;&amp;#039; within each class — there are zero deviations from the template. Campaign (46) and tutorial (21) heroes universally override &amp;lt;code&amp;gt;stats&amp;lt;/code&amp;gt; plus a small subset of other fields, treating the &amp;lt;code&amp;gt;HeroClassDef&amp;lt;/code&amp;gt; row as a starting point.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Empirical: across all 108 faction heroes, the 11 class-level fields listed below are &amp;#039;&amp;#039;&amp;#039;invariant&amp;#039;&amp;#039;&amp;#039; within each class — there are zero deviations from the template. Campaign (46) and tutorial (21) heroes universally override &amp;lt;code&amp;gt;stats&amp;lt;/code&amp;gt; plus a small subset of other fields, treating the &amp;lt;code&amp;gt;HeroClassDef&amp;lt;/code&amp;gt; row as a starting point.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l27&quot;&gt;Line 27:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 27:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{#cargo_declare:_table=HeroClass&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{#cargo_declare:_table=HeroClass&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| id = String&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| id = String&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| name = String&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| description = Wikitext&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| name_sid = String&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| name_sid = String&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| desc_sid = String&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| desc_sid = String&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l65&quot;&gt;Line 65:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 63:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{HeroClassDef&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{HeroClassDef&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| id = String                  &amp;lt;!-- e.g. magic_demon, might_human --&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| id = String                  &amp;lt;!-- e.g. magic_demon, might_human --&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| name = String                &lt;/del&gt;&amp;lt;!-- &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;e.g. Herald&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Knight --&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| description &lt;/del&gt;= &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Wikitext              &amp;lt;!-- shared per classType (might_desc / magic_desc) &lt;/del&gt;--&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;!-- &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Localization references — display text lives in the Translation table&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;type&lt;/ins&gt;=&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;hero_class&#039; &lt;/ins&gt;--&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| name_sid = String&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| name_sid = String&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| desc_sid = String&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| desc_sid = String&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l113&quot;&gt;Line 113:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 111:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Field notes ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Field notes ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; is &amp;lt;code&amp;gt;&amp;lt;class_type&amp;gt;_&amp;lt;faction&amp;gt;&amp;lt;/code&amp;gt; (matches the L10n SID prefix). 12 fixed values: &amp;lt;code&amp;gt;might_human&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;magic_human&amp;lt;/code&amp;gt;, … &amp;lt;code&amp;gt;magic_unfrozen&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; is &amp;lt;code&amp;gt;&amp;lt;class_type&amp;gt;_&amp;lt;faction&amp;gt;&amp;lt;/code&amp;gt; (matches the L10n SID prefix). 12 fixed values: &amp;lt;code&amp;gt;might_human&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;magic_human&amp;lt;/code&amp;gt;, … &amp;lt;code&amp;gt;magic_unfrozen&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &#039;&#039;&#039;&amp;lt;code&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;name&lt;/del&gt;&amp;lt;/code&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&#039; comes from &lt;/del&gt;&amp;lt;code&amp;gt;&amp;lt;class_type&amp;gt;_&amp;lt;faction&amp;gt;_name&amp;lt;/code&amp;gt; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;SIDs &lt;/del&gt;(e.g. &amp;lt;code&amp;gt;magic_demon_name&amp;lt;/code&amp;gt; → &quot;Herald&quot;)&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. Full &lt;/del&gt;16-language coverage on all 12 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;SIDs&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &#039;&#039;&#039;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Display name / description&#039;&#039;&#039; for every language (English included) live in the [[Template:TranslationDef|Translation]] table, &lt;/ins&gt;&amp;lt;code&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;type=&#039;hero_class&#039;&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;name_sid&lt;/ins&gt;&amp;lt;/code&amp;gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;is &lt;/ins&gt;&amp;lt;code&amp;gt;&amp;lt;class_type&amp;gt;_&amp;lt;faction&amp;gt;_name&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;magic_demon_name&amp;lt;/code&amp;gt; → &quot;Herald&quot;)&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;; full &lt;/ins&gt;16-language coverage on all 12.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &#039;&#039;&#039;&amp;lt;code&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;desc&lt;/del&gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;comes from &lt;/del&gt;one of two shared SIDs: &amp;lt;code&amp;gt;might_desc&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;magic_desc&amp;lt;/code&amp;gt;. The same description &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;appears on &lt;/del&gt;all 6 factions of a given type — &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Unfrozen reused it, &lt;/del&gt;faction doesn&#039;t matter for this text&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. Both SIDs have full 16-language coverage&lt;/del&gt;. &#039;&#039;&#039;All 6 might classes share &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the same &lt;/del&gt;&amp;lt;code&amp;gt;desc_sid=&#039;might_desc&#039;&amp;lt;/code&amp;gt;; all 6 magic classes share &amp;lt;code&amp;gt;desc_sid=&#039;magic_desc&#039;&amp;lt;/code&amp;gt;&#039;&#039;&#039; — &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;translation duplication is intentional (one SID, &lt;/del&gt;six &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;joined &lt;/del&gt;rows&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;)&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &#039;&#039;&#039;&amp;lt;code&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;desc_sid&lt;/ins&gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;is &lt;/ins&gt;one of two shared SIDs: &amp;lt;code&amp;gt;might_desc&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;magic_desc&amp;lt;/code&amp;gt;. The same description &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;applies to &lt;/ins&gt;all 6 factions of a given type — faction doesn&#039;t matter for this text. &#039;&#039;&#039;All 6 might classes share &amp;lt;code&amp;gt;desc_sid=&#039;might_desc&#039;&amp;lt;/code&amp;gt;; all 6 magic classes share &amp;lt;code&amp;gt;desc_sid=&#039;magic_desc&#039;&amp;lt;/code&amp;gt;&#039;&#039;&#039; — &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;so the resolved description text repeats across the &lt;/ins&gt;six &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;corresponding Translation &lt;/ins&gt;rows&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. Intentional&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;mount&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; is singular here even though the source&amp;#039;s &amp;lt;code&amp;gt;mounts&amp;lt;/code&amp;gt; is a list, because every faction hero in the 2026-05-03 corpus has exactly one mount per class. If a future patch ships heroes with multiple mounts, promote this to a list-typed column or split it to a side table.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;mount&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; is singular here even though the source&amp;#039;s &amp;lt;code&amp;gt;mounts&amp;lt;/code&amp;gt; is a list, because every faction hero in the 2026-05-03 corpus has exactly one mount per class. If a future patch ships heroes with multiple mounts, promote this to a list-typed column or split it to a side table.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;stats&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; is flattened from the source&amp;#039;s nested &amp;lt;code&amp;gt;stats&amp;lt;/code&amp;gt; dict. All twelve fields present on every hero.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;stats&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; is flattened from the source&amp;#039;s nested &amp;lt;code&amp;gt;stats&amp;lt;/code&amp;gt; dict. All twelve fields present on every hero.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l131&quot;&gt;Line 131:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 129:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Related tables ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Related tables ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Template:HeroDef|Hero]] — joined on &amp;lt;code&amp;gt;Hero.class_id = HeroClass.id&amp;lt;/code&amp;gt; (1:N). Hero rows hold only the per-hero data and any fields that override the class default.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Template:HeroDef|Hero]] — joined on &amp;lt;code&amp;gt;Hero.class_id = HeroClass.id&amp;lt;/code&amp;gt; (1:N). Hero rows hold only the per-hero data and any fields that override the class default.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;HeroClassTranslation&lt;/del&gt;]] — joined on &amp;lt;code&amp;gt;id = &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;class_id&lt;/del&gt;&amp;lt;/code&amp;gt; (1:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;1&lt;/del&gt;) &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;for the 15 non-English locales of &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;desc&amp;lt;/code&amp;gt;&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Template:TranslationDef|Translation&lt;/ins&gt;]] — &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;display text in every language (English included), &lt;/ins&gt;joined on &amp;lt;code&amp;gt;id = &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Translation.target_id WHERE Translation.type=&#039;hero_class&#039; AND Translation.language=&#039;{{{lang|en}}}&#039;&lt;/ins&gt;&amp;lt;/code&amp;gt; (1:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;N, one row per language&lt;/ins&gt;).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Template:HeroSubClassDef|HeroSubClass]] — the named prestige classes (Swashbuckler, Paragon, etc.) that branch off each HeroClass at certain skill thresholds. Joined via &amp;lt;code&amp;gt;HeroSubClass.faction + HeroSubClass.class_type&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Template:HeroSubClassDef|HeroSubClass]] — the named prestige classes (Swashbuckler, Paragon, etc.) that branch off each HeroClass at certain skill thresholds. Joined via &amp;lt;code&amp;gt;HeroSubClass.faction + HeroSubClass.class_type&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l139&quot;&gt;Line 139:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 137:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;{{#cargo_store:_table=HeroClass&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;{{#cargo_store:_table=HeroClass&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| id = {{{id|}}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| id = {{{id|}}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| name = {{{name|}}}&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| description = {{{description|}}}&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| name_sid = {{{name_sid|}}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| name_sid = {{{name_sid|}}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| desc_sid = {{{desc_sid|}}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| desc_sid = {{{desc_sid|}}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key HOMM_:diff:1.41:old-13214:rev-15883:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>76561198026315966</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:HeroClassDef&amp;diff=13214&amp;oldid=prev</id>
		<title>76561198026315966: obelisk-bot: uploading initial Cargo templates</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:HeroClassDef&amp;diff=13214&amp;oldid=prev"/>
		<updated>2026-05-13T01:12:41Z</updated>

		<summary type="html">&lt;p&gt;obelisk-bot: uploading initial Cargo templates&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 01:12, 13 May 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l172&quot;&gt;Line 172:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 172:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| roll_lvl24_power = {{{roll_lvl24_power|}}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| roll_lvl24_power = {{{roll_lvl24_power|}}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| roll_lvl24_knowledge = {{{roll_lvl24_knowledge|}}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| roll_lvl24_knowledge = {{{roll_lvl24_knowledge|}}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Created &amp;lt;code&amp;gt;HeroClass&amp;lt;/code&amp;gt; entry: &amp;lt;code&amp;gt;{{{id|}}}&amp;lt;/code&amp;gt;&lt;/ins&gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key HOMM_:diff:1.41:old-13179:rev-13214:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>76561198026315966</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:HeroClassDef&amp;diff=13179&amp;oldid=prev</id>
		<title>76561198026315966: obelisk-bot: uploading initial Cargo templates</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:HeroClassDef&amp;diff=13179&amp;oldid=prev"/>
		<updated>2026-05-13T00:02:22Z</updated>

		<summary type="html">&lt;p&gt;obelisk-bot: uploading initial Cargo templates&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 00:02, 13 May 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l28&quot;&gt;Line 28:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 28:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| id = String&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| id = String&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| name = String&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| name = String&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;desc &lt;/del&gt;= Wikitext&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;description &lt;/ins&gt;= Wikitext&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| name_sid = String&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| name_sid = String&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| desc_sid = String&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| desc_sid = String&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l66&quot;&gt;Line 66:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 66:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| id = String                  &amp;lt;!-- e.g. magic_demon, might_human --&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| id = String                  &amp;lt;!-- e.g. magic_demon, might_human --&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| name = String                &amp;lt;!-- e.g. Herald, Knight --&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| name = String                &amp;lt;!-- e.g. Herald, Knight --&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;desc &lt;/del&gt;= Wikitext              &amp;lt;!-- shared per classType (might_desc / magic_desc) --&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;description &lt;/ins&gt;= Wikitext              &amp;lt;!-- shared per classType (might_desc / magic_desc) --&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| name_sid = String&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| name_sid = String&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| desc_sid = String&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| desc_sid = String&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l140&quot;&gt;Line 140:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 140:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| id = {{{id|}}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| id = {{{id|}}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| name = {{{name|}}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| name = {{{name|}}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;desc &lt;/del&gt;= {{{&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;desc&lt;/del&gt;|}}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;description &lt;/ins&gt;= {{{&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;description&lt;/ins&gt;|}}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| name_sid = {{{name_sid|}}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| name_sid = {{{name_sid|}}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| desc_sid = {{{desc_sid|}}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| desc_sid = {{{desc_sid|}}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key HOMM_:diff:1.41:old-13137:rev-13179:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>76561198026315966</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:HeroClassDef&amp;diff=13137&amp;oldid=prev</id>
		<title>76561198026315966: obelisk-bot: uploading initial Cargo templates</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:HeroClassDef&amp;diff=13137&amp;oldid=prev"/>
		<updated>2026-05-12T23:33:19Z</updated>

		<summary type="html">&lt;p&gt;obelisk-bot: uploading initial Cargo templates&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
One row per hero class — exactly &amp;#039;&amp;#039;&amp;#039;12 rows&amp;#039;&amp;#039;&amp;#039;, the cross-product of the 6 factions and the 2 class types (&amp;lt;code&amp;gt;might&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;magic&amp;lt;/code&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Faction !! Might class !! Magic class&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;human&amp;lt;/code&amp;gt; || Knight || Cleric&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;undead&amp;lt;/code&amp;gt; || Death Knight || Necromancer&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;dungeon&amp;lt;/code&amp;gt; || Overlord || Warlock&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;nature&amp;lt;/code&amp;gt; || Warden || Druid&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;demon&amp;lt;/code&amp;gt; || Enforcer || Herald&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;unfrozen&amp;lt;/code&amp;gt; || Oathkeeper || Riftspeaker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each row holds the &amp;#039;&amp;#039;&amp;#039;default values&amp;#039;&amp;#039;&amp;#039; that every hero of that class inherits. Individual &amp;lt;code&amp;gt;HeroDef&amp;lt;/code&amp;gt; rows carry only the &amp;#039;&amp;#039;deltas&amp;#039;&amp;#039; — fields the hero diverges from the class on (always &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;icon&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;specialization&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;startSquad&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;startSkills&amp;lt;/code&amp;gt;, etc.; sometimes &amp;lt;code&amp;gt;stats&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;startLevel&amp;lt;/code&amp;gt;,&lt;br /&gt;
etc. for campaign and tutorial heroes who deviate from the canonical template). When a &amp;lt;code&amp;gt;HeroDef&amp;lt;/code&amp;gt; row omits a class-level field, the wiki display layer joins to &amp;lt;code&amp;gt;HeroClassDef&amp;lt;/code&amp;gt; to fill it in. See D-026.&lt;br /&gt;
&lt;br /&gt;
Empirical: across all 108 faction heroes, the 11 class-level fields listed below are &amp;#039;&amp;#039;&amp;#039;invariant&amp;#039;&amp;#039;&amp;#039; within each class — there are zero deviations from the template. Campaign (46) and tutorial (21) heroes universally override &amp;lt;code&amp;gt;stats&amp;lt;/code&amp;gt; plus a small subset of other fields, treating the &amp;lt;code&amp;gt;HeroClassDef&amp;lt;/code&amp;gt; row as a starting point.&lt;br /&gt;
&lt;br /&gt;
== Schema ==&lt;br /&gt;
{{#cargo_declare:_table=HeroClass&lt;br /&gt;
| id = String&lt;br /&gt;
| name = String&lt;br /&gt;
| desc = Wikitext&lt;br /&gt;
| name_sid = String&lt;br /&gt;
| desc_sid = String&lt;br /&gt;
| faction = String (allowed values=human,undead,dungeon,nature,demon,unfrozen)&lt;br /&gt;
| class_type = String (allowed values=might,magic)&lt;br /&gt;
| mesh = String&lt;br /&gt;
| mount = String&lt;br /&gt;
| native_biome = String&lt;br /&gt;
| skills_roll_variant = String&lt;br /&gt;
| cost_gold = Integer&lt;br /&gt;
| start_level = Integer&lt;br /&gt;
| attacks_times_before = String&lt;br /&gt;
| view_radius = Integer&lt;br /&gt;
| stats_num = Integer&lt;br /&gt;
| magic_casts_per_round = Integer&lt;br /&gt;
| enable_tactics = Boolean&lt;br /&gt;
| tactics_placement_size = Integer&lt;br /&gt;
| enable_hero_native_biome = Boolean&lt;br /&gt;
| offence = Integer&lt;br /&gt;
| defence = Integer&lt;br /&gt;
| spell_power = Integer&lt;br /&gt;
| intelligence = Integer&lt;br /&gt;
| luck = Integer&lt;br /&gt;
| morale = Integer&lt;br /&gt;
| roll_lvl1_attack = Integer&lt;br /&gt;
| roll_lvl1_defense = Integer&lt;br /&gt;
| roll_lvl1_power = Integer&lt;br /&gt;
| roll_lvl1_knowledge = Integer&lt;br /&gt;
| roll_lvl24_attack = Integer&lt;br /&gt;
| roll_lvl24_defense = Integer&lt;br /&gt;
| roll_lvl24_power = Integer&lt;br /&gt;
| roll_lvl24_knowledge = Integer&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{HeroClassDef&lt;br /&gt;
| id = String                  &amp;lt;!-- e.g. magic_demon, might_human --&amp;gt;&lt;br /&gt;
| name = String                &amp;lt;!-- e.g. Herald, Knight --&amp;gt;&lt;br /&gt;
| desc = Wikitext              &amp;lt;!-- shared per classType (might_desc / magic_desc) --&amp;gt;&lt;br /&gt;
| name_sid = String&lt;br /&gt;
| desc_sid = String&lt;br /&gt;
&lt;br /&gt;
| faction = String (allowed values=human,undead,dungeon,nature,demon,unfrozen)&lt;br /&gt;
| class_type = String (allowed values=might,magic)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Class defaults: every faction hero inherits these unchanged --&amp;gt;&lt;br /&gt;
| mesh = String&lt;br /&gt;
| mount = String                 &amp;lt;!-- single mount; source is a list, but always length 1 --&amp;gt;&lt;br /&gt;
| native_biome = String&lt;br /&gt;
| skills_roll_variant = String&lt;br /&gt;
| cost_gold = Integer&lt;br /&gt;
| start_level = Integer&lt;br /&gt;
| attacks_times_before = String  &amp;lt;!-- comma-joined floats, e.g. &amp;quot;0.5&amp;quot; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Stat block (full UnitStats-style flatten) --&amp;gt;&lt;br /&gt;
| view_radius = Integer&lt;br /&gt;
| stats_num = Integer&lt;br /&gt;
| magic_casts_per_round = Integer&lt;br /&gt;
| enable_tactics = Boolean&lt;br /&gt;
| tactics_placement_size = Integer&lt;br /&gt;
| enable_hero_native_biome = Boolean&lt;br /&gt;
| offence = Integer&lt;br /&gt;
| defence = Integer&lt;br /&gt;
| spell_power = Integer&lt;br /&gt;
| intelligence = Integer&lt;br /&gt;
| luck = Integer&lt;br /&gt;
| morale = Integer&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- statsRolls flattened: always 2 bands (level 1 / level 24),&lt;br /&gt;
     each with chance weights for which stat the level-up bonus&lt;br /&gt;
     lands on. Source `v` indexes 0/1/2/3 are interpreted as&lt;br /&gt;
     attack / defense / power / knowledge in that order. --&amp;gt;&lt;br /&gt;
| roll_lvl1_attack = Integer&lt;br /&gt;
| roll_lvl1_defense = Integer&lt;br /&gt;
| roll_lvl1_power = Integer&lt;br /&gt;
| roll_lvl1_knowledge = Integer&lt;br /&gt;
| roll_lvl24_attack = Integer&lt;br /&gt;
| roll_lvl24_defense = Integer&lt;br /&gt;
| roll_lvl24_power = Integer&lt;br /&gt;
| roll_lvl24_knowledge = Integer&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Field notes ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; is &amp;lt;code&amp;gt;&amp;lt;class_type&amp;gt;_&amp;lt;faction&amp;gt;&amp;lt;/code&amp;gt; (matches the L10n SID prefix). 12 fixed values: &amp;lt;code&amp;gt;might_human&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;magic_human&amp;lt;/code&amp;gt;, … &amp;lt;code&amp;gt;magic_unfrozen&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; comes from &amp;lt;code&amp;gt;&amp;lt;class_type&amp;gt;_&amp;lt;faction&amp;gt;_name&amp;lt;/code&amp;gt; SIDs (e.g. &amp;lt;code&amp;gt;magic_demon_name&amp;lt;/code&amp;gt; → &amp;quot;Herald&amp;quot;). Full 16-language coverage on all 12 SIDs.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;desc&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; comes from one of two shared SIDs: &amp;lt;code&amp;gt;might_desc&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;magic_desc&amp;lt;/code&amp;gt;. The same description appears on all 6 factions of a given type — Unfrozen reused it, faction doesn&amp;#039;t matter for this text. Both SIDs have full 16-language coverage. &amp;#039;&amp;#039;&amp;#039;All 6 might classes share the same &amp;lt;code&amp;gt;desc_sid=&amp;#039;might_desc&amp;#039;&amp;lt;/code&amp;gt;; all 6 magic classes share &amp;lt;code&amp;gt;desc_sid=&amp;#039;magic_desc&amp;#039;&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; — translation duplication is intentional (one SID, six joined rows).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;mount&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; is singular here even though the source&amp;#039;s &amp;lt;code&amp;gt;mounts&amp;lt;/code&amp;gt; is a list, because every faction hero in the 2026-05-03 corpus has exactly one mount per class. If a future patch ships heroes with multiple mounts, promote this to a list-typed column or split it to a side table.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;stats&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; is flattened from the source&amp;#039;s nested &amp;lt;code&amp;gt;stats&amp;lt;/code&amp;gt; dict. All twelve fields present on every hero.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;statsRolls&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; is uniformly 2 bands × 4 chances across all 108 faction heroes. The second band always starts at level 24, and the chance-value tuple is always &amp;lt;code&amp;gt;v=(0, 1, 2, 3)&amp;lt;/code&amp;gt; in that exact order. The &amp;lt;code&amp;gt;v&amp;lt;/code&amp;gt; indexes don&amp;#039;t appear in source data with any player-facing meaning, but their order matches the four primary stats — so the schema flattens them to named columns &amp;lt;code&amp;gt;roll_lvl&amp;lt;N&amp;gt;_&amp;lt;stat&amp;gt;&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;attack&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;defense&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;power&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;knowledge&amp;lt;/code&amp;gt;) holding the chance weight for that level-band / stat-bonus pair. Weights sum to 100 within each band. &amp;#039;&amp;#039;&amp;#039;If a future patch reveals this stat-order assumption is wrong, the column names need to change accordingly&amp;#039;&amp;#039;&amp;#039; — the JSON itself doesn&amp;#039;t label them.&lt;br /&gt;
&lt;br /&gt;
== Override semantics ==&lt;br /&gt;
The &amp;lt;code&amp;gt;HeroDef&amp;lt;/code&amp;gt; table mirrors most of the columns above. When the bot emits a hero row:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Faction heroes (108):&amp;#039;&amp;#039;&amp;#039; the bot omits all 11 class-level columns from the &amp;lt;code&amp;gt;HeroDef&amp;lt;/code&amp;gt; row — they&amp;#039;re all defaulted from &amp;lt;code&amp;gt;HeroClassDef&amp;lt;/code&amp;gt;. Display layer reads the field from &amp;lt;code&amp;gt;HeroDef&amp;lt;/code&amp;gt;; if absent, joins &amp;lt;code&amp;gt;HeroClassDef&amp;lt;/code&amp;gt; on &amp;lt;code&amp;gt;Hero.class_id = HeroClass.id&amp;lt;/code&amp;gt; and reads from there.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Campaign / tutorial heroes:&amp;#039;&amp;#039;&amp;#039; the bot includes only the columns where the hero deviates from the class template. Empirically these are almost always &amp;lt;code&amp;gt;stats&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;attacks_times_before&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;start_level&amp;lt;/code&amp;gt;; sometimes &amp;lt;code&amp;gt;mesh&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mounts&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;skills_roll_variant&amp;lt;/code&amp;gt;. All other class-level columns stay defaulted.&lt;br /&gt;
&lt;br /&gt;
The override rule is a single Cargo query pattern:&lt;br /&gt;
&amp;lt;code&amp;gt;COALESCE(Hero.&amp;lt;col&amp;gt;, HeroClass.&amp;lt;col&amp;gt;)&amp;lt;/code&amp;gt; — Hero wins when present,&lt;br /&gt;
HeroClass fills in otherwise.&lt;br /&gt;
&lt;br /&gt;
== Related tables ==&lt;br /&gt;
* [[Template:HeroDef|Hero]] — joined on &amp;lt;code&amp;gt;Hero.class_id = HeroClass.id&amp;lt;/code&amp;gt; (1:N). Hero rows hold only the per-hero data and any fields that override the class default.&lt;br /&gt;
* [[HeroClassTranslation]] — joined on &amp;lt;code&amp;gt;id = class_id&amp;lt;/code&amp;gt; (1:1) for the 15 non-English locales of &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;desc&amp;lt;/code&amp;gt;.&lt;br /&gt;
* [[Template:HeroSubClassDef|HeroSubClass]] — the named prestige classes (Swashbuckler, Paragon, etc.) that branch off each HeroClass at certain skill thresholds. Joined via &amp;lt;code&amp;gt;HeroSubClass.faction + HeroSubClass.class_type&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Cargo Definitions]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;{{#cargo_store:_table=HeroClass&lt;br /&gt;
| id = {{{id|}}}&lt;br /&gt;
| name = {{{name|}}}&lt;br /&gt;
| desc = {{{desc|}}}&lt;br /&gt;
| name_sid = {{{name_sid|}}}&lt;br /&gt;
| desc_sid = {{{desc_sid|}}}&lt;br /&gt;
| faction = {{{faction|}}}&lt;br /&gt;
| class_type = {{{class_type|}}}&lt;br /&gt;
| mesh = {{{mesh|}}}&lt;br /&gt;
| mount = {{{mount|}}}&lt;br /&gt;
| native_biome = {{{native_biome|}}}&lt;br /&gt;
| skills_roll_variant = {{{skills_roll_variant|}}}&lt;br /&gt;
| cost_gold = {{{cost_gold|}}}&lt;br /&gt;
| start_level = {{{start_level|}}}&lt;br /&gt;
| attacks_times_before = {{{attacks_times_before|}}}&lt;br /&gt;
| view_radius = {{{view_radius|}}}&lt;br /&gt;
| stats_num = {{{stats_num|}}}&lt;br /&gt;
| magic_casts_per_round = {{{magic_casts_per_round|}}}&lt;br /&gt;
| enable_tactics = {{{enable_tactics|}}}&lt;br /&gt;
| tactics_placement_size = {{{tactics_placement_size|}}}&lt;br /&gt;
| enable_hero_native_biome = {{{enable_hero_native_biome|}}}&lt;br /&gt;
| offence = {{{offence|}}}&lt;br /&gt;
| defence = {{{defence|}}}&lt;br /&gt;
| spell_power = {{{spell_power|}}}&lt;br /&gt;
| intelligence = {{{intelligence|}}}&lt;br /&gt;
| luck = {{{luck|}}}&lt;br /&gt;
| morale = {{{morale|}}}&lt;br /&gt;
| roll_lvl1_attack = {{{roll_lvl1_attack|}}}&lt;br /&gt;
| roll_lvl1_defense = {{{roll_lvl1_defense|}}}&lt;br /&gt;
| roll_lvl1_power = {{{roll_lvl1_power|}}}&lt;br /&gt;
| roll_lvl1_knowledge = {{{roll_lvl1_knowledge|}}}&lt;br /&gt;
| roll_lvl24_attack = {{{roll_lvl24_attack|}}}&lt;br /&gt;
| roll_lvl24_defense = {{{roll_lvl24_defense|}}}&lt;br /&gt;
| roll_lvl24_power = {{{roll_lvl24_power|}}}&lt;br /&gt;
| roll_lvl24_knowledge = {{{roll_lvl24_knowledge|}}}&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>76561198026315966</name></author>
	</entry>
</feed>