<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://ringofbrodgar.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Csatangollah</id>
	<title>Ring of Brodgar - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://ringofbrodgar.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Csatangollah"/>
	<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/wiki/Special:Contributions/Csatangollah"/>
	<updated>2026-06-19T17:56:13Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Property:Skill_page&amp;diff=120245</id>
		<title>Property:Skill page</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Property:Skill_page&amp;diff=120245"/>
		<updated>2025-12-28T03:57:42Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: adding property documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;the type of this is a [[Has type::Page]]&lt;br /&gt;
&lt;br /&gt;
it is for refering to a skill (in this context the skill&#039;s page) by name&lt;br /&gt;
&lt;br /&gt;
one of its uses is to store links of pages inside subobjects of data, or records&lt;br /&gt;
&lt;br /&gt;
{{Property_cat}}&lt;br /&gt;
{{Property page support links}}&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Property:Skill_tree_coordinate_rates&amp;diff=120244</id>
		<title>Property:Skill tree coordinate rates</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Property:Skill_tree_coordinate_rates&amp;diff=120244"/>
		<updated>2025-12-28T03:50:17Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: adding property documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;the type of this is a [[Has type::Record]]&lt;br /&gt;
&lt;br /&gt;
it has got the following fields: [[Has fields::Coordinate_x_rate; Coordinate_y_rate; Size_x_rate; Size_y_rate]]&lt;br /&gt;
&lt;br /&gt;
this property is meant to define coordinates, and sizes of areas on a skill tree image - for area linking purposes&lt;br /&gt;
&lt;br /&gt;
it is doing so the way each one of its numbers are according to the ancestor container size rates (percentage numbers in css)&lt;br /&gt;
&lt;br /&gt;
see formatting info on contained fields&lt;br /&gt;
&lt;br /&gt;
{{Property_cat}}&lt;br /&gt;
{{Property page support links}}&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Property:Size_y_rate&amp;diff=120243</id>
		<title>Property:Size y rate</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Property:Size_y_rate&amp;diff=120243"/>
		<updated>2025-12-28T03:40:17Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: moving definition to template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Property_rate_number_of_100}}&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Property:Size_x_rate&amp;diff=120242</id>
		<title>Property:Size x rate</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Property:Size_x_rate&amp;diff=120242"/>
		<updated>2025-12-28T03:39:42Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: moving definition to template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Property_rate_number_of_100}}&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Property:Coordinate_y_rate&amp;diff=120241</id>
		<title>Property:Coordinate y rate</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Property:Coordinate_y_rate&amp;diff=120241"/>
		<updated>2025-12-28T03:39:01Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: moving definition to template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Property_rate_number_of_100}}&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Property:Coordinate_x_rate&amp;diff=120240</id>
		<title>Property:Coordinate x rate</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Property:Coordinate_x_rate&amp;diff=120240"/>
		<updated>2025-12-28T03:38:11Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: moving definition to template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Property_rate_number_of_100}}&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Template:Property_rate_number_of_100&amp;diff=120239</id>
		<title>Template:Property rate number of 100</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Template:Property_rate_number_of_100&amp;diff=120239"/>
		<updated>2025-12-28T03:37:05Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
common documentation of at least four properties&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&lt;br /&gt;
the type of this is a [[Has type::Number]]&lt;br /&gt;
&lt;br /&gt;
this number type is meant to contain floating point precision numbers with two digits&lt;br /&gt;
&lt;br /&gt;
this number type is a rate number not from -1 to 1, (neither from 0 to 1), but from 0 to +100 including these. &lt;br /&gt;
&lt;br /&gt;
although currently it is used &amp;lt;pre style=&amp;quot;display: inline&amp;quot;&amp;gt;0 !&amp;gt; this !&amp;gt; +100&amp;lt;/pre&amp;gt;, othertimes using it as &amp;lt;pre style=&amp;quot;display: inline&amp;quot;&amp;gt;-100 !&amp;gt; this !&amp;gt; +100&amp;lt;/pre&amp;gt; is possible&lt;br /&gt;
&lt;br /&gt;
it is intended to be used in css as such&lt;br /&gt;
&lt;br /&gt;
{{Property_cat}}&lt;br /&gt;
{{Property page support links}}&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Template:Property_rate_number_of_100&amp;diff=120238</id>
		<title>Template:Property rate number of 100</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Template:Property_rate_number_of_100&amp;diff=120238"/>
		<updated>2025-12-28T03:36:41Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: Created page with &amp;quot;&amp;lt;noinclude&amp;gt; common documentation of at least four properties &amp;lt;/noinclude&amp;gt; &amp;lt;onlyinclude&amp;gt; the type of this is a Has type::Number  this number type is meant to contain floating point precision numbers with two digits  this number type is a rate number not from -1 to 1, (neither from 0 to 1), but from 0 to +100 including these.   although currently it is used &amp;lt;pre style=&amp;quot;display: inline&amp;quot;&amp;gt;0 !&amp;gt; this !&amp;gt; +100&amp;lt;/pre&amp;gt;, othertimes using it as &amp;lt;pre style=&amp;quot;display: inline&amp;quot;&amp;gt;-100 !&amp;gt;...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
common documentation of at least four properties&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
the type of this is a [[Has type::Number]]&lt;br /&gt;
&lt;br /&gt;
this number type is meant to contain floating point precision numbers with two digits&lt;br /&gt;
&lt;br /&gt;
this number type is a rate number not from -1 to 1, (neither from 0 to 1), but from 0 to +100 including these. &lt;br /&gt;
&lt;br /&gt;
although currently it is used &amp;lt;pre style=&amp;quot;display: inline&amp;quot;&amp;gt;0 !&amp;gt; this !&amp;gt; +100&amp;lt;/pre&amp;gt;, othertimes using it as &amp;lt;pre style=&amp;quot;display: inline&amp;quot;&amp;gt;-100 !&amp;gt; this !&amp;gt; +100&amp;lt;/pre&amp;gt; is possible&lt;br /&gt;
&lt;br /&gt;
it is intended to be used in css as such&lt;br /&gt;
&lt;br /&gt;
{{Property_cat}}&lt;br /&gt;
{{Property page support links}}&lt;br /&gt;
&amp;lt;/onlyinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Property:Coordinate_x_rate&amp;diff=120237</id>
		<title>Property:Coordinate x rate</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Property:Coordinate_x_rate&amp;diff=120237"/>
		<updated>2025-12-28T03:31:54Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: adding back property documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;the type of this is a [[Has type::Number]]&lt;br /&gt;
&lt;br /&gt;
this number type is meant to contain floating point precision numbers with two digits&lt;br /&gt;
&lt;br /&gt;
this number type is a rate number not from -1 to 1, (neither from 0 to 1), but from 0 to +100 including these. &lt;br /&gt;
&lt;br /&gt;
although currently it is used &amp;lt;pre style=&amp;quot;display: inline&amp;quot;&amp;gt;0 !&amp;gt; this !&amp;gt; +100&amp;lt;/pre&amp;gt;, othertimes using it as &amp;lt;pre style=&amp;quot;display: inline&amp;quot;&amp;gt;-100 !&amp;gt; this !&amp;gt; +100&amp;lt;/pre&amp;gt; is possible&lt;br /&gt;
&lt;br /&gt;
it is intended to be used in css as such&lt;br /&gt;
&lt;br /&gt;
{{Property_cat}}&lt;br /&gt;
{{Property page support links}}&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Template:Skill_tree_skill_marker&amp;diff=120236</id>
		<title>Template:Skill tree skill marker</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Template:Skill_tree_skill_marker&amp;diff=120236"/>
		<updated>2025-12-28T03:05:38Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: updating resolution to bug&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;div&lt;br /&gt;
style=&amp;quot;&lt;br /&gt;
 position: absolute&lt;br /&gt;
 ; display: flex&lt;br /&gt;
 ; justify-content: center&lt;br /&gt;
 ; align-items: center&lt;br /&gt;
 ; left: {{{2}}}%&lt;br /&gt;
 ; top: {{{3}}}%&lt;br /&gt;
 ; width: {{{4}}}%&lt;br /&gt;
 ; height: {{{5}}}%&lt;br /&gt;
 ; transform: translate(-50%, -50%)&lt;br /&gt;
 ; z-index: 10&lt;br /&gt;
 ; filter: alpha(opacity=0) !important&lt;br /&gt;
 ; -moz-opacity: 0 !important&lt;br /&gt;
 ; -khtml-opacity: 0 !important&lt;br /&gt;
 ; opacity: 0 !important&lt;br /&gt;
 ; background-color: transparent !important&lt;br /&gt;
 ; -ms-filter: &#039;progid:DXImageTransform.Microsoft.Alpha(Opacity=0)&#039; !important&lt;br /&gt;
&amp;quot;title=&amp;quot;{{{6|something}}} costs {{{7|unknown}}} learning points&amp;quot;&lt;br /&gt;
&amp;gt;&amp;lt;span&lt;br /&gt;
 style=&amp;quot;font-size: 30px&amp;quot;&lt;br /&gt;
 title=&amp;quot;{{{6|something}}} costs {{{7|unknown}}} learning points&amp;quot;&lt;br /&gt;
&amp;gt;[[{{{6}}}|o]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
this fills up the skill tree png&#039;s (File:Skill_tree_definition.png) ancestor div with itself for each area definition in [[Data:Skill_tree_skill_icon_area_registry]] - each one of this should be a link to the respective icon&#039;s page from the [[Skills|skills page]]&lt;br /&gt;
&lt;br /&gt;
these &amp;quot;area&amp;quot; links on the png work the way that there is an &amp;quot;o&amp;quot; hidden link display that is 30px font size for each icon inside the same div the png is in (roughly)&lt;br /&gt;
&lt;br /&gt;
the 30px font size is the proportional icon size: for example the original icons were set to be 76px squared, and the png was set to be 1200px wide with 3123px original width - so the pixel size of the font of a single character like &amp;quot;o&amp;quot; has to be 76px times 1200 over 3123 pixels that is approximately 29.2px - however i rounded it up&lt;br /&gt;
&lt;br /&gt;
each position can be got by using the source code included in the summary of the File:Skill_tree_definition.png in an application like visual studio code with jebbs&#039; plantuml extension (both are free), and then generate a new svg based on that source, open the svg in browser, open dev mode with f12, and then run javascript that is going to paste every single node the plantumel was containing as &amp;quot;rectangles&amp;quot; onto the user&#039;s clipboard:&lt;br /&gt;
&lt;br /&gt;
example javascript used for the old uml source code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// 1. Get the total width and height of the SVG viewbox&lt;br /&gt;
const svg = document.querySelector(&#039;svg&#039;);&lt;br /&gt;
const totalW = svg.viewBox.baseVal.width || svg.width.baseVal.value;&lt;br /&gt;
const totalH = svg.viewBox.baseVal.height || svg.height.baseVal.value;&lt;br /&gt;
&lt;br /&gt;
// 2. Select and sort skills&lt;br /&gt;
const skills = Array.from(document.querySelectorAll(&#039;g[id^=&amp;quot;elem_&amp;quot;]&#039;));&lt;br /&gt;
skills.sort((a, b) =&amp;gt; a.id.localeCompare(b.id));&lt;br /&gt;
&lt;br /&gt;
// 3. Map to Percentage Rates&lt;br /&gt;
const registryData = skills.map(skill =&amp;gt; {&lt;br /&gt;
    const bbox = skill.getBBox();&lt;br /&gt;
    const alias = skill.id.replace(&#039;elem_&#039;, &#039;&#039;);&lt;br /&gt;
    &lt;br /&gt;
    // Calculate Percentages&lt;br /&gt;
    const centerX = ((bbox.x + (bbox.width / 2)) / totalW) * 100;&lt;br /&gt;
    const centerY = ((bbox.y + (bbox.height / 2)) / totalH) * 100;&lt;br /&gt;
    const sizeX = (bbox.width / totalW) * 100;&lt;br /&gt;
    const sizeY = (bbox.height / totalH) * 100;&lt;br /&gt;
    &lt;br /&gt;
    return `{{#subobject: |Skill_page=${alias} |Skill_tree_coordinate_rates=${centerX.toFixed(2)}; ${centerY.toFixed(2)}; ${sizeX.toFixed(2)}; ${sizeY.toFixed(2)} }}`;&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// 4. Copy directly to your clipboard&lt;br /&gt;
const finalOutput = registryData.join(&#039;\n&#039;);&lt;br /&gt;
copy(finalOutput);&lt;br /&gt;
&lt;br /&gt;
console.log(&amp;quot;=== SUCCESS ===&amp;quot;);&lt;br /&gt;
console.log(`${registryData.length} skills converted to PERCENTAGE rates and copied to clipboard.`);&lt;br /&gt;
console.log(`Based on SVG Size: ${totalW}x${totalH}`);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note that using the old uml source code as template instead of the new one to update the uml source code, and then use this javascript on the svg of it will contain the rectangle definitions with lower case letters, and include two default nodes - that all will need to be rewritten to page names by hand, and will need to be removed by hand respectively after the extraction&lt;br /&gt;
&lt;br /&gt;
i have just uploaded new uml source code (it is at File:Skill_tree_definition.png) that will facilitate to upload smaller png files (wiki friendlyness), and will facilitate page name, position, and size extraction - as a new javascript (perhaps witten by ai) will be able to differentiate between stereotypes of rectangles (in order to not extract the root skill nodes), and the page names may be according to the contents of the nodes (in order to not make wiki writers rewrite extracted page names themselves among [[Data:Skill_tree_skill_icon_area_registry|these subobjects]])&lt;br /&gt;
&lt;br /&gt;
i just asked google ai how to extract these infos from svg files, however the important stuff to know before extracting: every coordinate, and size must be relative percentage in format from zero to hundred (not zero to one), without percentage marks (those are placed after the extraction), and rounded to two digits (for readable code)&lt;br /&gt;
&lt;br /&gt;
it is also worth mentioning that with the new source code template the aliases are no longer feasable to be extracted (it has not been, but it did not matter before) because some of the aliases may contain different letters compared to the page names for the sake of handling those in uml. for example content &amp;quot;locks &amp;amp; bolts&amp;quot; is under alias &amp;quot;locks n bolts&amp;quot; in the new uml source - so the content will be needed to be extracted, not the alias (the current javascript example is extracting aliases)&lt;br /&gt;
&lt;br /&gt;
further more according to ai&#039;s current knowledge it is possible to extract only the images&#039;, or only the labels&#039; positions, and sizes (beside page name) - such that for example it is possible to make the interactive skill tree have the hover-title with the lp cost for skill icons, and then the link to the skill on the skill&#039;s name near the skill icon&lt;br /&gt;
&lt;br /&gt;
also: according to object oriented programming the [[Template:Skill_tree_skill_marker|skill tree skill marker template]] is meant to be &amp;quot;touching&amp;quot; the skill tree it is on, because it is the collective marker on the skill tree - so me personally am not recommending to put other data between when it comes to extension of code for example to separate skill tree skill icon, and skill tree skill name definitions (to do title-link combination on the interactive map)&lt;br /&gt;
&lt;br /&gt;
currently it is also possible to possess the lp points written on the skill tree using transparent font in the uml sourcecode, and then looking for the lp text area position, and then just placing the actual ever so updated lp cost onto the skill tree from here&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Template:Template_sandbox/ImageMapping&amp;diff=120235</id>
		<title>Template:Template sandbox/ImageMapping</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Template:Template_sandbox/ImageMapping&amp;diff=120235"/>
		<updated>2025-12-28T03:04:34Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: updating resolution to bug&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{MT|off}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;&lt;br /&gt;
 position: relative&lt;br /&gt;
 ; overflow: auto&lt;br /&gt;
 ; max-width: 100%&lt;br /&gt;
 ; height: 440px&lt;br /&gt;
 ; display: block&lt;br /&gt;
&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Skill_tree_definition.png|none|1200px|link=]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;&lt;br /&gt;
 position: absolute&lt;br /&gt;
 ; overflow: hidden&lt;br /&gt;
 ; top: 0&lt;br /&gt;
 ; left: 0&lt;br /&gt;
 ; width: 1200px&lt;br /&gt;
 ; height: 440px&lt;br /&gt;
&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[-Has_subobject::Data:Skill_tree_skill_icon_area_registry]]&lt;br /&gt;
 |?Skill_tree_coordinate_rates.Coordinate_x_rate&lt;br /&gt;
 |?Skill_tree_coordinate_rates.Coordinate_y_rate&lt;br /&gt;
 |?Skill_tree_coordinate_rates.Size_x_rate&lt;br /&gt;
 |?Skill_tree_coordinate_rates.Size_y_rate&lt;br /&gt;
 |?Skill_page&lt;br /&gt;
 |?Skill_page.lpcost&lt;br /&gt;
 |format=template&lt;br /&gt;
 |template=Skill_tree_skill_marker&lt;br /&gt;
 |limit=100&lt;br /&gt;
 |link=none&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{MT|off}}&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
==test skill tree for debugging==&lt;br /&gt;
the page linking functionality of the skill tree had vanished between 2025.12.28 01:09, and 02:58 (according to wiki date time) - the problem was that subobjects were inside &amp;quot;include only tag&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Data:Skill_tree_skill_icon_area_registry&amp;diff=120234</id>
		<title>Data:Skill tree skill icon area registry</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Data:Skill_tree_skill_icon_area_registry&amp;diff=120234"/>
		<updated>2025-12-28T03:03:22Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: updating resolution to bug&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
despite it&#039;s name suggests it is not the icon&#039;s area only, but the containing rectangle&#039;s - becauuse it is possible to only get the icon&#039;s area, and then get the skill name&#039;s area according to current knowledge of google ai.&lt;br /&gt;
&lt;br /&gt;
see more info about extraction here: [[Template:Skill_tree_skill_marker]]&lt;br /&gt;
&lt;br /&gt;
see more info about svg file these are extracted from (including it&#039;s generation using uml code) here: File:Skill_tree_definition.png&lt;br /&gt;
&lt;br /&gt;
do not use &amp;quot;include only&amp;quot; for subobjects - as that will make those be unavailable to queries&lt;br /&gt;
&lt;br /&gt;
the page linking functionality of the skill tree had vanished between 2025.12.28 01:09, and 02:58 (according to wiki date time) - the problem was that subobjects were inside &amp;quot;include only tag&amp;quot;&lt;br /&gt;
&lt;br /&gt;
note: if you can not see a bunch of empty rows beneath, it meens there is a syntactic error (the subobjects are not &amp;quot;include only&amp;quot; for debugging reasons too)&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{#subobject: |Skill_page=Alchemy |Skill_tree_coordinate_rates=31.48; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Ancestral_Worship |Skill_tree_coordinate_rates=18.55; 37.55; 5.57; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Animal_Husbandry |Skill_tree_coordinate_rates=81.03; 53.37; 5.51; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Archery |Skill_tree_coordinate_rates=85.80; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Baking |Skill_tree_coordinate_rates=34.59; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Basic_Mechanics |Skill_tree_coordinate_rates=87.34; 21.73; 4.93; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Beekeeping |Skill_tree_coordinate_rates=49.66; 53.37; 3.87; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Boat_Building |Skill_tree_coordinate_rates=71.53; 37.55; 4.16; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Carpentry |Skill_tree_coordinate_rates=65.83; 53.37; 3.30; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Charcoal_Burning |Skill_tree_coordinate_rates=54.69; 53.37; 5.22; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Cheesemaking |Skill_tree_coordinate_rates=82.09; 37.55; 4.64; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Cooking |Skill_tree_coordinate_rates=34.59; 69.19; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Deep_Artifice |Skill_tree_coordinate_rates=90.51; 5.91; 4.13; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Druidic_Rite |Skill_tree_coordinate_rates=24.98; 5.91; 3.55; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Farming |Skill_tree_coordinate_rates=49.66; 69.19; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Firecrafts |Skill_tree_coordinate_rates=36.35; 85.02; 3.14; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=First_Aid |Skill_tree_coordinate_rates=35.04; 37.55; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Fishing |Skill_tree_coordinate_rates=71.40; 69.19; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Foraging |Skill_tree_coordinate_rates=56.03; 85.02; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Forestry |Skill_tree_coordinate_rates=42.01; 21.73; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Gardening |Skill_tree_coordinate_rates=42.01; 53.37; 3.39; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Glass_Blowing |Skill_tree_coordinate_rates=30.36; 53.37; 4.42; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Hearth_Magic |Skill_tree_coordinate_rates=21.65; 53.37; 4.26; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Hunting |Skill_tree_coordinate_rates=83.40; 69.19; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Jewelry |Skill_tree_coordinate_rates=91.95; 37.55; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Landscaping |Skill_tree_coordinate_rates=71.94; 53.37; 3.94; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Lawspeaking |Skill_tree_coordinate_rates=27.42; 37.55; 4.10; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Locks_&amp;amp;_Bolts |Skill_tree_coordinate_rates=39.16; 37.55; 4.23; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Lumberjacking |Skill_tree_coordinate_rates=62.44; 69.19; 4.45; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Metal_Working |Skill_tree_coordinate_rates=93.61; 53.37; 4.55; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Metallurgy |Skill_tree_coordinate_rates=93.68; 21.73; 3.52; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Mining |Skill_tree_coordinate_rates=98.29; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Murder |Skill_tree_coordinate_rates=5.65; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Music |Skill_tree_coordinate_rates=13.75; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Oral_Tradition |Skill_tree_coordinate_rates=71.43; 85.02; 4.13; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Painting |Skill_tree_coordinate_rates=23.35; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Plant_Lore |Skill_tree_coordinate_rates=38.20; 53.37; 3.23; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Pottery |Skill_tree_coordinate_rates=38.14; 69.19; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Primitive_Tools |Skill_tree_coordinate_rates=60.29; 85.02; 4.48; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Rage |Skill_tree_coordinate_rates=5.65; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Rope_Twining |Skill_tree_coordinate_rates=86.92; 37.55; 4.03; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Sausage_Making |Skill_tree_coordinate_rates=76.68; 37.55; 5.19; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Sewing |Skill_tree_coordinate_rates=45.73; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Siegecraft |Skill_tree_coordinate_rates=1.94; 21.73; 3.43; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Silkfarming |Skill_tree_coordinate_rates=49.86; 37.55; 3.62; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Steelmaking |Skill_tree_coordinate_rates=95.95; 37.55; 3.97; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Stone_Working |Skill_tree_coordinate_rates=93.61; 69.19; 4.55; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Swimming |Skill_tree_coordinate_rates=76.10; 53.37; 3.39; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Tanning |Skill_tree_coordinate_rates=89.32; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=The_Will_to_Power |Skill_tree_coordinate_rates=24.66; 85.02; 5.25; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Theft |Skill_tree_coordinate_rates=2.03; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Trade |Skill_tree_coordinate_rates=10.20; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Trespassing |Skill_tree_coordinate_rates=4.43; 69.19; 3.87; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Tunneling |Skill_tree_coordinate_rates=98.26; 21.73; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Vandalism |Skill_tree_coordinate_rates=1.94; 37.55; 3.39; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Wheelwrighting |Skill_tree_coordinate_rates=66.57; 37.55; 4.77; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Wilderness_Survival |Skill_tree_coordinate_rates=65.96; 85.02; 5.86; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Winemaking |Skill_tree_coordinate_rates=59.75; 53.37; 3.91; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Woodsmanship |Skill_tree_coordinate_rates=45.15; 37.55; 4.80; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Yeomanry |Skill_tree_coordinate_rates=25.98; 53.37; 3.39; 10.59 }}&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Data:Test_data&amp;diff=120233</id>
		<title>Data:Test data</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Data:Test_data&amp;diff=120233"/>
		<updated>2025-12-28T03:00:09Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: adding notice to not use include only on subobjects&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
not &amp;quot;included&amp;quot; text&lt;br /&gt;
&lt;br /&gt;
do not use &amp;quot;include only&amp;quot; for subobjects - as that will make those be unavailable to queries&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{#subobject: |Size_x_rate=0 |Size_y_rate=1 }}&lt;br /&gt;
{{#subobject: |Size_x_rate=2 |Size_y_rate=3 }}&lt;br /&gt;
{{#subobject: |Size_x_rate=4 |Size_y_rate=5 }}&lt;br /&gt;
{{#subobject: |Size_x_rate=6 |Size_y_rate=7 }}&lt;br /&gt;
{{#subobject: |Size_x_rate=8 |Size_y_rate=9 }}&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Data:Skill_tree_skill_icon_area_registry&amp;diff=120232</id>
		<title>Data:Skill tree skill icon area registry</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Data:Skill_tree_skill_icon_area_registry&amp;diff=120232"/>
		<updated>2025-12-28T02:58:45Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: adding notice to not use include only on subobjects&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
do not use &amp;quot;include only&amp;quot; for subobjects - as that will make those be unavailable to queries&lt;br /&gt;
&lt;br /&gt;
the page linking functionality of the skill tree has vanished. it happened somewhere between 2025.12.27 12:06 and 2025.12.28 01:27 (according to wiki date time) - i am trying to figure out the cause&lt;br /&gt;
&lt;br /&gt;
despite it&#039;s name suggests it is not the icon&#039;s area only, but the containing rectangle&#039;s - becauuse it is possible to only get the icon&#039;s area, and then get the skill name&#039;s area according to current knowledge of google ai.&lt;br /&gt;
&lt;br /&gt;
see more info about extraction here: [[Template:Skill_tree_skill_marker]]&lt;br /&gt;
&lt;br /&gt;
see more info about svg file these are extracted from (including it&#039;s generation using uml code) here: File:Skill_tree_definition.png&lt;br /&gt;
&lt;br /&gt;
note: if you can not see a bunch of empty rows beneath, it meens there is a syntactic error (the subobjects are not &amp;quot;include only&amp;quot; for debugging reasons too)&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{#subobject: |Skill_page=Alchemy |Skill_tree_coordinate_rates=31.48; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Ancestral_Worship |Skill_tree_coordinate_rates=18.55; 37.55; 5.57; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Animal_Husbandry |Skill_tree_coordinate_rates=81.03; 53.37; 5.51; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Archery |Skill_tree_coordinate_rates=85.80; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Baking |Skill_tree_coordinate_rates=34.59; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Basic_Mechanics |Skill_tree_coordinate_rates=87.34; 21.73; 4.93; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Beekeeping |Skill_tree_coordinate_rates=49.66; 53.37; 3.87; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Boat_Building |Skill_tree_coordinate_rates=71.53; 37.55; 4.16; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Carpentry |Skill_tree_coordinate_rates=65.83; 53.37; 3.30; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Charcoal_Burning |Skill_tree_coordinate_rates=54.69; 53.37; 5.22; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Cheesemaking |Skill_tree_coordinate_rates=82.09; 37.55; 4.64; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Cooking |Skill_tree_coordinate_rates=34.59; 69.19; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Deep_Artifice |Skill_tree_coordinate_rates=90.51; 5.91; 4.13; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Druidic_Rite |Skill_tree_coordinate_rates=24.98; 5.91; 3.55; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Farming |Skill_tree_coordinate_rates=49.66; 69.19; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Firecrafts |Skill_tree_coordinate_rates=36.35; 85.02; 3.14; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=First_Aid |Skill_tree_coordinate_rates=35.04; 37.55; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Fishing |Skill_tree_coordinate_rates=71.40; 69.19; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Foraging |Skill_tree_coordinate_rates=56.03; 85.02; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Forestry |Skill_tree_coordinate_rates=42.01; 21.73; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Gardening |Skill_tree_coordinate_rates=42.01; 53.37; 3.39; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Glass_Blowing |Skill_tree_coordinate_rates=30.36; 53.37; 4.42; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Hearth_Magic |Skill_tree_coordinate_rates=21.65; 53.37; 4.26; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Hunting |Skill_tree_coordinate_rates=83.40; 69.19; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Jewelry |Skill_tree_coordinate_rates=91.95; 37.55; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Landscaping |Skill_tree_coordinate_rates=71.94; 53.37; 3.94; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Lawspeaking |Skill_tree_coordinate_rates=27.42; 37.55; 4.10; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Locks_&amp;amp;_Bolts |Skill_tree_coordinate_rates=39.16; 37.55; 4.23; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Lumberjacking |Skill_tree_coordinate_rates=62.44; 69.19; 4.45; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Metal_Working |Skill_tree_coordinate_rates=93.61; 53.37; 4.55; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Metallurgy |Skill_tree_coordinate_rates=93.68; 21.73; 3.52; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Mining |Skill_tree_coordinate_rates=98.29; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Murder |Skill_tree_coordinate_rates=5.65; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Music |Skill_tree_coordinate_rates=13.75; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Oral_Tradition |Skill_tree_coordinate_rates=71.43; 85.02; 4.13; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Painting |Skill_tree_coordinate_rates=23.35; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Plant_Lore |Skill_tree_coordinate_rates=38.20; 53.37; 3.23; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Pottery |Skill_tree_coordinate_rates=38.14; 69.19; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Primitive_Tools |Skill_tree_coordinate_rates=60.29; 85.02; 4.48; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Rage |Skill_tree_coordinate_rates=5.65; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Rope_Twining |Skill_tree_coordinate_rates=86.92; 37.55; 4.03; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Sausage_Making |Skill_tree_coordinate_rates=76.68; 37.55; 5.19; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Sewing |Skill_tree_coordinate_rates=45.73; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Siegecraft |Skill_tree_coordinate_rates=1.94; 21.73; 3.43; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Silkfarming |Skill_tree_coordinate_rates=49.86; 37.55; 3.62; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Steelmaking |Skill_tree_coordinate_rates=95.95; 37.55; 3.97; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Stone_Working |Skill_tree_coordinate_rates=93.61; 69.19; 4.55; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Swimming |Skill_tree_coordinate_rates=76.10; 53.37; 3.39; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Tanning |Skill_tree_coordinate_rates=89.32; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=The_Will_to_Power |Skill_tree_coordinate_rates=24.66; 85.02; 5.25; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Theft |Skill_tree_coordinate_rates=2.03; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Trade |Skill_tree_coordinate_rates=10.20; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Trespassing |Skill_tree_coordinate_rates=4.43; 69.19; 3.87; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Tunneling |Skill_tree_coordinate_rates=98.26; 21.73; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Vandalism |Skill_tree_coordinate_rates=1.94; 37.55; 3.39; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Wheelwrighting |Skill_tree_coordinate_rates=66.57; 37.55; 4.77; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Wilderness_Survival |Skill_tree_coordinate_rates=65.96; 85.02; 5.86; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Winemaking |Skill_tree_coordinate_rates=59.75; 53.37; 3.91; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Woodsmanship |Skill_tree_coordinate_rates=45.15; 37.55; 4.80; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Yeomanry |Skill_tree_coordinate_rates=25.98; 53.37; 3.39; 10.59 }}&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Data:Test_data&amp;diff=120231</id>
		<title>Data:Test data</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Data:Test_data&amp;diff=120231"/>
		<updated>2025-12-28T02:54:42Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: so yes, &amp;quot;include only&amp;quot; messes with queries. let me try to remove include only (however it will not resolve the issue i guess)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
not &amp;quot;included&amp;quot; text&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{#subobject: |Size_x_rate=0 |Size_y_rate=1 }}&lt;br /&gt;
{{#subobject: |Size_x_rate=2 |Size_y_rate=3 }}&lt;br /&gt;
{{#subobject: |Size_x_rate=4 |Size_y_rate=5 }}&lt;br /&gt;
{{#subobject: |Size_x_rate=6 |Size_y_rate=7 }}&lt;br /&gt;
{{#subobject: |Size_x_rate=8 |Size_y_rate=9 }}&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Data:Test_data&amp;diff=120230</id>
		<title>Data:Test data</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Data:Test_data&amp;diff=120230"/>
		<updated>2025-12-28T02:53:14Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: adding includeonly around subobjects (while trying to query them from somewhere else)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
not &amp;quot;included&amp;quot; text&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{#subobject: |Size_x_rate=0 |Size_y_rate=1 }}&lt;br /&gt;
{{#subobject: |Size_x_rate=2 |Size_y_rate=3 }}&lt;br /&gt;
{{#subobject: |Size_x_rate=4 |Size_y_rate=5 }}&lt;br /&gt;
{{#subobject: |Size_x_rate=6 |Size_y_rate=7 }}&lt;br /&gt;
{{#subobject: |Size_x_rate=8 |Size_y_rate=9 }}&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Data:Test_data&amp;diff=120229</id>
		<title>Data:Test data</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Data:Test_data&amp;diff=120229"/>
		<updated>2025-12-28T02:51:48Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: testing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
not &amp;quot;included&amp;quot; text&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{#subobject: |Size_x_rate=0 |Size_y_rate=1 }}&lt;br /&gt;
{{#subobject: |Size_x_rate=2 |Size_y_rate=3 }}&lt;br /&gt;
{{#subobject: |Size_x_rate=4 |Size_y_rate=5 }}&lt;br /&gt;
{{#subobject: |Size_x_rate=6 |Size_y_rate=7 }}&lt;br /&gt;
{{#subobject: |Size_x_rate=8 |Size_y_rate=9 }}&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Data:Test_data&amp;diff=120228</id>
		<title>Data:Test data</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Data:Test_data&amp;diff=120228"/>
		<updated>2025-12-28T02:50:21Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: Created page with &amp;quot;{{#subobject: |Size_x_rate=0 |Size_y_rate=1 }} {{#subobject: |Size_x_rate=2 |Size_y_rate=3 }} {{#subobject: |Size_x_rate=4 |Size_y_rate=5 }} {{#subobject: |Size_x_rate=6 |Size_y_rate=7 }} {{#subobject: |Size_x_rate=8 |Size_y_rate=9 }}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#subobject: |Size_x_rate=0 |Size_y_rate=1 }}&lt;br /&gt;
{{#subobject: |Size_x_rate=2 |Size_y_rate=3 }}&lt;br /&gt;
{{#subobject: |Size_x_rate=4 |Size_y_rate=5 }}&lt;br /&gt;
{{#subobject: |Size_x_rate=6 |Size_y_rate=7 }}&lt;br /&gt;
{{#subobject: |Size_x_rate=8 |Size_y_rate=9 }}&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Data:Skill_tree_skill_icon_area_registry&amp;diff=120227</id>
		<title>Data:Skill tree skill icon area registry</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Data:Skill_tree_skill_icon_area_registry&amp;diff=120227"/>
		<updated>2025-12-28T02:43:23Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: put noinclude to top, and added a suggestion to look for syntax errors (given this page is supposed to be generated using javascript)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
the page linking functionality of the skill tree has vanished. it happened somewhere between 2025.12.27 12:06 and 2025.12.28 01:27 (according to wiki date time) - i am trying to figure out the cause&lt;br /&gt;
&lt;br /&gt;
despite it&#039;s name suggests it is not the icon&#039;s area only, but the containing rectangle&#039;s - becauuse it is possible to only get the icon&#039;s area, and then get the skill name&#039;s area according to current knowledge of google ai.&lt;br /&gt;
&lt;br /&gt;
see more info about extraction here: [[Template:Skill_tree_skill_marker]]&lt;br /&gt;
&lt;br /&gt;
see more info about svg file these are extracted from (including it&#039;s generation using uml code) here: File:Skill_tree_definition.png&lt;br /&gt;
&lt;br /&gt;
note: if you can not see a bunch of empty rows beneath, it meens there is a syntactic error (the subobjects are not &amp;quot;include only&amp;quot; for debugging reasons)&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{#subobject: |Skill_page=Alchemy |Skill_tree_coordinate_rates=31.48; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Ancestral_Worship |Skill_tree_coordinate_rates=18.55; 37.55; 5.57; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Animal_Husbandry |Skill_tree_coordinate_rates=81.03; 53.37; 5.51; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Archery |Skill_tree_coordinate_rates=85.80; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Baking |Skill_tree_coordinate_rates=34.59; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Basic_Mechanics |Skill_tree_coordinate_rates=87.34; 21.73; 4.93; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Beekeeping |Skill_tree_coordinate_rates=49.66; 53.37; 3.87; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Boat_Building |Skill_tree_coordinate_rates=71.53; 37.55; 4.16; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Carpentry |Skill_tree_coordinate_rates=65.83; 53.37; 3.30; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Charcoal_Burning |Skill_tree_coordinate_rates=54.69; 53.37; 5.22; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Cheesemaking |Skill_tree_coordinate_rates=82.09; 37.55; 4.64; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Cooking |Skill_tree_coordinate_rates=34.59; 69.19; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Deep_Artifice |Skill_tree_coordinate_rates=90.51; 5.91; 4.13; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Druidic_Rite |Skill_tree_coordinate_rates=24.98; 5.91; 3.55; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Farming |Skill_tree_coordinate_rates=49.66; 69.19; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Firecrafts |Skill_tree_coordinate_rates=36.35; 85.02; 3.14; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=First_Aid |Skill_tree_coordinate_rates=35.04; 37.55; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Fishing |Skill_tree_coordinate_rates=71.40; 69.19; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Foraging |Skill_tree_coordinate_rates=56.03; 85.02; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Forestry |Skill_tree_coordinate_rates=42.01; 21.73; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Gardening |Skill_tree_coordinate_rates=42.01; 53.37; 3.39; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Glass_Blowing |Skill_tree_coordinate_rates=30.36; 53.37; 4.42; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Hearth_Magic |Skill_tree_coordinate_rates=21.65; 53.37; 4.26; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Hunting |Skill_tree_coordinate_rates=83.40; 69.19; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Jewelry |Skill_tree_coordinate_rates=91.95; 37.55; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Landscaping |Skill_tree_coordinate_rates=71.94; 53.37; 3.94; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Lawspeaking |Skill_tree_coordinate_rates=27.42; 37.55; 4.10; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Locks_&amp;amp;_Bolts |Skill_tree_coordinate_rates=39.16; 37.55; 4.23; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Lumberjacking |Skill_tree_coordinate_rates=62.44; 69.19; 4.45; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Metal_Working |Skill_tree_coordinate_rates=93.61; 53.37; 4.55; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Metallurgy |Skill_tree_coordinate_rates=93.68; 21.73; 3.52; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Mining |Skill_tree_coordinate_rates=98.29; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Murder |Skill_tree_coordinate_rates=5.65; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Music |Skill_tree_coordinate_rates=13.75; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Oral_Tradition |Skill_tree_coordinate_rates=71.43; 85.02; 4.13; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Painting |Skill_tree_coordinate_rates=23.35; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Plant_Lore |Skill_tree_coordinate_rates=38.20; 53.37; 3.23; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Pottery |Skill_tree_coordinate_rates=38.14; 69.19; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Primitive_Tools |Skill_tree_coordinate_rates=60.29; 85.02; 4.48; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Rage |Skill_tree_coordinate_rates=5.65; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Rope_Twining |Skill_tree_coordinate_rates=86.92; 37.55; 4.03; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Sausage_Making |Skill_tree_coordinate_rates=76.68; 37.55; 5.19; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Sewing |Skill_tree_coordinate_rates=45.73; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Siegecraft |Skill_tree_coordinate_rates=1.94; 21.73; 3.43; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Silkfarming |Skill_tree_coordinate_rates=49.86; 37.55; 3.62; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Steelmaking |Skill_tree_coordinate_rates=95.95; 37.55; 3.97; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Stone_Working |Skill_tree_coordinate_rates=93.61; 69.19; 4.55; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Swimming |Skill_tree_coordinate_rates=76.10; 53.37; 3.39; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Tanning |Skill_tree_coordinate_rates=89.32; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=The_Will_to_Power |Skill_tree_coordinate_rates=24.66; 85.02; 5.25; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Theft |Skill_tree_coordinate_rates=2.03; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Trade |Skill_tree_coordinate_rates=10.20; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Trespassing |Skill_tree_coordinate_rates=4.43; 69.19; 3.87; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Tunneling |Skill_tree_coordinate_rates=98.26; 21.73; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Vandalism |Skill_tree_coordinate_rates=1.94; 37.55; 3.39; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Wheelwrighting |Skill_tree_coordinate_rates=66.57; 37.55; 4.77; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Wilderness_Survival |Skill_tree_coordinate_rates=65.96; 85.02; 5.86; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Winemaking |Skill_tree_coordinate_rates=59.75; 53.37; 3.91; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Woodsmanship |Skill_tree_coordinate_rates=45.15; 37.55; 4.80; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Yeomanry |Skill_tree_coordinate_rates=25.98; 53.37; 3.39; 10.59 }}&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Data:Skill_tree_skill_icon_area_registry&amp;diff=120226</id>
		<title>Data:Skill tree skill icon area registry</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Data:Skill_tree_skill_icon_area_registry&amp;diff=120226"/>
		<updated>2025-12-28T02:35:20Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: trying to remove includeonly tag - maybe that helps (i am not sure)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#subobject: |Skill_page=Alchemy |Skill_tree_coordinate_rates=31.48; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Ancestral_Worship |Skill_tree_coordinate_rates=18.55; 37.55; 5.57; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Animal_Husbandry |Skill_tree_coordinate_rates=81.03; 53.37; 5.51; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Archery |Skill_tree_coordinate_rates=85.80; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Baking |Skill_tree_coordinate_rates=34.59; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Basic_Mechanics |Skill_tree_coordinate_rates=87.34; 21.73; 4.93; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Beekeeping |Skill_tree_coordinate_rates=49.66; 53.37; 3.87; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Boat_Building |Skill_tree_coordinate_rates=71.53; 37.55; 4.16; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Carpentry |Skill_tree_coordinate_rates=65.83; 53.37; 3.30; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Charcoal_Burning |Skill_tree_coordinate_rates=54.69; 53.37; 5.22; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Cheesemaking |Skill_tree_coordinate_rates=82.09; 37.55; 4.64; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Cooking |Skill_tree_coordinate_rates=34.59; 69.19; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Deep_Artifice |Skill_tree_coordinate_rates=90.51; 5.91; 4.13; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Druidic_Rite |Skill_tree_coordinate_rates=24.98; 5.91; 3.55; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Farming |Skill_tree_coordinate_rates=49.66; 69.19; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Firecrafts |Skill_tree_coordinate_rates=36.35; 85.02; 3.14; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=First_Aid |Skill_tree_coordinate_rates=35.04; 37.55; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Fishing |Skill_tree_coordinate_rates=71.40; 69.19; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Foraging |Skill_tree_coordinate_rates=56.03; 85.02; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Forestry |Skill_tree_coordinate_rates=42.01; 21.73; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Gardening |Skill_tree_coordinate_rates=42.01; 53.37; 3.39; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Glass_Blowing |Skill_tree_coordinate_rates=30.36; 53.37; 4.42; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Hearth_Magic |Skill_tree_coordinate_rates=21.65; 53.37; 4.26; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Hunting |Skill_tree_coordinate_rates=83.40; 69.19; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Jewelry |Skill_tree_coordinate_rates=91.95; 37.55; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Landscaping |Skill_tree_coordinate_rates=71.94; 53.37; 3.94; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Lawspeaking |Skill_tree_coordinate_rates=27.42; 37.55; 4.10; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Locks_&amp;amp;_Bolts |Skill_tree_coordinate_rates=39.16; 37.55; 4.23; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Lumberjacking |Skill_tree_coordinate_rates=62.44; 69.19; 4.45; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Metal_Working |Skill_tree_coordinate_rates=93.61; 53.37; 4.55; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Metallurgy |Skill_tree_coordinate_rates=93.68; 21.73; 3.52; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Mining |Skill_tree_coordinate_rates=98.29; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Murder |Skill_tree_coordinate_rates=5.65; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Music |Skill_tree_coordinate_rates=13.75; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Oral_Tradition |Skill_tree_coordinate_rates=71.43; 85.02; 4.13; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Painting |Skill_tree_coordinate_rates=23.35; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Plant_Lore |Skill_tree_coordinate_rates=38.20; 53.37; 3.23; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Pottery |Skill_tree_coordinate_rates=38.14; 69.19; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Primitive_Tools |Skill_tree_coordinate_rates=60.29; 85.02; 4.48; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Rage |Skill_tree_coordinate_rates=5.65; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Rope_Twining |Skill_tree_coordinate_rates=86.92; 37.55; 4.03; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Sausage_Making |Skill_tree_coordinate_rates=76.68; 37.55; 5.19; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Sewing |Skill_tree_coordinate_rates=45.73; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Siegecraft |Skill_tree_coordinate_rates=1.94; 21.73; 3.43; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Silkfarming |Skill_tree_coordinate_rates=49.86; 37.55; 3.62; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Steelmaking |Skill_tree_coordinate_rates=95.95; 37.55; 3.97; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Stone_Working |Skill_tree_coordinate_rates=93.61; 69.19; 4.55; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Swimming |Skill_tree_coordinate_rates=76.10; 53.37; 3.39; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Tanning |Skill_tree_coordinate_rates=89.32; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=The_Will_to_Power |Skill_tree_coordinate_rates=24.66; 85.02; 5.25; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Theft |Skill_tree_coordinate_rates=2.03; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Trade |Skill_tree_coordinate_rates=10.20; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Trespassing |Skill_tree_coordinate_rates=4.43; 69.19; 3.87; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Tunneling |Skill_tree_coordinate_rates=98.26; 21.73; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Vandalism |Skill_tree_coordinate_rates=1.94; 37.55; 3.39; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Wheelwrighting |Skill_tree_coordinate_rates=66.57; 37.55; 4.77; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Wilderness_Survival |Skill_tree_coordinate_rates=65.96; 85.02; 5.86; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Winemaking |Skill_tree_coordinate_rates=59.75; 53.37; 3.91; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Woodsmanship |Skill_tree_coordinate_rates=45.15; 37.55; 4.80; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Yeomanry |Skill_tree_coordinate_rates=25.98; 53.37; 3.39; 10.59 }}&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
the page linking functionality of the skill tree has vanished. it happened somewhere between 2025.12.27 12:06 and 2025.12.28 01:27 (according to wiki date time) - i am trying to figure out the cause&lt;br /&gt;
&lt;br /&gt;
despite it&#039;s name suggests it is not the icon&#039;s area only, but the containing rectangle&#039;s - becauuse it is possible to only get the icon&#039;s area, and then get the skill name&#039;s area according to current knowledge of google ai.&lt;br /&gt;
&lt;br /&gt;
see more info about extraction here: [[Template:Skill_tree_skill_marker]]&lt;br /&gt;
&lt;br /&gt;
see more info about svg file these are extracted from (including it&#039;s generation using uml code) here: File:Skill_tree_definition.png&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Template:Template_sandbox/ImageMapping&amp;diff=120225</id>
		<title>Template:Template sandbox/ImageMapping</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Template:Template_sandbox/ImageMapping&amp;diff=120225"/>
		<updated>2025-12-28T02:20:35Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: diagnosis set for the issue of vanishing markers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{MT|off}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;&lt;br /&gt;
 position: relative&lt;br /&gt;
 ; overflow: auto&lt;br /&gt;
 ; max-width: 100%&lt;br /&gt;
 ; height: 440px&lt;br /&gt;
 ; display: block&lt;br /&gt;
&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Skill_tree_definition.png|none|1200px|link=]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;&lt;br /&gt;
 position: absolute&lt;br /&gt;
 ; overflow: hidden&lt;br /&gt;
 ; top: 0&lt;br /&gt;
 ; left: 0&lt;br /&gt;
 ; width: 1200px&lt;br /&gt;
 ; height: 440px&lt;br /&gt;
&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[-Has_subobject::Data:Skill_tree_skill_icon_area_registry]]&lt;br /&gt;
 |?Skill_tree_coordinate_rates.Coordinate_x_rate&lt;br /&gt;
 |?Skill_tree_coordinate_rates.Coordinate_y_rate&lt;br /&gt;
 |?Skill_tree_coordinate_rates.Size_x_rate&lt;br /&gt;
 |?Skill_tree_coordinate_rates.Size_y_rate&lt;br /&gt;
 |?Skill_page&lt;br /&gt;
 |?Skill_page.lpcost&lt;br /&gt;
 |format=template&lt;br /&gt;
 |template=Skill_tree_skill_marker&lt;br /&gt;
 |limit=100&lt;br /&gt;
 |link=none&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{MT|off}}&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
==test skill tree for debugging==&lt;br /&gt;
the page linking functionality of the skill tree has vanished. it happened somewhere between 2025.12.27 12:06 and 2025.12.28 01:27 (according to wiki date time) - i am trying to figure out the cause&lt;br /&gt;
&lt;br /&gt;
diagnosis: the subobject query does not seem to get subobjects&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[-Has_subobject::Data:Skill_tree_skill_icon_area_registry]]&lt;br /&gt;
 |format=plainlist&lt;br /&gt;
 |limit=100&lt;br /&gt;
 |link=none&lt;br /&gt;
}}&lt;br /&gt;
{{MT|off}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Template:Template_sandbox/ImageMapping&amp;diff=120224</id>
		<title>Template:Template sandbox/ImageMapping</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Template:Template_sandbox/ImageMapping&amp;diff=120224"/>
		<updated>2025-12-28T02:02:52Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: ading sandbox facility to skill tree template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{MT|off}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;&lt;br /&gt;
 position: relative&lt;br /&gt;
 ; overflow: auto&lt;br /&gt;
 ; max-width: 100%&lt;br /&gt;
 ; height: 440px&lt;br /&gt;
 ; display: block&lt;br /&gt;
&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Skill_tree_definition.png|none|1200px|link=]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;&lt;br /&gt;
 position: absolute&lt;br /&gt;
 ; overflow: hidden&lt;br /&gt;
 ; top: 0&lt;br /&gt;
 ; left: 0&lt;br /&gt;
 ; width: 1200px&lt;br /&gt;
 ; height: 440px&lt;br /&gt;
&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
{{#ask: [[-Has_subobject::Data:Skill_tree_skill_icon_area_registry]]&lt;br /&gt;
 |?Skill_tree_coordinate_rates.Coordinate_x_rate&lt;br /&gt;
 |?Skill_tree_coordinate_rates.Coordinate_y_rate&lt;br /&gt;
 |?Skill_tree_coordinate_rates.Size_x_rate&lt;br /&gt;
 |?Skill_tree_coordinate_rates.Size_y_rate&lt;br /&gt;
 |?Skill_page&lt;br /&gt;
 |?Skill_page.lpcost&lt;br /&gt;
 |format=template&lt;br /&gt;
 |template=Skill_tree_skill_marker&lt;br /&gt;
 |limit=100&lt;br /&gt;
 |sort=Skill_page&lt;br /&gt;
 |order=ascending&lt;br /&gt;
 |link=none&lt;br /&gt;
}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{MT|off}}&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
==test skill tree for debugging==&lt;br /&gt;
&lt;br /&gt;
{{MT|off}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;&lt;br /&gt;
 position: relative&lt;br /&gt;
 ; overflow: auto&lt;br /&gt;
 ; max-width: 100%&lt;br /&gt;
 ; height: 440px&lt;br /&gt;
 ; display: block&lt;br /&gt;
&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Skill_tree_definition.png|none|1200px|link=]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;&lt;br /&gt;
 position: absolute&lt;br /&gt;
 ; overflow: hidden&lt;br /&gt;
 ; top: 0&lt;br /&gt;
 ; left: 0&lt;br /&gt;
 ; width: 1200px&lt;br /&gt;
 ; height: 440px&lt;br /&gt;
&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[-Has_subobject::Data:Skill_tree_skill_icon_area_registry]]&lt;br /&gt;
 |?Skill_tree_coordinate_rates.Coordinate_x_rate&lt;br /&gt;
 |?Skill_tree_coordinate_rates.Coordinate_y_rate&lt;br /&gt;
 |?Skill_tree_coordinate_rates.Size_x_rate&lt;br /&gt;
 |?Skill_tree_coordinate_rates.Size_y_rate&lt;br /&gt;
 |?Skill_page&lt;br /&gt;
 |?Skill_page.lpcost&lt;br /&gt;
 |format=template&lt;br /&gt;
 |template=Skill_tree_skill_marker&lt;br /&gt;
 |limit=100&lt;br /&gt;
 |sort=Skill_page&lt;br /&gt;
 |order=ascending&lt;br /&gt;
 |link=none&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{MT|off}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Skills&amp;diff=120223</id>
		<title>Skills</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Skills&amp;diff=120223"/>
		<updated>2025-12-28T01:59:47Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: moved skill tree to template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div&lt;br /&gt;
class=&amp;quot;toc-collapsible toc-collapsed&amp;quot;&lt;br /&gt;
style=&amp;quot;&lt;br /&gt;
 position: absolute&lt;br /&gt;
 ; display: inline-block&lt;br /&gt;
 ; background-color: white&lt;br /&gt;
 ; z-index: 101&lt;br /&gt;
&amp;quot;&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;height: 50px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Skill Tree ===&lt;br /&gt;
&lt;br /&gt;
{{Skill_tree}}&lt;br /&gt;
&lt;br /&gt;
===List of Skills===&lt;br /&gt;
&lt;br /&gt;
{{#ask:[[Category:Skills|+depth=0]]&lt;br /&gt;
 |?=skillname&lt;br /&gt;
 |?lpcost=lpcost&lt;br /&gt;
 |?paginae/text1=ptext1&lt;br /&gt;
 |?paginae/text2=ptext2&lt;br /&gt;
 |?paginae/text3=ptext3&lt;br /&gt;
 |format=plainlist&lt;br /&gt;
 |limit=100&lt;br /&gt;
 |link=none&lt;br /&gt;
 |template=skills_table{{!}}main&lt;br /&gt;
 |introtemplate=skills_table{{!}}intro&lt;br /&gt;
 |outrotemplate=skills_table{{!}}outro&lt;br /&gt;
 |userparam=ptext_header_on&lt;br /&gt;
 |sep={{!}}-&lt;br /&gt;
 |searchlabel=&lt;br /&gt;
 |named args=1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Game Development}}&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Template:Template_sandbox/ImageMapping&amp;diff=120222</id>
		<title>Template:Template sandbox/ImageMapping</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Template:Template_sandbox/ImageMapping&amp;diff=120222"/>
		<updated>2025-12-28T01:59:24Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: created skill tree template for possibly including it on other pages, but mainly for debugging&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MT|off}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;&lt;br /&gt;
 position: relative&lt;br /&gt;
 ; overflow: auto&lt;br /&gt;
 ; max-width: 100%&lt;br /&gt;
 ; height: 440px&lt;br /&gt;
 ; display: block&lt;br /&gt;
&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Skill_tree_definition.png|none|1200px|link=]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;&lt;br /&gt;
 position: absolute&lt;br /&gt;
 ; overflow: hidden&lt;br /&gt;
 ; top: 0&lt;br /&gt;
 ; left: 0&lt;br /&gt;
 ; width: 1200px&lt;br /&gt;
 ; height: 440px&lt;br /&gt;
&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[-Has_subobject::Data:Skill_tree_skill_icon_area_registry]]&lt;br /&gt;
 |?Skill_tree_coordinate_rates.Coordinate_x_rate&lt;br /&gt;
 |?Skill_tree_coordinate_rates.Coordinate_y_rate&lt;br /&gt;
 |?Skill_tree_coordinate_rates.Size_x_rate&lt;br /&gt;
 |?Skill_tree_coordinate_rates.Size_y_rate&lt;br /&gt;
 |?Skill_page&lt;br /&gt;
 |?Skill_page.lpcost&lt;br /&gt;
 |format=template&lt;br /&gt;
 |template=Skill_tree_skill_marker&lt;br /&gt;
 |limit=100&lt;br /&gt;
 |sort=Skill_page&lt;br /&gt;
 |order=ascending&lt;br /&gt;
 |link=none&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{MT|off}}&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Data:Skill_tree_skill_icon_area_registry&amp;diff=120221</id>
		<title>Data:Skill tree skill icon area registry</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Data:Skill_tree_skill_icon_area_registry&amp;diff=120221"/>
		<updated>2025-12-28T01:54:45Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: added that this functionality has vanished from the skill tree&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{#subobject: |Skill_page=Alchemy |Skill_tree_coordinate_rates=31.48; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Ancestral_Worship |Skill_tree_coordinate_rates=18.55; 37.55; 5.57; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Animal_Husbandry |Skill_tree_coordinate_rates=81.03; 53.37; 5.51; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Archery |Skill_tree_coordinate_rates=85.80; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Baking |Skill_tree_coordinate_rates=34.59; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Basic_Mechanics |Skill_tree_coordinate_rates=87.34; 21.73; 4.93; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Beekeeping |Skill_tree_coordinate_rates=49.66; 53.37; 3.87; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Boat_Building |Skill_tree_coordinate_rates=71.53; 37.55; 4.16; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Carpentry |Skill_tree_coordinate_rates=65.83; 53.37; 3.30; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Charcoal_Burning |Skill_tree_coordinate_rates=54.69; 53.37; 5.22; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Cheesemaking |Skill_tree_coordinate_rates=82.09; 37.55; 4.64; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Cooking |Skill_tree_coordinate_rates=34.59; 69.19; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Deep_Artifice |Skill_tree_coordinate_rates=90.51; 5.91; 4.13; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Druidic_Rite |Skill_tree_coordinate_rates=24.98; 5.91; 3.55; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Farming |Skill_tree_coordinate_rates=49.66; 69.19; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Firecrafts |Skill_tree_coordinate_rates=36.35; 85.02; 3.14; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=First_Aid |Skill_tree_coordinate_rates=35.04; 37.55; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Fishing |Skill_tree_coordinate_rates=71.40; 69.19; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Foraging |Skill_tree_coordinate_rates=56.03; 85.02; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Forestry |Skill_tree_coordinate_rates=42.01; 21.73; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Gardening |Skill_tree_coordinate_rates=42.01; 53.37; 3.39; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Glass_Blowing |Skill_tree_coordinate_rates=30.36; 53.37; 4.42; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Hearth_Magic |Skill_tree_coordinate_rates=21.65; 53.37; 4.26; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Hunting |Skill_tree_coordinate_rates=83.40; 69.19; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Jewelry |Skill_tree_coordinate_rates=91.95; 37.55; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Landscaping |Skill_tree_coordinate_rates=71.94; 53.37; 3.94; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Lawspeaking |Skill_tree_coordinate_rates=27.42; 37.55; 4.10; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Locks_&amp;amp;_Bolts |Skill_tree_coordinate_rates=39.16; 37.55; 4.23; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Lumberjacking |Skill_tree_coordinate_rates=62.44; 69.19; 4.45; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Metal_Working |Skill_tree_coordinate_rates=93.61; 53.37; 4.55; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Metallurgy |Skill_tree_coordinate_rates=93.68; 21.73; 3.52; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Mining |Skill_tree_coordinate_rates=98.29; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Murder |Skill_tree_coordinate_rates=5.65; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Music |Skill_tree_coordinate_rates=13.75; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Oral_Tradition |Skill_tree_coordinate_rates=71.43; 85.02; 4.13; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Painting |Skill_tree_coordinate_rates=23.35; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Plant_Lore |Skill_tree_coordinate_rates=38.20; 53.37; 3.23; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Pottery |Skill_tree_coordinate_rates=38.14; 69.19; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Primitive_Tools |Skill_tree_coordinate_rates=60.29; 85.02; 4.48; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Rage |Skill_tree_coordinate_rates=5.65; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Rope_Twining |Skill_tree_coordinate_rates=86.92; 37.55; 4.03; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Sausage_Making |Skill_tree_coordinate_rates=76.68; 37.55; 5.19; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Sewing |Skill_tree_coordinate_rates=45.73; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Siegecraft |Skill_tree_coordinate_rates=1.94; 21.73; 3.43; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Silkfarming |Skill_tree_coordinate_rates=49.86; 37.55; 3.62; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Steelmaking |Skill_tree_coordinate_rates=95.95; 37.55; 3.97; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Stone_Working |Skill_tree_coordinate_rates=93.61; 69.19; 4.55; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Swimming |Skill_tree_coordinate_rates=76.10; 53.37; 3.39; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Tanning |Skill_tree_coordinate_rates=89.32; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=The_Will_to_Power |Skill_tree_coordinate_rates=24.66; 85.02; 5.25; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Theft |Skill_tree_coordinate_rates=2.03; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Trade |Skill_tree_coordinate_rates=10.20; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Trespassing |Skill_tree_coordinate_rates=4.43; 69.19; 3.87; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Tunneling |Skill_tree_coordinate_rates=98.26; 21.73; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Vandalism |Skill_tree_coordinate_rates=1.94; 37.55; 3.39; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Wheelwrighting |Skill_tree_coordinate_rates=66.57; 37.55; 4.77; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Wilderness_Survival |Skill_tree_coordinate_rates=65.96; 85.02; 5.86; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Winemaking |Skill_tree_coordinate_rates=59.75; 53.37; 3.91; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Woodsmanship |Skill_tree_coordinate_rates=45.15; 37.55; 4.80; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Yeomanry |Skill_tree_coordinate_rates=25.98; 53.37; 3.39; 10.59 }}&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
the page linking functionality of the skill tree has vanished. it happened somewhere between 2025.12.27 12:06 and 2025.12.28 01:27 (according to wiki date time) - i am trying to figure out the cause&lt;br /&gt;
&lt;br /&gt;
despite it&#039;s name suggests it is not the icon&#039;s area only, but the containing rectangle&#039;s - becauuse it is possible to only get the icon&#039;s area, and then get the skill name&#039;s area according to current knowledge of google ai.&lt;br /&gt;
&lt;br /&gt;
see more info about extraction here: [[Template:Skill_tree_skill_marker]]&lt;br /&gt;
&lt;br /&gt;
see more info about svg file these are extracted from (including it&#039;s generation using uml code) here: File:Skill_tree_definition.png&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Template:Skill_tree_skill_marker&amp;diff=120220</id>
		<title>Template:Skill tree skill marker</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Template:Skill_tree_skill_marker&amp;diff=120220"/>
		<updated>2025-12-28T01:54:00Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: noticed that this functionality has vanished from the skill tree&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;div&lt;br /&gt;
style=&amp;quot;&lt;br /&gt;
 position: absolute&lt;br /&gt;
 ; display: flex&lt;br /&gt;
 ; justify-content: center&lt;br /&gt;
 ; align-items: center&lt;br /&gt;
 ; left: {{{2}}}%&lt;br /&gt;
 ; top: {{{3}}}%&lt;br /&gt;
 ; width: {{{4}}}%&lt;br /&gt;
 ; height: {{{5}}}%&lt;br /&gt;
 ; transform: translate(-50%, -50%)&lt;br /&gt;
 ; z-index: 10&lt;br /&gt;
 ; filter: alpha(opacity=0) !important&lt;br /&gt;
 ; -moz-opacity: 0 !important&lt;br /&gt;
 ; -khtml-opacity: 0 !important&lt;br /&gt;
 ; opacity: 0 !important&lt;br /&gt;
 ; background-color: transparent !important&lt;br /&gt;
 ; -ms-filter: &#039;progid:DXImageTransform.Microsoft.Alpha(Opacity=0)&#039; !important&lt;br /&gt;
&amp;quot;title=&amp;quot;{{{6|something}}} costs {{{7|unknown}}} learning points&amp;quot;&lt;br /&gt;
&amp;gt;&amp;lt;span&lt;br /&gt;
 style=&amp;quot;font-size: 30px&amp;quot;&lt;br /&gt;
 title=&amp;quot;{{{6|something}}} costs {{{7|unknown}}} learning points&amp;quot;&lt;br /&gt;
&amp;gt;[[{{{6}}}|o]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
the page linking functionality of the skill tree has vanished. it happened somewhere between 2025.12.27 12:06 and 2025.12.28 01:27 (according to wiki date time) - i am trying to figure out the cause&lt;br /&gt;
&lt;br /&gt;
this fills up the skill tree png&#039;s (File:Skill_tree_definition.png) ancestor div with itself for each area definition in [[Data:Skill_tree_skill_icon_area_registry]] - each one of this should be a link to the respective icon&#039;s page from the [[Skills|skills page]]&lt;br /&gt;
&lt;br /&gt;
these &amp;quot;area&amp;quot; links on the png work the way that there is an &amp;quot;o&amp;quot; hidden link display that is 30px font size for each icon inside the same div the png is in (roughly)&lt;br /&gt;
&lt;br /&gt;
the 30px font size is the proportional icon size: for example the original icons were set to be 76px squared, and the png was set to be 1200px wide with 3123px original width - so the pixel size of the font of a single character like &amp;quot;o&amp;quot; has to be 76px times 1200 over 3123 pixels that is approximately 29.2px - however i rounded it up&lt;br /&gt;
&lt;br /&gt;
each position can be got by using the source code included in the summary of the File:Skill_tree_definition.png in an application like visual studio code with jebbs&#039; plantuml extension (both are free), and then generate a new svg based on that source, open the svg in browser, open dev mode with f12, and then run javascript that is going to paste every single node the plantumel was containing as &amp;quot;rectangles&amp;quot; onto the user&#039;s clipboard:&lt;br /&gt;
&lt;br /&gt;
example javascript used for the old uml source code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// 1. Get the total width and height of the SVG viewbox&lt;br /&gt;
const svg = document.querySelector(&#039;svg&#039;);&lt;br /&gt;
const totalW = svg.viewBox.baseVal.width || svg.width.baseVal.value;&lt;br /&gt;
const totalH = svg.viewBox.baseVal.height || svg.height.baseVal.value;&lt;br /&gt;
&lt;br /&gt;
// 2. Select and sort skills&lt;br /&gt;
const skills = Array.from(document.querySelectorAll(&#039;g[id^=&amp;quot;elem_&amp;quot;]&#039;));&lt;br /&gt;
skills.sort((a, b) =&amp;gt; a.id.localeCompare(b.id));&lt;br /&gt;
&lt;br /&gt;
// 3. Map to Percentage Rates&lt;br /&gt;
const registryData = skills.map(skill =&amp;gt; {&lt;br /&gt;
    const bbox = skill.getBBox();&lt;br /&gt;
    const alias = skill.id.replace(&#039;elem_&#039;, &#039;&#039;);&lt;br /&gt;
    &lt;br /&gt;
    // Calculate Percentages&lt;br /&gt;
    const centerX = ((bbox.x + (bbox.width / 2)) / totalW) * 100;&lt;br /&gt;
    const centerY = ((bbox.y + (bbox.height / 2)) / totalH) * 100;&lt;br /&gt;
    const sizeX = (bbox.width / totalW) * 100;&lt;br /&gt;
    const sizeY = (bbox.height / totalH) * 100;&lt;br /&gt;
    &lt;br /&gt;
    return `{{#subobject: |Skill_page=${alias} |Skill_tree_coordinate_rates=${centerX.toFixed(2)}; ${centerY.toFixed(2)}; ${sizeX.toFixed(2)}; ${sizeY.toFixed(2)} }}`;&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// 4. Copy directly to your clipboard&lt;br /&gt;
const finalOutput = registryData.join(&#039;\n&#039;);&lt;br /&gt;
copy(finalOutput);&lt;br /&gt;
&lt;br /&gt;
console.log(&amp;quot;=== SUCCESS ===&amp;quot;);&lt;br /&gt;
console.log(`${registryData.length} skills converted to PERCENTAGE rates and copied to clipboard.`);&lt;br /&gt;
console.log(`Based on SVG Size: ${totalW}x${totalH}`);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note that using the old uml source code as template instead of the new one to update the uml source code, and then use this javascript on the svg of it will contain the rectangle definitions with lower case letters, and include two default nodes - that all will need to be rewritten to page names by hand, and will need to be removed by hand respectively after the extraction&lt;br /&gt;
&lt;br /&gt;
i have just uploaded new uml source code (it is at File:Skill_tree_definition.png) that will facilitate to upload smaller png files (wiki friendlyness), and will facilitate page name, position, and size extraction - as a new javascript (perhaps witten by ai) will be able to differentiate between stereotypes of rectangles (in order to not extract the root skill nodes), and the page names may be according to the contents of the nodes (in order to not make wiki writers rewrite extracted page names themselves among [[Data:Skill_tree_skill_icon_area_registry|these subobjects]])&lt;br /&gt;
&lt;br /&gt;
i just asked google ai how to extract these infos from svg files, however the important stuff to know before extracting: every coordinate, and size must be relative percentage in format from zero to hundred (not zero to one), without percentage marks (those are placed after the extraction), and rounded to two digits (for readable code)&lt;br /&gt;
&lt;br /&gt;
it is also worth mentioning that with the new source code template the aliases are no longer feasable to be extracted (it has not been, but it did not matter before) because some of the aliases may contain different letters compared to the page names for the sake of handling those in uml. for example content &amp;quot;locks &amp;amp; bolts&amp;quot; is under alias &amp;quot;locks n bolts&amp;quot; in the new uml source - so the content will be needed to be extracted, not the alias (the current javascript example is extracting aliases)&lt;br /&gt;
&lt;br /&gt;
further more according to ai&#039;s current knowledge it is possible to extract only the images&#039;, or only the labels&#039; positions, and sizes (beside page name) - such that for example it is possible to make the interactive skill tree have the hover-title with the lp cost for skill icons, and then the link to the skill on the skill&#039;s name near the skill icon&lt;br /&gt;
&lt;br /&gt;
also: according to object oriented programming the [[Template:Skill_tree_skill_marker|skill tree skill marker template]] is meant to be &amp;quot;touching&amp;quot; the skill tree it is on, because it is the collective marker on the skill tree - so me personally am not recommending to put other data between when it comes to extension of code for example to separate skill tree skill icon, and skill tree skill name definitions (to do title-link combination on the interactive map)&lt;br /&gt;
&lt;br /&gt;
currently it is also possible to possess the lp points written on the skill tree using transparent font in the uml sourcecode, and then looking for the lp text area position, and then just placing the actual ever so updated lp cost onto the skill tree from here&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Data:Skill_tree_skill_icon_area_registry&amp;diff=120219</id>
		<title>Data:Skill tree skill icon area registry</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Data:Skill_tree_skill_icon_area_registry&amp;diff=120219"/>
		<updated>2025-12-28T01:27:46Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: Undo revision 120216 by Csatangollah (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{#subobject: |Skill_page=Alchemy |Skill_tree_coordinate_rates=31.48; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Ancestral_Worship |Skill_tree_coordinate_rates=18.55; 37.55; 5.57; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Animal_Husbandry |Skill_tree_coordinate_rates=81.03; 53.37; 5.51; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Archery |Skill_tree_coordinate_rates=85.80; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Baking |Skill_tree_coordinate_rates=34.59; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Basic_Mechanics |Skill_tree_coordinate_rates=87.34; 21.73; 4.93; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Beekeeping |Skill_tree_coordinate_rates=49.66; 53.37; 3.87; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Boat_Building |Skill_tree_coordinate_rates=71.53; 37.55; 4.16; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Carpentry |Skill_tree_coordinate_rates=65.83; 53.37; 3.30; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Charcoal_Burning |Skill_tree_coordinate_rates=54.69; 53.37; 5.22; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Cheesemaking |Skill_tree_coordinate_rates=82.09; 37.55; 4.64; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Cooking |Skill_tree_coordinate_rates=34.59; 69.19; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Deep_Artifice |Skill_tree_coordinate_rates=90.51; 5.91; 4.13; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Druidic_Rite |Skill_tree_coordinate_rates=24.98; 5.91; 3.55; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Farming |Skill_tree_coordinate_rates=49.66; 69.19; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Firecrafts |Skill_tree_coordinate_rates=36.35; 85.02; 3.14; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=First_Aid |Skill_tree_coordinate_rates=35.04; 37.55; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Fishing |Skill_tree_coordinate_rates=71.40; 69.19; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Foraging |Skill_tree_coordinate_rates=56.03; 85.02; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Forestry |Skill_tree_coordinate_rates=42.01; 21.73; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Gardening |Skill_tree_coordinate_rates=42.01; 53.37; 3.39; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Glass_Blowing |Skill_tree_coordinate_rates=30.36; 53.37; 4.42; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Hearth_Magic |Skill_tree_coordinate_rates=21.65; 53.37; 4.26; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Hunting |Skill_tree_coordinate_rates=83.40; 69.19; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Jewelry |Skill_tree_coordinate_rates=91.95; 37.55; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Landscaping |Skill_tree_coordinate_rates=71.94; 53.37; 3.94; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Lawspeaking |Skill_tree_coordinate_rates=27.42; 37.55; 4.10; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Locks_&amp;amp;_Bolts |Skill_tree_coordinate_rates=39.16; 37.55; 4.23; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Lumberjacking |Skill_tree_coordinate_rates=62.44; 69.19; 4.45; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Metal_Working |Skill_tree_coordinate_rates=93.61; 53.37; 4.55; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Metallurgy |Skill_tree_coordinate_rates=93.68; 21.73; 3.52; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Mining |Skill_tree_coordinate_rates=98.29; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Murder |Skill_tree_coordinate_rates=5.65; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Music |Skill_tree_coordinate_rates=13.75; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Oral_Tradition |Skill_tree_coordinate_rates=71.43; 85.02; 4.13; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Painting |Skill_tree_coordinate_rates=23.35; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Plant_Lore |Skill_tree_coordinate_rates=38.20; 53.37; 3.23; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Pottery |Skill_tree_coordinate_rates=38.14; 69.19; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Primitive_Tools |Skill_tree_coordinate_rates=60.29; 85.02; 4.48; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Rage |Skill_tree_coordinate_rates=5.65; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Rope_Twining |Skill_tree_coordinate_rates=86.92; 37.55; 4.03; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Sausage_Making |Skill_tree_coordinate_rates=76.68; 37.55; 5.19; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Sewing |Skill_tree_coordinate_rates=45.73; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Siegecraft |Skill_tree_coordinate_rates=1.94; 21.73; 3.43; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Silkfarming |Skill_tree_coordinate_rates=49.86; 37.55; 3.62; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Steelmaking |Skill_tree_coordinate_rates=95.95; 37.55; 3.97; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Stone_Working |Skill_tree_coordinate_rates=93.61; 69.19; 4.55; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Swimming |Skill_tree_coordinate_rates=76.10; 53.37; 3.39; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Tanning |Skill_tree_coordinate_rates=89.32; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=The_Will_to_Power |Skill_tree_coordinate_rates=24.66; 85.02; 5.25; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Theft |Skill_tree_coordinate_rates=2.03; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Trade |Skill_tree_coordinate_rates=10.20; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Trespassing |Skill_tree_coordinate_rates=4.43; 69.19; 3.87; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Tunneling |Skill_tree_coordinate_rates=98.26; 21.73; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Vandalism |Skill_tree_coordinate_rates=1.94; 37.55; 3.39; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Wheelwrighting |Skill_tree_coordinate_rates=66.57; 37.55; 4.77; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Wilderness_Survival |Skill_tree_coordinate_rates=65.96; 85.02; 5.86; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Winemaking |Skill_tree_coordinate_rates=59.75; 53.37; 3.91; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Woodsmanship |Skill_tree_coordinate_rates=45.15; 37.55; 4.80; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Yeomanry |Skill_tree_coordinate_rates=25.98; 53.37; 3.39; 10.59 }}&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
despite it&#039;s name suggests it is not the icon&#039;s area only, but the containing rectangle&#039;s - becauuse it is possible to only get the icon&#039;s area, and then get the skill name&#039;s area according to current knowledge of google ai.&lt;br /&gt;
&lt;br /&gt;
see more info about extraction here: [[Template:Skill_tree_skill_marker]]&lt;br /&gt;
&lt;br /&gt;
see more info about svg file these are extracted from (including it&#039;s generation using uml code) here: File:Skill_tree_definition.png&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Data:Skill_tree_skill_icon_area_registry&amp;diff=120218</id>
		<title>Data:Skill tree skill icon area registry</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Data:Skill_tree_skill_icon_area_registry&amp;diff=120218"/>
		<updated>2025-12-28T01:27:24Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: Undo revision 120217 by Csatangollah (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#subobject: |Skill_page=Alchemy |Skill_tree_coordinate_rates=31.48; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Ancestral_Worship |Skill_tree_coordinate_rates=18.55; 37.55; 5.57; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Animal_Husbandry |Skill_tree_coordinate_rates=81.03; 53.37; 5.51; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Archery |Skill_tree_coordinate_rates=85.80; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Baking |Skill_tree_coordinate_rates=34.59; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Basic_Mechanics |Skill_tree_coordinate_rates=87.34; 21.73; 4.93; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Beekeeping |Skill_tree_coordinate_rates=49.66; 53.37; 3.87; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Boat_Building |Skill_tree_coordinate_rates=71.53; 37.55; 4.16; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Carpentry |Skill_tree_coordinate_rates=65.83; 53.37; 3.30; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Charcoal_Burning |Skill_tree_coordinate_rates=54.69; 53.37; 5.22; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Cheesemaking |Skill_tree_coordinate_rates=82.09; 37.55; 4.64; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Cooking |Skill_tree_coordinate_rates=34.59; 69.19; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Deep_Artifice |Skill_tree_coordinate_rates=90.51; 5.91; 4.13; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Druidic_Rite |Skill_tree_coordinate_rates=24.98; 5.91; 3.55; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Farming |Skill_tree_coordinate_rates=49.66; 69.19; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Firecrafts |Skill_tree_coordinate_rates=36.35; 85.02; 3.14; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=First_Aid |Skill_tree_coordinate_rates=35.04; 37.55; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Fishing |Skill_tree_coordinate_rates=71.40; 69.19; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Foraging |Skill_tree_coordinate_rates=56.03; 85.02; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Forestry |Skill_tree_coordinate_rates=42.01; 21.73; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Gardening |Skill_tree_coordinate_rates=42.01; 53.37; 3.39; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Glass_Blowing |Skill_tree_coordinate_rates=30.36; 53.37; 4.42; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Hearth_Magic |Skill_tree_coordinate_rates=21.65; 53.37; 4.26; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Hunting |Skill_tree_coordinate_rates=83.40; 69.19; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Jewelry |Skill_tree_coordinate_rates=91.95; 37.55; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Landscaping |Skill_tree_coordinate_rates=71.94; 53.37; 3.94; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Lawspeaking |Skill_tree_coordinate_rates=27.42; 37.55; 4.10; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Locks_&amp;amp;_Bolts |Skill_tree_coordinate_rates=39.16; 37.55; 4.23; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Lumberjacking |Skill_tree_coordinate_rates=62.44; 69.19; 4.45; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Metal_Working |Skill_tree_coordinate_rates=93.61; 53.37; 4.55; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Metallurgy |Skill_tree_coordinate_rates=93.68; 21.73; 3.52; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Mining |Skill_tree_coordinate_rates=98.29; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Murder |Skill_tree_coordinate_rates=5.65; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Music |Skill_tree_coordinate_rates=13.75; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Oral_Tradition |Skill_tree_coordinate_rates=71.43; 85.02; 4.13; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Painting |Skill_tree_coordinate_rates=23.35; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Plant_Lore |Skill_tree_coordinate_rates=38.20; 53.37; 3.23; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Pottery |Skill_tree_coordinate_rates=38.14; 69.19; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Primitive_Tools |Skill_tree_coordinate_rates=60.29; 85.02; 4.48; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Rage |Skill_tree_coordinate_rates=5.65; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Rope_Twining |Skill_tree_coordinate_rates=86.92; 37.55; 4.03; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Sausage_Making |Skill_tree_coordinate_rates=76.68; 37.55; 5.19; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Sewing |Skill_tree_coordinate_rates=45.73; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Siegecraft |Skill_tree_coordinate_rates=1.94; 21.73; 3.43; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Silkfarming |Skill_tree_coordinate_rates=49.86; 37.55; 3.62; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Steelmaking |Skill_tree_coordinate_rates=95.95; 37.55; 3.97; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Stone_Working |Skill_tree_coordinate_rates=93.61; 69.19; 4.55; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Swimming |Skill_tree_coordinate_rates=76.10; 53.37; 3.39; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Tanning |Skill_tree_coordinate_rates=89.32; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=The_Will_to_Power |Skill_tree_coordinate_rates=24.66; 85.02; 5.25; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Theft |Skill_tree_coordinate_rates=2.03; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Trade |Skill_tree_coordinate_rates=10.20; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Trespassing |Skill_tree_coordinate_rates=4.43; 69.19; 3.87; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Tunneling |Skill_tree_coordinate_rates=98.26; 21.73; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Vandalism |Skill_tree_coordinate_rates=1.94; 37.55; 3.39; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Wheelwrighting |Skill_tree_coordinate_rates=66.57; 37.55; 4.77; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Wilderness_Survival |Skill_tree_coordinate_rates=65.96; 85.02; 5.86; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Winemaking |Skill_tree_coordinate_rates=59.75; 53.37; 3.91; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Woodsmanship |Skill_tree_coordinate_rates=45.15; 37.55; 4.80; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Yeomanry |Skill_tree_coordinate_rates=25.98; 53.37; 3.39; 10.59 }}&lt;br /&gt;
&lt;br /&gt;
despite it&#039;s name suggests it is not the icon&#039;s area only, but the containing rectangle&#039;s - becauuse it is possible to only get the icon&#039;s area, and then get the skill name&#039;s area according to current knowledge of google ai.&lt;br /&gt;
&lt;br /&gt;
see more info about extraction here: [[Template:Skill_tree_skill_marker]]&lt;br /&gt;
&lt;br /&gt;
see more info about svg file these are extracted from (including it&#039;s generation using uml code) here: File:Skill_tree_definition.png&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Data:Skill_tree_skill_icon_area_registry&amp;diff=120217</id>
		<title>Data:Skill tree skill icon area registry</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Data:Skill_tree_skill_icon_area_registry&amp;diff=120217"/>
		<updated>2025-12-28T01:14:04Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: let me revert to write anything else than data here&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#subobject: |Skill_page=Alchemy |Skill_tree_coordinate_rates=31.48; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Ancestral_Worship |Skill_tree_coordinate_rates=18.55; 37.55; 5.57; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Animal_Husbandry |Skill_tree_coordinate_rates=81.03; 53.37; 5.51; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Archery |Skill_tree_coordinate_rates=85.80; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Baking |Skill_tree_coordinate_rates=34.59; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Basic_Mechanics |Skill_tree_coordinate_rates=87.34; 21.73; 4.93; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Beekeeping |Skill_tree_coordinate_rates=49.66; 53.37; 3.87; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Boat_Building |Skill_tree_coordinate_rates=71.53; 37.55; 4.16; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Carpentry |Skill_tree_coordinate_rates=65.83; 53.37; 3.30; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Charcoal_Burning |Skill_tree_coordinate_rates=54.69; 53.37; 5.22; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Cheesemaking |Skill_tree_coordinate_rates=82.09; 37.55; 4.64; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Cooking |Skill_tree_coordinate_rates=34.59; 69.19; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Deep_Artifice |Skill_tree_coordinate_rates=90.51; 5.91; 4.13; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Druidic_Rite |Skill_tree_coordinate_rates=24.98; 5.91; 3.55; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Farming |Skill_tree_coordinate_rates=49.66; 69.19; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Firecrafts |Skill_tree_coordinate_rates=36.35; 85.02; 3.14; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=First_Aid |Skill_tree_coordinate_rates=35.04; 37.55; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Fishing |Skill_tree_coordinate_rates=71.40; 69.19; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Foraging |Skill_tree_coordinate_rates=56.03; 85.02; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Forestry |Skill_tree_coordinate_rates=42.01; 21.73; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Gardening |Skill_tree_coordinate_rates=42.01; 53.37; 3.39; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Glass_Blowing |Skill_tree_coordinate_rates=30.36; 53.37; 4.42; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Hearth_Magic |Skill_tree_coordinate_rates=21.65; 53.37; 4.26; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Hunting |Skill_tree_coordinate_rates=83.40; 69.19; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Jewelry |Skill_tree_coordinate_rates=91.95; 37.55; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Landscaping |Skill_tree_coordinate_rates=71.94; 53.37; 3.94; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Lawspeaking |Skill_tree_coordinate_rates=27.42; 37.55; 4.10; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Locks_&amp;amp;_Bolts |Skill_tree_coordinate_rates=39.16; 37.55; 4.23; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Lumberjacking |Skill_tree_coordinate_rates=62.44; 69.19; 4.45; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Metal_Working |Skill_tree_coordinate_rates=93.61; 53.37; 4.55; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Metallurgy |Skill_tree_coordinate_rates=93.68; 21.73; 3.52; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Mining |Skill_tree_coordinate_rates=98.29; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Murder |Skill_tree_coordinate_rates=5.65; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Music |Skill_tree_coordinate_rates=13.75; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Oral_Tradition |Skill_tree_coordinate_rates=71.43; 85.02; 4.13; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Painting |Skill_tree_coordinate_rates=23.35; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Plant_Lore |Skill_tree_coordinate_rates=38.20; 53.37; 3.23; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Pottery |Skill_tree_coordinate_rates=38.14; 69.19; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Primitive_Tools |Skill_tree_coordinate_rates=60.29; 85.02; 4.48; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Rage |Skill_tree_coordinate_rates=5.65; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Rope_Twining |Skill_tree_coordinate_rates=86.92; 37.55; 4.03; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Sausage_Making |Skill_tree_coordinate_rates=76.68; 37.55; 5.19; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Sewing |Skill_tree_coordinate_rates=45.73; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Siegecraft |Skill_tree_coordinate_rates=1.94; 21.73; 3.43; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Silkfarming |Skill_tree_coordinate_rates=49.86; 37.55; 3.62; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Steelmaking |Skill_tree_coordinate_rates=95.95; 37.55; 3.97; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Stone_Working |Skill_tree_coordinate_rates=93.61; 69.19; 4.55; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Swimming |Skill_tree_coordinate_rates=76.10; 53.37; 3.39; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Tanning |Skill_tree_coordinate_rates=89.32; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=The_Will_to_Power |Skill_tree_coordinate_rates=24.66; 85.02; 5.25; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Theft |Skill_tree_coordinate_rates=2.03; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Trade |Skill_tree_coordinate_rates=10.20; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Trespassing |Skill_tree_coordinate_rates=4.43; 69.19; 3.87; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Tunneling |Skill_tree_coordinate_rates=98.26; 21.73; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Vandalism |Skill_tree_coordinate_rates=1.94; 37.55; 3.39; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Wheelwrighting |Skill_tree_coordinate_rates=66.57; 37.55; 4.77; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Wilderness_Survival |Skill_tree_coordinate_rates=65.96; 85.02; 5.86; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Winemaking |Skill_tree_coordinate_rates=59.75; 53.37; 3.91; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Woodsmanship |Skill_tree_coordinate_rates=45.15; 37.55; 4.80; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Yeomanry |Skill_tree_coordinate_rates=25.98; 53.37; 3.39; 10.59 }}&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Data:Skill_tree_skill_icon_area_registry&amp;diff=120216</id>
		<title>Data:Skill tree skill icon area registry</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Data:Skill_tree_skill_icon_area_registry&amp;diff=120216"/>
		<updated>2025-12-28T01:12:53Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: maybe tags freaked out skill tree (i am not sure)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#subobject: |Skill_page=Alchemy |Skill_tree_coordinate_rates=31.48; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Ancestral_Worship |Skill_tree_coordinate_rates=18.55; 37.55; 5.57; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Animal_Husbandry |Skill_tree_coordinate_rates=81.03; 53.37; 5.51; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Archery |Skill_tree_coordinate_rates=85.80; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Baking |Skill_tree_coordinate_rates=34.59; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Basic_Mechanics |Skill_tree_coordinate_rates=87.34; 21.73; 4.93; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Beekeeping |Skill_tree_coordinate_rates=49.66; 53.37; 3.87; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Boat_Building |Skill_tree_coordinate_rates=71.53; 37.55; 4.16; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Carpentry |Skill_tree_coordinate_rates=65.83; 53.37; 3.30; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Charcoal_Burning |Skill_tree_coordinate_rates=54.69; 53.37; 5.22; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Cheesemaking |Skill_tree_coordinate_rates=82.09; 37.55; 4.64; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Cooking |Skill_tree_coordinate_rates=34.59; 69.19; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Deep_Artifice |Skill_tree_coordinate_rates=90.51; 5.91; 4.13; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Druidic_Rite |Skill_tree_coordinate_rates=24.98; 5.91; 3.55; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Farming |Skill_tree_coordinate_rates=49.66; 69.19; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Firecrafts |Skill_tree_coordinate_rates=36.35; 85.02; 3.14; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=First_Aid |Skill_tree_coordinate_rates=35.04; 37.55; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Fishing |Skill_tree_coordinate_rates=71.40; 69.19; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Foraging |Skill_tree_coordinate_rates=56.03; 85.02; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Forestry |Skill_tree_coordinate_rates=42.01; 21.73; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Gardening |Skill_tree_coordinate_rates=42.01; 53.37; 3.39; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Glass_Blowing |Skill_tree_coordinate_rates=30.36; 53.37; 4.42; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Hearth_Magic |Skill_tree_coordinate_rates=21.65; 53.37; 4.26; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Hunting |Skill_tree_coordinate_rates=83.40; 69.19; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Jewelry |Skill_tree_coordinate_rates=91.95; 37.55; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Landscaping |Skill_tree_coordinate_rates=71.94; 53.37; 3.94; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Lawspeaking |Skill_tree_coordinate_rates=27.42; 37.55; 4.10; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Locks_&amp;amp;_Bolts |Skill_tree_coordinate_rates=39.16; 37.55; 4.23; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Lumberjacking |Skill_tree_coordinate_rates=62.44; 69.19; 4.45; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Metal_Working |Skill_tree_coordinate_rates=93.61; 53.37; 4.55; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Metallurgy |Skill_tree_coordinate_rates=93.68; 21.73; 3.52; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Mining |Skill_tree_coordinate_rates=98.29; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Murder |Skill_tree_coordinate_rates=5.65; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Music |Skill_tree_coordinate_rates=13.75; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Oral_Tradition |Skill_tree_coordinate_rates=71.43; 85.02; 4.13; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Painting |Skill_tree_coordinate_rates=23.35; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Plant_Lore |Skill_tree_coordinate_rates=38.20; 53.37; 3.23; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Pottery |Skill_tree_coordinate_rates=38.14; 69.19; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Primitive_Tools |Skill_tree_coordinate_rates=60.29; 85.02; 4.48; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Rage |Skill_tree_coordinate_rates=5.65; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Rope_Twining |Skill_tree_coordinate_rates=86.92; 37.55; 4.03; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Sausage_Making |Skill_tree_coordinate_rates=76.68; 37.55; 5.19; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Sewing |Skill_tree_coordinate_rates=45.73; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Siegecraft |Skill_tree_coordinate_rates=1.94; 21.73; 3.43; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Silkfarming |Skill_tree_coordinate_rates=49.86; 37.55; 3.62; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Steelmaking |Skill_tree_coordinate_rates=95.95; 37.55; 3.97; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Stone_Working |Skill_tree_coordinate_rates=93.61; 69.19; 4.55; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Swimming |Skill_tree_coordinate_rates=76.10; 53.37; 3.39; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Tanning |Skill_tree_coordinate_rates=89.32; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=The_Will_to_Power |Skill_tree_coordinate_rates=24.66; 85.02; 5.25; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Theft |Skill_tree_coordinate_rates=2.03; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Trade |Skill_tree_coordinate_rates=10.20; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Trespassing |Skill_tree_coordinate_rates=4.43; 69.19; 3.87; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Tunneling |Skill_tree_coordinate_rates=98.26; 21.73; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Vandalism |Skill_tree_coordinate_rates=1.94; 37.55; 3.39; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Wheelwrighting |Skill_tree_coordinate_rates=66.57; 37.55; 4.77; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Wilderness_Survival |Skill_tree_coordinate_rates=65.96; 85.02; 5.86; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Winemaking |Skill_tree_coordinate_rates=59.75; 53.37; 3.91; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Woodsmanship |Skill_tree_coordinate_rates=45.15; 37.55; 4.80; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Yeomanry |Skill_tree_coordinate_rates=25.98; 53.37; 3.39; 10.59 }}&lt;br /&gt;
&lt;br /&gt;
despite it&#039;s name suggests it is not the icon&#039;s area only, but the containing rectangle&#039;s - becauuse it is possible to only get the icon&#039;s area, and then get the skill name&#039;s area according to current knowledge of google ai.&lt;br /&gt;
&lt;br /&gt;
see more info about extraction here: [[Template:Skill_tree_skill_marker]]&lt;br /&gt;
&lt;br /&gt;
see more info about svg file these are extracted from (including it&#039;s generation using uml code) here: File:Skill_tree_definition.png&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Data:Skill_tree_skill_icon_area_registry&amp;diff=120215</id>
		<title>Data:Skill tree skill icon area registry</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Data:Skill_tree_skill_icon_area_registry&amp;diff=120215"/>
		<updated>2025-12-28T01:09:13Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: added documentation here too&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{#subobject: |Skill_page=Alchemy |Skill_tree_coordinate_rates=31.48; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Ancestral_Worship |Skill_tree_coordinate_rates=18.55; 37.55; 5.57; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Animal_Husbandry |Skill_tree_coordinate_rates=81.03; 53.37; 5.51; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Archery |Skill_tree_coordinate_rates=85.80; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Baking |Skill_tree_coordinate_rates=34.59; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Basic_Mechanics |Skill_tree_coordinate_rates=87.34; 21.73; 4.93; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Beekeeping |Skill_tree_coordinate_rates=49.66; 53.37; 3.87; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Boat_Building |Skill_tree_coordinate_rates=71.53; 37.55; 4.16; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Carpentry |Skill_tree_coordinate_rates=65.83; 53.37; 3.30; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Charcoal_Burning |Skill_tree_coordinate_rates=54.69; 53.37; 5.22; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Cheesemaking |Skill_tree_coordinate_rates=82.09; 37.55; 4.64; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Cooking |Skill_tree_coordinate_rates=34.59; 69.19; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Deep_Artifice |Skill_tree_coordinate_rates=90.51; 5.91; 4.13; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Druidic_Rite |Skill_tree_coordinate_rates=24.98; 5.91; 3.55; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Farming |Skill_tree_coordinate_rates=49.66; 69.19; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Firecrafts |Skill_tree_coordinate_rates=36.35; 85.02; 3.14; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=First_Aid |Skill_tree_coordinate_rates=35.04; 37.55; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Fishing |Skill_tree_coordinate_rates=71.40; 69.19; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Foraging |Skill_tree_coordinate_rates=56.03; 85.02; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Forestry |Skill_tree_coordinate_rates=42.01; 21.73; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Gardening |Skill_tree_coordinate_rates=42.01; 53.37; 3.39; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Glass_Blowing |Skill_tree_coordinate_rates=30.36; 53.37; 4.42; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Hearth_Magic |Skill_tree_coordinate_rates=21.65; 53.37; 4.26; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Hunting |Skill_tree_coordinate_rates=83.40; 69.19; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Jewelry |Skill_tree_coordinate_rates=91.95; 37.55; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Landscaping |Skill_tree_coordinate_rates=71.94; 53.37; 3.94; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Lawspeaking |Skill_tree_coordinate_rates=27.42; 37.55; 4.10; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Locks_&amp;amp;_Bolts |Skill_tree_coordinate_rates=39.16; 37.55; 4.23; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Lumberjacking |Skill_tree_coordinate_rates=62.44; 69.19; 4.45; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Metal_Working |Skill_tree_coordinate_rates=93.61; 53.37; 4.55; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Metallurgy |Skill_tree_coordinate_rates=93.68; 21.73; 3.52; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Mining |Skill_tree_coordinate_rates=98.29; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Murder |Skill_tree_coordinate_rates=5.65; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Music |Skill_tree_coordinate_rates=13.75; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Oral_Tradition |Skill_tree_coordinate_rates=71.43; 85.02; 4.13; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Painting |Skill_tree_coordinate_rates=23.35; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Plant_Lore |Skill_tree_coordinate_rates=38.20; 53.37; 3.23; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Pottery |Skill_tree_coordinate_rates=38.14; 69.19; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Primitive_Tools |Skill_tree_coordinate_rates=60.29; 85.02; 4.48; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Rage |Skill_tree_coordinate_rates=5.65; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Rope_Twining |Skill_tree_coordinate_rates=86.92; 37.55; 4.03; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Sausage_Making |Skill_tree_coordinate_rates=76.68; 37.55; 5.19; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Sewing |Skill_tree_coordinate_rates=45.73; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Siegecraft |Skill_tree_coordinate_rates=1.94; 21.73; 3.43; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Silkfarming |Skill_tree_coordinate_rates=49.86; 37.55; 3.62; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Steelmaking |Skill_tree_coordinate_rates=95.95; 37.55; 3.97; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Stone_Working |Skill_tree_coordinate_rates=93.61; 69.19; 4.55; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Swimming |Skill_tree_coordinate_rates=76.10; 53.37; 3.39; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Tanning |Skill_tree_coordinate_rates=89.32; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=The_Will_to_Power |Skill_tree_coordinate_rates=24.66; 85.02; 5.25; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Theft |Skill_tree_coordinate_rates=2.03; 53.37; 3.04; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Trade |Skill_tree_coordinate_rates=10.20; 37.55; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Trespassing |Skill_tree_coordinate_rates=4.43; 69.19; 3.87; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Tunneling |Skill_tree_coordinate_rates=98.26; 21.73; 3.07; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Vandalism |Skill_tree_coordinate_rates=1.94; 37.55; 3.39; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Wheelwrighting |Skill_tree_coordinate_rates=66.57; 37.55; 4.77; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Wilderness_Survival |Skill_tree_coordinate_rates=65.96; 85.02; 5.86; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Winemaking |Skill_tree_coordinate_rates=59.75; 53.37; 3.91; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Woodsmanship |Skill_tree_coordinate_rates=45.15; 37.55; 4.80; 10.59 }}&lt;br /&gt;
{{#subobject: |Skill_page=Yeomanry |Skill_tree_coordinate_rates=25.98; 53.37; 3.39; 10.59 }}&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
despite it&#039;s name suggests it is not the icon&#039;s area only, but the containing rectangle&#039;s - becauuse it is possible to only get the icon&#039;s area, and then get the skill name&#039;s area according to current knowledge of google ai.&lt;br /&gt;
&lt;br /&gt;
see more info about extraction here: [[Template:Skill_tree_skill_marker]]&lt;br /&gt;
&lt;br /&gt;
see more info about svg file these are extracted from (including it&#039;s generation using uml code) here: File:Skill_tree_definition.png&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Template:Skill_tree_skill_marker&amp;diff=120214</id>
		<title>Template:Skill tree skill marker</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Template:Skill_tree_skill_marker&amp;diff=120214"/>
		<updated>2025-12-28T00:34:51Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: added further info on how does it work&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;div&lt;br /&gt;
style=&amp;quot;&lt;br /&gt;
 position: absolute&lt;br /&gt;
 ; display: flex&lt;br /&gt;
 ; justify-content: center&lt;br /&gt;
 ; align-items: center&lt;br /&gt;
 ; left: {{{2}}}%&lt;br /&gt;
 ; top: {{{3}}}%&lt;br /&gt;
 ; width: {{{4}}}%&lt;br /&gt;
 ; height: {{{5}}}%&lt;br /&gt;
 ; transform: translate(-50%, -50%)&lt;br /&gt;
 ; z-index: 10&lt;br /&gt;
 ; filter: alpha(opacity=0) !important&lt;br /&gt;
 ; -moz-opacity: 0 !important&lt;br /&gt;
 ; -khtml-opacity: 0 !important&lt;br /&gt;
 ; opacity: 0 !important&lt;br /&gt;
 ; background-color: transparent !important&lt;br /&gt;
 ; -ms-filter: &#039;progid:DXImageTransform.Microsoft.Alpha(Opacity=0)&#039; !important&lt;br /&gt;
&amp;quot;title=&amp;quot;{{{6|something}}} costs {{{7|unknown}}} learning points&amp;quot;&lt;br /&gt;
&amp;gt;&amp;lt;span&lt;br /&gt;
 style=&amp;quot;font-size: 30px&amp;quot;&lt;br /&gt;
 title=&amp;quot;{{{6|something}}} costs {{{7|unknown}}} learning points&amp;quot;&lt;br /&gt;
&amp;gt;[[{{{6}}}|o]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
this fills up the skill tree png&#039;s (File:Skill_tree_definition.png) ancestor div with itself for each area definition in [[Data:Skill_tree_skill_icon_area_registry]] - each one of this should be a link to the respective icon&#039;s page from the [[Skills|skills page]]&lt;br /&gt;
&lt;br /&gt;
these &amp;quot;area&amp;quot; links on the png work the way that there is an &amp;quot;o&amp;quot; hidden link display that is 30px font size for each icon inside the same div the png is in (roughly)&lt;br /&gt;
&lt;br /&gt;
the 30px font size is the proportional icon size: for example the original icons were set to be 76px squared, and the png was set to be 1200px wide with 3123px original width - so the pixel size of the font of a single character like &amp;quot;o&amp;quot; has to be 76px times 1200 over 3123 pixels that is approximately 29.2px - however i rounded it up&lt;br /&gt;
&lt;br /&gt;
each position can be got by using the source code included in the summary of the File:Skill_tree_definition.png in an application like visual studio code with jebbs&#039; plantuml extension (both are free), and then generate a new svg based on that source, open the svg in browser, open dev mode with f12, and then run javascript that is going to paste every single node the plantumel was containing as &amp;quot;rectangles&amp;quot; onto the user&#039;s clipboard:&lt;br /&gt;
&lt;br /&gt;
example javascript used for the old uml source code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// 1. Get the total width and height of the SVG viewbox&lt;br /&gt;
const svg = document.querySelector(&#039;svg&#039;);&lt;br /&gt;
const totalW = svg.viewBox.baseVal.width || svg.width.baseVal.value;&lt;br /&gt;
const totalH = svg.viewBox.baseVal.height || svg.height.baseVal.value;&lt;br /&gt;
&lt;br /&gt;
// 2. Select and sort skills&lt;br /&gt;
const skills = Array.from(document.querySelectorAll(&#039;g[id^=&amp;quot;elem_&amp;quot;]&#039;));&lt;br /&gt;
skills.sort((a, b) =&amp;gt; a.id.localeCompare(b.id));&lt;br /&gt;
&lt;br /&gt;
// 3. Map to Percentage Rates&lt;br /&gt;
const registryData = skills.map(skill =&amp;gt; {&lt;br /&gt;
    const bbox = skill.getBBox();&lt;br /&gt;
    const alias = skill.id.replace(&#039;elem_&#039;, &#039;&#039;);&lt;br /&gt;
    &lt;br /&gt;
    // Calculate Percentages&lt;br /&gt;
    const centerX = ((bbox.x + (bbox.width / 2)) / totalW) * 100;&lt;br /&gt;
    const centerY = ((bbox.y + (bbox.height / 2)) / totalH) * 100;&lt;br /&gt;
    const sizeX = (bbox.width / totalW) * 100;&lt;br /&gt;
    const sizeY = (bbox.height / totalH) * 100;&lt;br /&gt;
    &lt;br /&gt;
    return `{{#subobject: |Skill_page=${alias} |Skill_tree_coordinate_rates=${centerX.toFixed(2)}; ${centerY.toFixed(2)}; ${sizeX.toFixed(2)}; ${sizeY.toFixed(2)} }}`;&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// 4. Copy directly to your clipboard&lt;br /&gt;
const finalOutput = registryData.join(&#039;\n&#039;);&lt;br /&gt;
copy(finalOutput);&lt;br /&gt;
&lt;br /&gt;
console.log(&amp;quot;=== SUCCESS ===&amp;quot;);&lt;br /&gt;
console.log(`${registryData.length} skills converted to PERCENTAGE rates and copied to clipboard.`);&lt;br /&gt;
console.log(`Based on SVG Size: ${totalW}x${totalH}`);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note that using the old uml source code as template instead of the new one to update the uml source code, and then use this javascript on the svg of it will contain the rectangle definitions with lower case letters, and include two default nodes - that all will need to be rewritten to page names by hand, and will need to be removed by hand respectively after the extraction&lt;br /&gt;
&lt;br /&gt;
i have just uploaded new uml source code (it is at File:Skill_tree_definition.png) that will facilitate to upload smaller png files (wiki friendlyness), and will facilitate page name, position, and size extraction - as a new javascript (perhaps witten by ai) will be able to differentiate between stereotypes of rectangles (in order to not extract the root skill nodes), and the page names may be according to the contents of the nodes (in order to not make wiki writers rewrite extracted page names themselves among [[Data:Skill_tree_skill_icon_area_registry|these subobjects]])&lt;br /&gt;
&lt;br /&gt;
i just asked google ai how to extract these infos from svg files, however the important stuff to know before extracting: every coordinate, and size must be relative percentage in format from zero to hundred (not zero to one), without percentage marks (those are placed after the extraction), and rounded to two digits (for readable code)&lt;br /&gt;
&lt;br /&gt;
it is also worth mentioning that with the new source code template the aliases are no longer feasable to be extracted (it has not been, but it did not matter before) because some of the aliases may contain different letters compared to the page names for the sake of handling those in uml. for example content &amp;quot;locks &amp;amp; bolts&amp;quot; is under alias &amp;quot;locks n bolts&amp;quot; in the new uml source - so the content will be needed to be extracted, not the alias (the current javascript example is extracting aliases)&lt;br /&gt;
&lt;br /&gt;
further more according to ai&#039;s current knowledge it is possible to extract only the images&#039;, or only the labels&#039; positions, and sizes (beside page name) - such that for example it is possible to make the interactive skill tree have the hover-title with the lp cost for skill icons, and then the link to the skill on the skill&#039;s name near the skill icon&lt;br /&gt;
&lt;br /&gt;
also: according to object oriented programming the [[Template:Skill_tree_skill_marker|skill tree skill marker template]] is meant to be &amp;quot;touching&amp;quot; the skill tree it is on, because it is the collective marker on the skill tree - so me personally am not recommending to put other data between when it comes to extension of code for example to separate skill tree skill icon, and skill tree skill name definitions (to do title-link combination on the interactive map)&lt;br /&gt;
&lt;br /&gt;
currently it is also possible to possess the lp points written on the skill tree using transparent font in the uml sourcecode, and then looking for the lp text area position, and then just placing the actual ever so updated lp cost onto the skill tree from here&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Template:Skill_tree_skill_marker&amp;diff=120213</id>
		<title>Template:Skill tree skill marker</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Template:Skill_tree_skill_marker&amp;diff=120213"/>
		<updated>2025-12-28T00:25:28Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: clarification&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;div&lt;br /&gt;
style=&amp;quot;&lt;br /&gt;
 position: absolute&lt;br /&gt;
 ; display: flex&lt;br /&gt;
 ; justify-content: center&lt;br /&gt;
 ; align-items: center&lt;br /&gt;
 ; left: {{{2}}}%&lt;br /&gt;
 ; top: {{{3}}}%&lt;br /&gt;
 ; width: {{{4}}}%&lt;br /&gt;
 ; height: {{{5}}}%&lt;br /&gt;
 ; transform: translate(-50%, -50%)&lt;br /&gt;
 ; z-index: 10&lt;br /&gt;
 ; filter: alpha(opacity=0) !important&lt;br /&gt;
 ; -moz-opacity: 0 !important&lt;br /&gt;
 ; -khtml-opacity: 0 !important&lt;br /&gt;
 ; opacity: 0 !important&lt;br /&gt;
 ; background-color: transparent !important&lt;br /&gt;
 ; -ms-filter: &#039;progid:DXImageTransform.Microsoft.Alpha(Opacity=0)&#039; !important&lt;br /&gt;
&amp;quot;title=&amp;quot;{{{6|something}}} costs {{{7|unknown}}} learning points&amp;quot;&lt;br /&gt;
&amp;gt;&amp;lt;span&lt;br /&gt;
 style=&amp;quot;font-size: 30px&amp;quot;&lt;br /&gt;
 title=&amp;quot;{{{6|something}}} costs {{{7|unknown}}} learning points&amp;quot;&lt;br /&gt;
&amp;gt;[[{{{6}}}|o]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
this fills up the skill tree png&#039;s (File:Skill_tree_definition.png) ancestor div with itself for each area definition in [[Data:Skill_tree_skill_icon_area_registry]] - each one of this should be a link to the respective icon&#039;s page from the [[Skills|skills page]]&lt;br /&gt;
&lt;br /&gt;
these &amp;quot;area&amp;quot; links on the png work the way that there is an &amp;quot;o&amp;quot; hidden link display that is 30px font size for each icon inside the same div the png is in (roughly)&lt;br /&gt;
&lt;br /&gt;
the 30px font size is the proportional icon size: for example the original icons were set to be 76px squared, and the png was set to be 1200px wide with 3123px original width - so the pixel size of the font of a single character like &amp;quot;o&amp;quot; has to be 76px times 1200 over 3123 pixels that is approximately 29.2px - however i rounded it up&lt;br /&gt;
&lt;br /&gt;
each position can be got by using the source code included in the summary of the File:Skill_tree_definition.png in an application like visual studio code with jebbs&#039; plantuml extension (both are free), and then generate a new svg based on that source, open the svg in browser, open dev mode with f12, and then run javascript that is going to paste every single node the plantumel was containing as &amp;quot;rectangles&amp;quot; onto the user&#039;s clipboard:&lt;br /&gt;
&lt;br /&gt;
example javascript used for the old uml source code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// 1. Get the total width and height of the SVG viewbox&lt;br /&gt;
const svg = document.querySelector(&#039;svg&#039;);&lt;br /&gt;
const totalW = svg.viewBox.baseVal.width || svg.width.baseVal.value;&lt;br /&gt;
const totalH = svg.viewBox.baseVal.height || svg.height.baseVal.value;&lt;br /&gt;
&lt;br /&gt;
// 2. Select and sort skills&lt;br /&gt;
const skills = Array.from(document.querySelectorAll(&#039;g[id^=&amp;quot;elem_&amp;quot;]&#039;));&lt;br /&gt;
skills.sort((a, b) =&amp;gt; a.id.localeCompare(b.id));&lt;br /&gt;
&lt;br /&gt;
// 3. Map to Percentage Rates&lt;br /&gt;
const registryData = skills.map(skill =&amp;gt; {&lt;br /&gt;
    const bbox = skill.getBBox();&lt;br /&gt;
    const alias = skill.id.replace(&#039;elem_&#039;, &#039;&#039;);&lt;br /&gt;
    &lt;br /&gt;
    // Calculate Percentages&lt;br /&gt;
    const centerX = ((bbox.x + (bbox.width / 2)) / totalW) * 100;&lt;br /&gt;
    const centerY = ((bbox.y + (bbox.height / 2)) / totalH) * 100;&lt;br /&gt;
    const sizeX = (bbox.width / totalW) * 100;&lt;br /&gt;
    const sizeY = (bbox.height / totalH) * 100;&lt;br /&gt;
    &lt;br /&gt;
    return `{{#subobject: |Skill_page=${alias} |Skill_tree_coordinate_rates=${centerX.toFixed(2)}; ${centerY.toFixed(2)}; ${sizeX.toFixed(2)}; ${sizeY.toFixed(2)} }}`;&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// 4. Copy directly to your clipboard&lt;br /&gt;
const finalOutput = registryData.join(&#039;\n&#039;);&lt;br /&gt;
copy(finalOutput);&lt;br /&gt;
&lt;br /&gt;
console.log(&amp;quot;=== SUCCESS ===&amp;quot;);&lt;br /&gt;
console.log(`${registryData.length} skills converted to PERCENTAGE rates and copied to clipboard.`);&lt;br /&gt;
console.log(`Based on SVG Size: ${totalW}x${totalH}`);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note that using the old uml source code as template instead of the new one to update the uml source code, and then use this javascript on the svg of it will contain the rectangle definitions with lower case letters, and include two default nodes - that all will need to be rewritten to page names by hand, and will need to be removed by hand respectively after the extraction&lt;br /&gt;
&lt;br /&gt;
i have just uploaded new uml source code (it is at File:Skill_tree_definition.png) that will facilitate to upload smaller png files (wiki friendlyness), and will facilitate page name, position, and size extraction - as a new javascript (perhaps witten by ai) will be able to differentiate between stereotypes of rectangles (in order to not extract the root skill nodes), and the page names may be according to the contents of the nodes (in order to not make wiki writers rewrite extracted page names themselves among [[Data:Skill_tree_skill_icon_area_registry|these subobjects]])&lt;br /&gt;
&lt;br /&gt;
i just asked google ai how to extract these infos from svg files, however the important stuff to know before extracting: every coordinate, and size must be relative percentage in format from zero to hundred (not zero to one), without percentage marks (those are placed after the extraction), and rounded to two digits (for readable code)&lt;br /&gt;
&lt;br /&gt;
it is also worth mentioning that with the new source code template the aliases are no longer feasable to be extracted (it has not been, but it did not matter before) because some of the aliases may contain different letters compared to the page names for the sake of handling those in uml. for example content &amp;quot;locks &amp;amp; bolts&amp;quot; is under alias &amp;quot;locks n bolts&amp;quot; in the new uml source - so the content will be needed to be extracted, not the alias (the current javascript example is extracting aliases)&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Template:Skill_tree_skill_marker&amp;diff=120212</id>
		<title>Template:Skill tree skill marker</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Template:Skill_tree_skill_marker&amp;diff=120212"/>
		<updated>2025-12-28T00:23:31Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: clarifying where have i uploaded uml source code&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;div&lt;br /&gt;
style=&amp;quot;&lt;br /&gt;
 position: absolute&lt;br /&gt;
 ; display: flex&lt;br /&gt;
 ; justify-content: center&lt;br /&gt;
 ; align-items: center&lt;br /&gt;
 ; left: {{{2}}}%&lt;br /&gt;
 ; top: {{{3}}}%&lt;br /&gt;
 ; width: {{{4}}}%&lt;br /&gt;
 ; height: {{{5}}}%&lt;br /&gt;
 ; transform: translate(-50%, -50%)&lt;br /&gt;
 ; z-index: 10&lt;br /&gt;
 ; filter: alpha(opacity=0) !important&lt;br /&gt;
 ; -moz-opacity: 0 !important&lt;br /&gt;
 ; -khtml-opacity: 0 !important&lt;br /&gt;
 ; opacity: 0 !important&lt;br /&gt;
 ; background-color: transparent !important&lt;br /&gt;
 ; -ms-filter: &#039;progid:DXImageTransform.Microsoft.Alpha(Opacity=0)&#039; !important&lt;br /&gt;
&amp;quot;title=&amp;quot;{{{6|something}}} costs {{{7|unknown}}} learning points&amp;quot;&lt;br /&gt;
&amp;gt;&amp;lt;span&lt;br /&gt;
 style=&amp;quot;font-size: 30px&amp;quot;&lt;br /&gt;
 title=&amp;quot;{{{6|something}}} costs {{{7|unknown}}} learning points&amp;quot;&lt;br /&gt;
&amp;gt;[[{{{6}}}|o]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
this fills up the skill tree png&#039;s (File:Skill_tree_definition.png) ancestor div with itself for each area definition in [[Data:Skill_tree_skill_icon_area_registry]] - each one of this should be a link to the respective icon&#039;s page from the [[Skills|skills page]]&lt;br /&gt;
&lt;br /&gt;
these &amp;quot;area&amp;quot; links on the png work the way that there is an &amp;quot;o&amp;quot; hidden link display that is 30px font size for each icon inside the same div the png is in (roughly)&lt;br /&gt;
&lt;br /&gt;
the 30px font size is the proportional icon size: for example the original icons were set to be 76px squared, and the png was set to be 1200px wide with 3123px original width - so the pixel size of the font of a single character like &amp;quot;o&amp;quot; has to be 76px times 1200 over 3123 pixels that is approximately 29.2px - however i rounded it up&lt;br /&gt;
&lt;br /&gt;
each position can be got by using the source code included in the summary of the File:Skill_tree_definition.png in an application like visual studio code with jebbs&#039; plantuml extension (both are free), and then generate a new svg based on that source, open the svg in browser, open dev mode with f12, and then run javascript that is going to paste every single node the plantumel was containing as &amp;quot;rectangles&amp;quot; onto the user&#039;s clipboard:&lt;br /&gt;
&lt;br /&gt;
example javascript used for the old uml source code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// 1. Get the total width and height of the SVG viewbox&lt;br /&gt;
const svg = document.querySelector(&#039;svg&#039;);&lt;br /&gt;
const totalW = svg.viewBox.baseVal.width || svg.width.baseVal.value;&lt;br /&gt;
const totalH = svg.viewBox.baseVal.height || svg.height.baseVal.value;&lt;br /&gt;
&lt;br /&gt;
// 2. Select and sort skills&lt;br /&gt;
const skills = Array.from(document.querySelectorAll(&#039;g[id^=&amp;quot;elem_&amp;quot;]&#039;));&lt;br /&gt;
skills.sort((a, b) =&amp;gt; a.id.localeCompare(b.id));&lt;br /&gt;
&lt;br /&gt;
// 3. Map to Percentage Rates&lt;br /&gt;
const registryData = skills.map(skill =&amp;gt; {&lt;br /&gt;
    const bbox = skill.getBBox();&lt;br /&gt;
    const alias = skill.id.replace(&#039;elem_&#039;, &#039;&#039;);&lt;br /&gt;
    &lt;br /&gt;
    // Calculate Percentages&lt;br /&gt;
    const centerX = ((bbox.x + (bbox.width / 2)) / totalW) * 100;&lt;br /&gt;
    const centerY = ((bbox.y + (bbox.height / 2)) / totalH) * 100;&lt;br /&gt;
    const sizeX = (bbox.width / totalW) * 100;&lt;br /&gt;
    const sizeY = (bbox.height / totalH) * 100;&lt;br /&gt;
    &lt;br /&gt;
    return `{{#subobject: |Skill_page=${alias} |Skill_tree_coordinate_rates=${centerX.toFixed(2)}; ${centerY.toFixed(2)}; ${sizeX.toFixed(2)}; ${sizeY.toFixed(2)} }}`;&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// 4. Copy directly to your clipboard&lt;br /&gt;
const finalOutput = registryData.join(&#039;\n&#039;);&lt;br /&gt;
copy(finalOutput);&lt;br /&gt;
&lt;br /&gt;
console.log(&amp;quot;=== SUCCESS ===&amp;quot;);&lt;br /&gt;
console.log(`${registryData.length} skills converted to PERCENTAGE rates and copied to clipboard.`);&lt;br /&gt;
console.log(`Based on SVG Size: ${totalW}x${totalH}`);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note that using the old uml source code as template instead of the new one to update the uml source code, and then use this javascript on the svg of it will contain the rectangle definitions with lower case letters, and include two default nodes - that all will need to be rewritten to page names by hand, and will need to be removed by hand respectively after the extraction&lt;br /&gt;
&lt;br /&gt;
i have just uploaded new uml source code (it is at File:Skill_tree_definition.png) that will facilitate to upload smaller png files (wiki friendlyness), and will facilitate page name, position, and size extraction - as a new javascript (perhaps witten by ai) will be able to differentiate between stereotypes of rectangles (in order to not extract the root skill nodes), and the page names may be according to the contents of the nodes (in order to not make wiki writers rewrite extracted page names themselves among [[Data:Skill_tree_skill_icon_area_registry|these subobjects]])&lt;br /&gt;
&lt;br /&gt;
i just asked google ai how to extract these infos from svg files, however the important stuff to know before extracting: every coordinate, and size must be relative percentage in format from zero to hundred (not zero to one), without percentage marks (those are placed after), and rounded to two digits (for readable code)&lt;br /&gt;
&lt;br /&gt;
it is also worth mentioning that with the new source code template the aliases are no longer feasable to be extracted (it has not been, but it did not matter before) because some of the aliases may contain different letters compared to the page names for the sake of handling those in uml. for example content &amp;quot;locks &amp;amp; bolts&amp;quot; is under alias &amp;quot;locks n bolts&amp;quot; in the new uml source - so the content will be needed to be extracted, not the alias (the current javascript example is extracting aliases)&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Template:Skill_tree_skill_marker&amp;diff=120211</id>
		<title>Template:Skill tree skill marker</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Template:Skill_tree_skill_marker&amp;diff=120211"/>
		<updated>2025-12-28T00:22:37Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: the new uml source code also facilitates page name extraction&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;div&lt;br /&gt;
style=&amp;quot;&lt;br /&gt;
 position: absolute&lt;br /&gt;
 ; display: flex&lt;br /&gt;
 ; justify-content: center&lt;br /&gt;
 ; align-items: center&lt;br /&gt;
 ; left: {{{2}}}%&lt;br /&gt;
 ; top: {{{3}}}%&lt;br /&gt;
 ; width: {{{4}}}%&lt;br /&gt;
 ; height: {{{5}}}%&lt;br /&gt;
 ; transform: translate(-50%, -50%)&lt;br /&gt;
 ; z-index: 10&lt;br /&gt;
 ; filter: alpha(opacity=0) !important&lt;br /&gt;
 ; -moz-opacity: 0 !important&lt;br /&gt;
 ; -khtml-opacity: 0 !important&lt;br /&gt;
 ; opacity: 0 !important&lt;br /&gt;
 ; background-color: transparent !important&lt;br /&gt;
 ; -ms-filter: &#039;progid:DXImageTransform.Microsoft.Alpha(Opacity=0)&#039; !important&lt;br /&gt;
&amp;quot;title=&amp;quot;{{{6|something}}} costs {{{7|unknown}}} learning points&amp;quot;&lt;br /&gt;
&amp;gt;&amp;lt;span&lt;br /&gt;
 style=&amp;quot;font-size: 30px&amp;quot;&lt;br /&gt;
 title=&amp;quot;{{{6|something}}} costs {{{7|unknown}}} learning points&amp;quot;&lt;br /&gt;
&amp;gt;[[{{{6}}}|o]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
this fills up the skill tree png&#039;s (File:Skill_tree_definition.png) ancestor div with itself for each area definition in [[Data:Skill_tree_skill_icon_area_registry]] - each one of this should be a link to the respective icon&#039;s page from the [[Skills|skills page]]&lt;br /&gt;
&lt;br /&gt;
these &amp;quot;area&amp;quot; links on the png work the way that there is an &amp;quot;o&amp;quot; hidden link display that is 30px font size for each icon inside the same div the png is in (roughly)&lt;br /&gt;
&lt;br /&gt;
the 30px font size is the proportional icon size: for example the original icons were set to be 76px squared, and the png was set to be 1200px wide with 3123px original width - so the pixel size of the font of a single character like &amp;quot;o&amp;quot; has to be 76px times 1200 over 3123 pixels that is approximately 29.2px - however i rounded it up&lt;br /&gt;
&lt;br /&gt;
each position can be got by using the source code included in the summary of the File:Skill_tree_definition.png in an application like visual studio code with jebbs&#039; plantuml extension (both are free), and then generate a new svg based on that source, open the svg in browser, open dev mode with f12, and then run javascript that is going to paste every single node the plantumel was containing as &amp;quot;rectangles&amp;quot; onto the user&#039;s clipboard:&lt;br /&gt;
&lt;br /&gt;
example javascript used for the old uml source code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// 1. Get the total width and height of the SVG viewbox&lt;br /&gt;
const svg = document.querySelector(&#039;svg&#039;);&lt;br /&gt;
const totalW = svg.viewBox.baseVal.width || svg.width.baseVal.value;&lt;br /&gt;
const totalH = svg.viewBox.baseVal.height || svg.height.baseVal.value;&lt;br /&gt;
&lt;br /&gt;
// 2. Select and sort skills&lt;br /&gt;
const skills = Array.from(document.querySelectorAll(&#039;g[id^=&amp;quot;elem_&amp;quot;]&#039;));&lt;br /&gt;
skills.sort((a, b) =&amp;gt; a.id.localeCompare(b.id));&lt;br /&gt;
&lt;br /&gt;
// 3. Map to Percentage Rates&lt;br /&gt;
const registryData = skills.map(skill =&amp;gt; {&lt;br /&gt;
    const bbox = skill.getBBox();&lt;br /&gt;
    const alias = skill.id.replace(&#039;elem_&#039;, &#039;&#039;);&lt;br /&gt;
    &lt;br /&gt;
    // Calculate Percentages&lt;br /&gt;
    const centerX = ((bbox.x + (bbox.width / 2)) / totalW) * 100;&lt;br /&gt;
    const centerY = ((bbox.y + (bbox.height / 2)) / totalH) * 100;&lt;br /&gt;
    const sizeX = (bbox.width / totalW) * 100;&lt;br /&gt;
    const sizeY = (bbox.height / totalH) * 100;&lt;br /&gt;
    &lt;br /&gt;
    return `{{#subobject: |Skill_page=${alias} |Skill_tree_coordinate_rates=${centerX.toFixed(2)}; ${centerY.toFixed(2)}; ${sizeX.toFixed(2)}; ${sizeY.toFixed(2)} }}`;&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// 4. Copy directly to your clipboard&lt;br /&gt;
const finalOutput = registryData.join(&#039;\n&#039;);&lt;br /&gt;
copy(finalOutput);&lt;br /&gt;
&lt;br /&gt;
console.log(&amp;quot;=== SUCCESS ===&amp;quot;);&lt;br /&gt;
console.log(`${registryData.length} skills converted to PERCENTAGE rates and copied to clipboard.`);&lt;br /&gt;
console.log(`Based on SVG Size: ${totalW}x${totalH}`);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note that using the old uml source code as template instead of the new one to update the uml source code, and then use this javascript on the svg of it will contain the rectangle definitions with lower case letters, and include two default nodes - that all will need to be rewritten to page names by hand, and will need to be removed by hand respectively after the extraction&lt;br /&gt;
&lt;br /&gt;
i have just uploaded new uml source code that will facilitate to upload smaller png files (wiki friendlyness), and will facilitate page name, position, and size extraction - as a new javascript (perhaps witten by ai) will be able to differentiate between stereotypes of rectangles (in order to not extract the root skill nodes), and the page names may be according to the contents of the nodes (in order to not make wiki writers rewrite extracted page names themselves among [[Data:Skill_tree_skill_icon_area_registry|these subobjects]])&lt;br /&gt;
&lt;br /&gt;
i just asked google ai how to extract these infos from svg files, however the important stuff to know before extracting: every coordinate, and size must be relative percentage in format from zero to hundred (not zero to one), without percentage marks (those are placed after), and rounded to two digits (for readable code)&lt;br /&gt;
&lt;br /&gt;
it is also worth mentioning that with the new source code template the aliases are no longer feasable to be extracted (it has not been, but it did not matter before) because some of the aliases may contain different letters compared to the page names for the sake of handling those in uml. for example content &amp;quot;locks &amp;amp; bolts&amp;quot; is under alias &amp;quot;locks n bolts&amp;quot; in the new uml source - so the content will be needed to be extracted, not the alias (the current javascript example is extracting aliases)&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=File:Skill_tree_definition.png&amp;diff=120210</id>
		<title>File:Skill tree definition.png</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=File:Skill_tree_definition.png&amp;diff=120210"/>
		<updated>2025-12-28T00:19:03Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: /* UML Code */ adding link to extraction example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
2025.12.26 skill tree update&lt;br /&gt;
&lt;br /&gt;
==UML Code==&lt;br /&gt;
Uml code is used to generate the look of the skill tree, and the links present on it in the wiki are smw (semantic media wiki) code that are generated based on pixel coordinate rates, and size rates extracted from the diagram using javascript in a browser in dev mode (i just asked google ai how to do it, and it told me, read more info about extraction here: [[Template:Skill_tree_skill_marker]]).&lt;br /&gt;
&lt;br /&gt;
On this page below there are two uml codes. The first one is the currently used uml code, the second one is a newer one that is not used. Eventhough it is not the currently used code, it is intended to be a better template for an updated version of the skill tree for the case let us say new skills are added&lt;br /&gt;
&lt;br /&gt;
In the currently used code there are numerous mistakes such as:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The image width is not scaled down to a more wiki friendly size&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Basic Mechanics is lacking &amp;quot;s&amp;quot; from its end&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;When a java script is used on the svg form of it to extract everything either based on aliases, or based on tag content both are lowercase which will not match page names on the wiki, therefore the &amp;quot;subobjects&amp;quot; of [[Data:Skill_tree_skill_icon_area_registry]] will have to be rewritten by hand in order to update it even with it being extracted&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;During extraction the default nodes like &amp;quot;available to purchase from game start&amp;quot;, and &amp;quot;the player possesses it by default&amp;quot; is difficult to avoid, such that these two may have to be removed from the &amp;quot;subobjects&amp;quot; by hand after the extraction&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Possibly other mistakes i did not notice, or forgot to say&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
One disadvantage with the new code is that it might contain other yet to be known typoes, and other issues usage time may tell&lt;br /&gt;
&lt;br /&gt;
See more info about uml here:[//en.wikipedia.org/wiki/Unified_Modeling_Language Unified_Modeling_Language]&lt;br /&gt;
&lt;br /&gt;
===Currently used uml source code===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@startuml skill_tree_definition&lt;br /&gt;
&#039;made with plantuml extension in visual studio code&lt;br /&gt;
&lt;br /&gt;
&#039;appearance definitions&lt;br /&gt;
top to bottom direction&lt;br /&gt;
skinparam backgroundColor transparent&lt;br /&gt;
skinparam nodesep 15&lt;br /&gt;
&#039;skinparam ranksep 30&lt;br /&gt;
skinparam padding 0&lt;br /&gt;
skinparam margin 0&lt;br /&gt;
skinparam DefaultFontStyle bold&lt;br /&gt;
skinparam defaultTextAlignment center&lt;br /&gt;
skinparam rectangle {&lt;br /&gt;
    BackgroundColor transparent&lt;br /&gt;
    BorderColor transparent&lt;br /&gt;
    Shadowing false&lt;br /&gt;
}&lt;br /&gt;
skinparam ColorArrowSeparationSpace 5&lt;br /&gt;
skinparam arrowThickness 5&lt;br /&gt;
skinparam ArrowColor rosybrown&lt;br /&gt;
&lt;br /&gt;
&#039;node definitions&lt;br /&gt;
&#039;the icons for the nodes are downloaded from the wiki&lt;br /&gt;
&#039;template: rectangle &amp;quot;&amp;lt;font size=20&amp;gt;&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/.png&amp;gt;&amp;quot; as &lt;br /&gt;
&#039;&amp;quot;../../&amp;quot; stands for &amp;quot;up, up&amp;quot; from folders &amp;quot;diagrams/skills/&amp;quot;&lt;br /&gt;
&#039;use shift + alt down to copy selected row down&lt;br /&gt;
&#039;use alt + up, or down to move selected row into alphabetic position (if you will)&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;the player is starting with these&amp;quot; as by_default&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;available to purchase from the start of the game&amp;quot; as game_start&lt;br /&gt;
&#039;definitions with scaled icons: all the &amp;quot;95px...&amp;quot; ones - these are 76/95 = 0.8&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;charcoal burning&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/95px-Charcoal_Burning.png{scale=0.8}&amp;gt;&amp;quot; as charcoal_burning&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;cheesemaking&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/95px-Cheesemaking.png{scale=0.8}&amp;gt;&amp;quot; as cheesemaking&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;cooking&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/95px-Cooking.png{scale=0.8}&amp;gt;&amp;quot; as cooking&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;firecrafts&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/95px-Firecrafts.png{scale=0.8}&amp;gt;&amp;quot; as firecrafts&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;landscaping&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/95px-Landscaping.png{scale=0.8}&amp;gt;&amp;quot; as landscaping&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;music&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/95px-Music.png{scale=0.8}&amp;gt;&amp;quot; as music&lt;br /&gt;
&#039;unchanged definitions 76*76px, and 75*76px&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;alchemy&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Alchemy.png&amp;gt;&amp;quot; as alchemy&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;ancestral worship&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Ancestral_Worship.png&amp;gt;&amp;quot; as ancestral_worship&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;animal husbandry&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Animal_Husbandry.png&amp;gt;&amp;quot; as animal_husbandry&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;archery&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Archery.png&amp;gt;&amp;quot; as archery&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;baking&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Baking.png&amp;gt;&amp;quot; as baking&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;basic mechanic&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Basic_Mechanics.png&amp;gt;&amp;quot; as basic_mechanic&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;beekeeping&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Beekeeping.png&amp;gt;&amp;quot; as beekeeping&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;boat building&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Boat_Building.png&amp;gt;&amp;quot; as boat_building&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;carpentry&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Carpentry.png&amp;gt;&amp;quot; as carpentry&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;deep artifice&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Deep_Artifice.png&amp;gt;&amp;quot; as deep_artifice&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;druidic rite&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Druidic_Rite.png&amp;gt;&amp;quot; as druidic_rite&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;farming&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Farming.png&amp;gt;&amp;quot; as farming&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;first aid&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/First_Aid.png&amp;gt;&amp;quot; as first_aid&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;fishing&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Fishing.png&amp;gt;&amp;quot; as fishing&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;foraging&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Foraging.png&amp;gt;&amp;quot; as foraging&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;forestry&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Forestry.png&amp;gt;&amp;quot; as forestry&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;gardening&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Gardening.png&amp;gt;&amp;quot; as gardening&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;glass blowing&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Glass_Blowing.png&amp;gt;&amp;quot; as glass_blowing&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;hearth magic&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Hearth_Magic.png&amp;gt;&amp;quot; as hearth_magic&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;hunting&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Hunting.png&amp;gt;&amp;quot; as hunting&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;jewelry&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Jewelry.png&amp;gt;&amp;quot; as jewelry&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;lawspeaking&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Lawspeaking.png&amp;gt;&amp;quot; as lawspeaking&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;locks &amp;amp; bolts&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Locks_&amp;amp;_Bolts.png&amp;gt;&amp;quot; as locks_n_bolts&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;lumberjacking&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Lumberjacking.png&amp;gt;&amp;quot; as lumberjacking&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;metal working&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Metal_Working.png&amp;gt;&amp;quot; as metal_working&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;metallurgy&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Metallurgy.png&amp;gt;&amp;quot; as metallurgy&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;mining&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Mining.png&amp;gt;&amp;quot; as mining&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;murder&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Murder.png&amp;gt;&amp;quot; as murder&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;oral tradition&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Oral_Tradition.png&amp;gt;&amp;quot; as oral_tradition&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;painting&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Painting.png&amp;gt;&amp;quot; as painting&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;plant lore&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Plant_Lore.png&amp;gt;&amp;quot; as plant_lore&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;pottery&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Pottery.png&amp;gt;&amp;quot; as pottery&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;primitive tools&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Primitive_Tools.png&amp;gt;&amp;quot; as primitive_tools&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;rage&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Rage.png&amp;gt;&amp;quot; as rage&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;rope twining&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Rope_Twining.png&amp;gt;&amp;quot; as rope_twining&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;sausage making&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Sausage_Making.png&amp;gt;&amp;quot; as sausage_making&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;sewing&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Sewing.png&amp;gt;&amp;quot; as sewing&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;siegecraft&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Siegecraft.png&amp;gt;&amp;quot; as siegecraft&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;silkfarming&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Silkfarming.png&amp;gt;&amp;quot; as silkfarming&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;steelmaking&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Steelmaking.png&amp;gt;&amp;quot; as steelmaking&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;stone working&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Stone_Working.png&amp;gt;&amp;quot; as stone_working&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;swimming&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Swimming.png&amp;gt;&amp;quot; as swimming&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;tanning&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Tanning.png&amp;gt;&amp;quot; as tanning&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;the will to power&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/The_Will_to_Power.png&amp;gt;&amp;quot; as the_will_to_power&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;theft&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Theft.png&amp;gt;&amp;quot; as theft&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;trade&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Trade.png&amp;gt;&amp;quot; as trade&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;trespassing&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Trespassing.png&amp;gt;&amp;quot; as trespassing&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;tunneling&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Tunneling.png&amp;gt;&amp;quot; as tunneling&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;vandalism&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Vandalism.png&amp;gt;&amp;quot; as vandalism&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;wheelwrighting&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Wheelwrighting.png&amp;gt;&amp;quot; as wheelwrighting&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;wilderness survival&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Wilderness_Survival.png&amp;gt;&amp;quot; as wilderness_survival&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;winemaking&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Winemaking.png&amp;gt;&amp;quot; as winemaking&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;woodsmanship&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Woodsmanship.png&amp;gt;&amp;quot; as woodsmanship&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;yeomanry&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Yeomanry.png&amp;gt;&amp;quot; as yeomanry&lt;br /&gt;
&lt;br /&gt;
&#039;connection definitions&lt;br /&gt;
alchemy &amp;lt;-[#MediumPurple]- hearth_magic&lt;br /&gt;
alchemy &amp;lt;-[#LightGreen]- plant_lore&lt;br /&gt;
alchemy &amp;lt;-[#OrangeRed]- glass_blowing&lt;br /&gt;
ancestral_worship &amp;lt;-[#MediumPurple]- hearth_magic&lt;br /&gt;
animal_husbandry &amp;lt;-- hunting&lt;br /&gt;
archery &amp;lt;-- hunting&lt;br /&gt;
baking &amp;lt;-[#OrangeRed]- pottery&lt;br /&gt;
baking &amp;lt;-[#OrangeRed]- cooking&lt;br /&gt;
baking &amp;lt;-[#LightGreen]- farming&lt;br /&gt;
basic_mechanic &amp;lt;-[#DarkBlue]- rope_twining&lt;br /&gt;
basic_mechanic &amp;lt;-[#BurlyWood;#DarkBlue]- wheelwrighting&lt;br /&gt;
basic_mechanic &amp;lt;-[#DarkBlue]- metal_working&lt;br /&gt;
beekeeping &amp;lt;-[#LightGreen]- farming&lt;br /&gt;
boat_building &amp;lt;-[#SteelBlue]- swimming&lt;br /&gt;
boat_building &amp;lt;-[#BurlyWood]- carpentry&lt;br /&gt;
carpentry &amp;lt;-[#BurlyWood;#DarkBlue]- lumberjacking&lt;br /&gt;
charcoal_burning &amp;lt;-[#OrangeRed]- pottery&lt;br /&gt;
charcoal_burning &amp;lt;-[#BurlyWood]- lumberjacking&lt;br /&gt;
cheesemaking &amp;lt;-- animal_husbandry&lt;br /&gt;
cheesemaking &amp;lt;-[#LightGreen]- farming&lt;br /&gt;
cooking &amp;lt;-[#OrangeRed]- firecrafts&lt;br /&gt;
deep_artifice &amp;lt;-[#DarkBlue]- tunneling&lt;br /&gt;
deep_artifice &amp;lt;-[#LightGreen;#DarkBlue]- farming&lt;br /&gt;
deep_artifice &amp;lt;-[#BurlyWood;#DarkBlue]- basic_mechanic&lt;br /&gt;
deep_artifice &amp;lt;-[#DarkBlue]- metallurgy&lt;br /&gt;
druidic_rite &amp;lt;-[#MediumPurple;#DarkGreen]- hearth_magic&lt;br /&gt;
druidic_rite &amp;lt;-[#LightGreen;#DarkGreen]- forestry&lt;br /&gt;
farming &amp;lt;-[#DarkGreen;#DarkBlue]- foraging&lt;br /&gt;
firecrafts &amp;lt;-[#OrangeRed]- game_start&lt;br /&gt;
first_aid &amp;lt;-[#LightGreen]- plant_lore&lt;br /&gt;
first_aid &amp;lt;-[#MediumPurple]- hearth_magic&lt;br /&gt;
fishing &amp;lt;-[#SteelBlue]- foraging&lt;br /&gt;
foraging &amp;lt;-[#DarkGreen;#DarkBlue]- game_start&lt;br /&gt;
forestry &amp;lt;-[#LightGreen;#DarkGreen]- gardening&lt;br /&gt;
forestry &amp;lt;-[#LightGreen;#DarkGreen]- woodsmanship&lt;br /&gt;
gardening &amp;lt;-[#LightGreen;#DarkGreen]- farming&lt;br /&gt;
glass_blowing &amp;lt;-[#OrangeRed]- pottery&lt;br /&gt;
hearth_magic &amp;lt;-[#MediumPurple;#DarkGreen]- the_will_to_power&lt;br /&gt;
hunting &amp;lt;-[#DarkBlue]- foraging&lt;br /&gt;
jewelry &amp;lt;-- metal_working&lt;br /&gt;
landscaping &amp;lt;-[#BurlyWood]- lumberjacking&lt;br /&gt;
lawspeaking &amp;lt;-[#LightGreen;#GoldenRod]- yeomanry&lt;br /&gt;
lawspeaking &amp;lt;-[#MediumPurple]- hearth_magic&lt;br /&gt;
locks_n_bolts &amp;lt;-[#LightGreen;#GoldenRod]- yeomanry&lt;br /&gt;
locks_n_bolts &amp;lt;-[#BurlyWood]- carpentry&lt;br /&gt;
lumberjacking &amp;lt;-[#DarkGreen;#DarkBlue]- foraging&lt;br /&gt;
metal_working &amp;lt;-[#DarkBlue]- stone_working&lt;br /&gt;
metallurgy &amp;lt;-[#DarkBlue]- steelmaking&lt;br /&gt;
mining &amp;lt;-[#DarkBlue]- stone_working&lt;br /&gt;
murder &amp;lt;-[#DarkRed]- rage&lt;br /&gt;
music &amp;lt;-[#MediumPurple]- hearth_magic&lt;br /&gt;
oral_tradition .. by_default&lt;br /&gt;
painting &amp;lt;-[#MediumPurple]- hearth_magic&lt;br /&gt;
plant_lore &amp;lt;-[#LightGreen;#DarkGreen]- farming&lt;br /&gt;
pottery &amp;lt;-- foraging&lt;br /&gt;
pottery &amp;lt;-[#OrangeRed]- firecrafts&lt;br /&gt;
primitive_tools .. by_default&lt;br /&gt;
rage &amp;lt;-[#DarkRed]- the_will_to_power&lt;br /&gt;
rope_twining &amp;lt;-[#DarkBlue]- tanning&lt;br /&gt;
sausage_making &amp;lt;-[#LightGreen]- farming&lt;br /&gt;
sausage_making &amp;lt;-- animal_husbandry&lt;br /&gt;
sewing &amp;lt;-[#LightGreen]- farming&lt;br /&gt;
siegecraft &amp;lt;-[#DarkRed]- vandalism&lt;br /&gt;
silkfarming &amp;lt;-[#LightGreen]- beekeeping&lt;br /&gt;
steelmaking &amp;lt;-[#DarkBlue]- metal_working&lt;br /&gt;
stone_working &amp;lt;-[#DarkBlue]- foraging&lt;br /&gt;
swimming &amp;lt;-[#SteelBlue]- fishing&lt;br /&gt;
tanning &amp;lt;-[#DarkBlue]- hunting&lt;br /&gt;
the_will_to_power &amp;lt;-[#DarkRed;#DarkGreen]- game_start&lt;br /&gt;
theft &amp;lt;-[#DarkRed]- trespassing&lt;br /&gt;
trade &amp;lt;-[#LightGreen;#GoldenRod]- yeomanry&lt;br /&gt;
trespassing &amp;lt;-[#DarkRed]- the_will_to_power&lt;br /&gt;
tunneling &amp;lt;-[#DarkBlue]- mining&lt;br /&gt;
vandalism &amp;lt;-[#DarkRed]- theft&lt;br /&gt;
vandalism &amp;lt;-[#DarkRed]- rage&lt;br /&gt;
wheelwrighting &amp;lt;-[#BurlyWood;#DarkBlue]- carpentry&lt;br /&gt;
wilderness_survival .. by_default&lt;br /&gt;
winemaking &amp;lt;-[#LightGreen]- farming&lt;br /&gt;
woodsmanship &amp;lt;-[#LightGreen;#DarkGreen]- plant_lore&lt;br /&gt;
woodsmanship &amp;lt;-[#BurlyWood;#DarkGreen]- lumberjacking&lt;br /&gt;
yeomanry &amp;lt;-[#GoldenRod]- the_will_to_power&lt;br /&gt;
yeomanry &amp;lt;-[#LightGreen]- farming&lt;br /&gt;
&lt;br /&gt;
&#039;connection untangling definitions&lt;br /&gt;
primitive_tools -[hidden]right- wilderness_survival&lt;br /&gt;
the_will_to_power -[hidden]right- firecrafts&lt;br /&gt;
sewing -[hidden]left- yeomanry&lt;br /&gt;
painting -[hidden]left- trade&lt;br /&gt;
ancestral_worship -[hidden]left- trade&lt;br /&gt;
lawspeaking -[hidden]left- trade&lt;br /&gt;
music -[hidden]left- trade&lt;br /&gt;
lawspeaking -[hidden]- yeomanry&lt;br /&gt;
game_start -[hidden]right- by_default&lt;br /&gt;
@enduml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===New uml source code template===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@startuml skill_tree_definition&lt;br /&gt;
&#039;made with plantuml extension (by jebbs) in visual studio code&lt;br /&gt;
scale 1600 width&lt;br /&gt;
&lt;br /&gt;
&#039;appearance definitions&lt;br /&gt;
hide stereotype&lt;br /&gt;
top to bottom direction&lt;br /&gt;
skinparam backgroundcolor transparent&lt;br /&gt;
&#039;this one is setting the spacing between nodes horizontally&lt;br /&gt;
skinparam nodesep 15&lt;br /&gt;
&#039;this one would be setting the spacing between nodes vertically&lt;br /&gt;
&#039;skinparam ranksep 30&lt;br /&gt;
&lt;br /&gt;
skinparam defaulttextalignment center&lt;br /&gt;
skinparam defaultfontsize 15&lt;br /&gt;
&lt;br /&gt;
skinparam colorarrowseparationspace 5&lt;br /&gt;
skinparam arrowthickness 5&lt;br /&gt;
skinparam arrowcolor rosybrown&lt;br /&gt;
&lt;br /&gt;
skinparam rectangle {&lt;br /&gt;
    backgroundcolor transparent&lt;br /&gt;
    bordercolor transparent&lt;br /&gt;
    shadowing false&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&#039;skill node template definitions for each stereotype&lt;br /&gt;
!procedure $skill_root_constructor($local_variable_root_name, $rich_root_content)&lt;br /&gt;
    rectangle &amp;quot;$rich_root_content&amp;quot; as $local_variable_root_name &amp;lt;&amp;lt;skill_root_rectangle&amp;gt;&amp;gt;&lt;br /&gt;
!endprocedure&lt;br /&gt;
&lt;br /&gt;
&#039;skill name, and rich skill name are different for example to facilitate names such as &amp;quot;locks &amp;amp; bolts&amp;quot; to &amp;quot;locks n bolts&amp;quot;&lt;br /&gt;
!procedure $skill_node_constructor($local_variable_skill_name, $rich_skill_name, $skill_icon_file_name, $skill_icon_scale)&lt;br /&gt;
    !$skill_icon_image_tag = &amp;quot;&amp;lt;img:../../pictures/skills/&amp;quot; + $skill_icon_file_name + &amp;quot;.png{scale=&amp;quot; + $skill_icon_scale + &amp;quot;}&amp;gt;&amp;quot;&lt;br /&gt;
    !$rectangle_content = $rich_skill_name + &amp;quot;\n&amp;quot; + $skill_icon_image_tag&lt;br /&gt;
    rectangle &amp;quot;$rectangle_content&amp;quot; as $local_variable_skill_name &amp;lt;&amp;lt;skill_node_rectangle&amp;gt;&amp;gt;&lt;br /&gt;
!endprocedure&lt;br /&gt;
&lt;br /&gt;
&#039;node definitions&lt;br /&gt;
&#039;use shift + alt down to copy selected row down&lt;br /&gt;
&#039;use alt + up, or down to move selected row into alphabetic position (if you will)&lt;br /&gt;
$skill_root_constructor(&amp;quot;by_default&amp;quot;, &amp;quot;the player is starting with these&amp;quot;)&lt;br /&gt;
$skill_root_constructor(&amp;quot;game_start&amp;quot;, &amp;quot;available to purchase from the start of the game&amp;quot;)&lt;br /&gt;
&#039;definitions with scaled icons: all the &amp;quot;95px...&amp;quot; ones - these are 76/95 = 0.8&lt;br /&gt;
$skill_node_constructor(&amp;quot;Charcoal_Burning&amp;quot;, &amp;quot;Charcoal Burning&amp;quot;, &amp;quot;95px-Charcoal_Burning&amp;quot;, &amp;quot;0.8&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Cheesemaking&amp;quot;, &amp;quot;Cheesemaking&amp;quot;, &amp;quot;95px-Cheesemaking&amp;quot;, &amp;quot;0.8&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Cooking&amp;quot;, &amp;quot;Cooking&amp;quot;, &amp;quot;95px-Cooking&amp;quot;, &amp;quot;0.8&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Firecrafts&amp;quot;, &amp;quot;Firecrafts&amp;quot;, &amp;quot;95px-Firecrafts&amp;quot;, &amp;quot;0.8&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Landscaping&amp;quot;, &amp;quot;Landscaping&amp;quot;, &amp;quot;95px-Landscaping&amp;quot;, &amp;quot;0.8&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Music&amp;quot;, &amp;quot;Music&amp;quot;, &amp;quot;95px-Music&amp;quot;, &amp;quot;0.8&amp;quot;)&lt;br /&gt;
&#039;unchanged definitions 76*76px, and 75*76px&lt;br /&gt;
$skill_node_constructor(&amp;quot;Alchemy&amp;quot;, &amp;quot;Alchemy&amp;quot;, &amp;quot;Alchemy&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Ancestral_Worship&amp;quot;, &amp;quot;Ancestral Worship&amp;quot;, &amp;quot;Ancestral_Worship&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Animal_Husbandry&amp;quot;, &amp;quot;Animal Husbandry&amp;quot;, &amp;quot;Animal_Husbandry&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Archery&amp;quot;, &amp;quot;Archery&amp;quot;, &amp;quot;Archery&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Baking&amp;quot;, &amp;quot;Baking&amp;quot;, &amp;quot;Baking&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Basic_Mechanics&amp;quot;, &amp;quot;Basic Mechanics&amp;quot;, &amp;quot;Basic_Mechanics&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Beekeeping&amp;quot;, &amp;quot;Beekeeping&amp;quot;, &amp;quot;Beekeeping&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Boat_Building&amp;quot;, &amp;quot;Boat Building&amp;quot;, &amp;quot;Boat_Building&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Carpentry&amp;quot;, &amp;quot;Carpentry&amp;quot;, &amp;quot;Carpentry&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Deep_Artifice&amp;quot;, &amp;quot;Deep Artifice&amp;quot;, &amp;quot;Deep_Artifice&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Druidic_Rite&amp;quot;, &amp;quot;Druidic Rite&amp;quot;, &amp;quot;Druidic_Rite&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Farming&amp;quot;, &amp;quot;Farming&amp;quot;, &amp;quot;Farming&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;First_Aid&amp;quot;, &amp;quot;First Aid&amp;quot;, &amp;quot;First_Aid&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Fishing&amp;quot;, &amp;quot;Fishing&amp;quot;, &amp;quot;Fishing&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Foraging&amp;quot;, &amp;quot;Foraging&amp;quot;, &amp;quot;Foraging&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Forestry&amp;quot;, &amp;quot;Forestry&amp;quot;, &amp;quot;Forestry&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Gardening&amp;quot;, &amp;quot;Gardening&amp;quot;, &amp;quot;Gardening&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Glass_Blowing&amp;quot;, &amp;quot;Glass Blowing&amp;quot;, &amp;quot;Glass_Blowing&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Hearth_Magic&amp;quot;, &amp;quot;Hearth Magic&amp;quot;, &amp;quot;Hearth_Magic&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Hunting&amp;quot;, &amp;quot;Hunting&amp;quot;, &amp;quot;Hunting&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Jewelry&amp;quot;, &amp;quot;Jewelry&amp;quot;, &amp;quot;Jewelry&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Lawspeaking&amp;quot;, &amp;quot;Lawspeaking&amp;quot;, &amp;quot;Lawspeaking&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Locks_n_Bolts&amp;quot;, &amp;quot;Locks &amp;amp; Bolts&amp;quot;, &amp;quot;Locks_&amp;amp;_Bolts&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Lumberjacking&amp;quot;, &amp;quot;Lumberjacking&amp;quot;, &amp;quot;Lumberjacking&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Metal_Working&amp;quot;, &amp;quot;Metal Working&amp;quot;, &amp;quot;Metal_Working&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Metallurgy&amp;quot;, &amp;quot;Metallurgy&amp;quot;, &amp;quot;Metallurgy&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Mining&amp;quot;, &amp;quot;Mining&amp;quot;, &amp;quot;Mining&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Murder&amp;quot;, &amp;quot;Murder&amp;quot;, &amp;quot;Murder&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Oral_Tradition&amp;quot;, &amp;quot;Oral Tradition&amp;quot;, &amp;quot;Oral_Tradition&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Painting&amp;quot;, &amp;quot;Painting&amp;quot;, &amp;quot;Painting&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Plant_Lore&amp;quot;, &amp;quot;Plant Lore&amp;quot;, &amp;quot;Plant_Lore&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Pottery&amp;quot;, &amp;quot;Pottery&amp;quot;, &amp;quot;Pottery&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Primitive_Tools&amp;quot;, &amp;quot;Primitive Tools&amp;quot;, &amp;quot;Primitive_Tools&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Rage&amp;quot;, &amp;quot;Rage&amp;quot;, &amp;quot;Rage&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Rope_Twining&amp;quot;, &amp;quot;Rope Twining&amp;quot;, &amp;quot;Rope_Twining&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Sausage_Making&amp;quot;, &amp;quot;Sausage Making&amp;quot;, &amp;quot;Sausage_Making&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Sewing&amp;quot;, &amp;quot;Sewing&amp;quot;, &amp;quot;Sewing&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Siegecraft&amp;quot;, &amp;quot;Siegecraft&amp;quot;, &amp;quot;Siegecraft&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Silkfarming&amp;quot;, &amp;quot;Silkfarming&amp;quot;, &amp;quot;Silkfarming&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Steelmaking&amp;quot;, &amp;quot;Steelmaking&amp;quot;, &amp;quot;Steelmaking&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Stone_Working&amp;quot;, &amp;quot;Stone Working&amp;quot;, &amp;quot;Stone_Working&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Swimming&amp;quot;, &amp;quot;Swimming&amp;quot;, &amp;quot;Swimming&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Tanning&amp;quot;, &amp;quot;Tanning&amp;quot;, &amp;quot;Tanning&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;The_Will_to_Power&amp;quot;, &amp;quot;The Will to Power&amp;quot;, &amp;quot;The_Will_to_Power&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Theft&amp;quot;, &amp;quot;Theft&amp;quot;, &amp;quot;Theft&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Trade&amp;quot;, &amp;quot;Trade&amp;quot;, &amp;quot;Trade&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Trespassing&amp;quot;, &amp;quot;Trespassing&amp;quot;, &amp;quot;Trespassing&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Tunneling&amp;quot;, &amp;quot;Tunneling&amp;quot;, &amp;quot;Tunneling&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Vandalism&amp;quot;, &amp;quot;Vandalism&amp;quot;, &amp;quot;Vandalism&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Wheelwrighting&amp;quot;, &amp;quot;Wheelwrighting&amp;quot;, &amp;quot;Wheelwrighting&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Wilderness_Survival&amp;quot;, &amp;quot;Wilderness Survival&amp;quot;, &amp;quot;Wilderness_Survival&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Winemaking&amp;quot;, &amp;quot;Winemaking&amp;quot;, &amp;quot;Winemaking&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Woodsmanship&amp;quot;, &amp;quot;Woodsmanship&amp;quot;, &amp;quot;Woodsmanship&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Yeomanry&amp;quot;, &amp;quot;Yeomanry&amp;quot;, &amp;quot;Yeomanry&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&#039;connection definitions&lt;br /&gt;
&amp;quot;Alchemy&amp;quot; &amp;lt;-[#MediumPurple]- &amp;quot;Hearth_Magic&amp;quot;&lt;br /&gt;
&amp;quot;Alchemy&amp;quot; &amp;lt;-[#LightGreen]- &amp;quot;Plant_Lore&amp;quot;&lt;br /&gt;
&amp;quot;Alchemy&amp;quot; &amp;lt;-[#OrangeRed]- &amp;quot;Glass_Blowing&amp;quot;&lt;br /&gt;
&amp;quot;Ancestral_Worship&amp;quot; &amp;lt;-[#MediumPurple]- &amp;quot;Hearth_Magic&amp;quot;&lt;br /&gt;
&amp;quot;Animal_Husbandry&amp;quot; &amp;lt;-- &amp;quot;Hunting&amp;quot;&lt;br /&gt;
&amp;quot;Archery&amp;quot; &amp;lt;-- &amp;quot;Hunting&amp;quot;&lt;br /&gt;
&amp;quot;Baking&amp;quot; &amp;lt;-[#OrangeRed]- &amp;quot;Pottery&amp;quot;&lt;br /&gt;
&amp;quot;Baking&amp;quot; &amp;lt;-[#OrangeRed]- &amp;quot;Cooking&amp;quot;&lt;br /&gt;
&amp;quot;Baking&amp;quot; &amp;lt;-[#LightGreen]- &amp;quot;Farming&amp;quot;&lt;br /&gt;
&amp;quot;Basic_Mechanics&amp;quot; &amp;lt;-[#DarkBlue]- &amp;quot;Rope_Twining&amp;quot;&lt;br /&gt;
&amp;quot;Basic_Mechanics&amp;quot; &amp;lt;-[#BurlyWood;#DarkBlue]- &amp;quot;Wheelwrighting&amp;quot;&lt;br /&gt;
&amp;quot;Basic_Mechanics&amp;quot; &amp;lt;-[#DarkBlue]- &amp;quot;Metal_Working&amp;quot;&lt;br /&gt;
&amp;quot;Beekeeping&amp;quot; &amp;lt;-[#LightGreen]- &amp;quot;Farming&amp;quot;&lt;br /&gt;
&amp;quot;Boat_Building&amp;quot; &amp;lt;-[#SteelBlue]- &amp;quot;Swimming&amp;quot;&lt;br /&gt;
&amp;quot;Boat_Building&amp;quot; &amp;lt;-[#BurlyWood]- &amp;quot;Carpentry&amp;quot;&lt;br /&gt;
&amp;quot;Carpentry&amp;quot; &amp;lt;-[#BurlyWood;#DarkBlue]- &amp;quot;Lumberjacking&amp;quot;&lt;br /&gt;
&amp;quot;Charcoal_Burning&amp;quot; &amp;lt;-[#OrangeRed]- &amp;quot;Pottery&amp;quot;&lt;br /&gt;
&amp;quot;Charcoal_Burning&amp;quot; &amp;lt;-[#BurlyWood]- &amp;quot;Lumberjacking&amp;quot;&lt;br /&gt;
&amp;quot;Cheesemaking&amp;quot; &amp;lt;-- &amp;quot;Animal_Husbandry&amp;quot;&lt;br /&gt;
&amp;quot;Cheesemaking&amp;quot; &amp;lt;-[#LightGreen]- &amp;quot;Farming&amp;quot;&lt;br /&gt;
&amp;quot;Cooking&amp;quot; &amp;lt;-[#OrangeRed]- &amp;quot;Firecrafts&amp;quot;&lt;br /&gt;
&amp;quot;Deep_Artifice&amp;quot; &amp;lt;-[#DarkBlue]- &amp;quot;Tunneling&amp;quot;&lt;br /&gt;
&amp;quot;Deep_Artifice&amp;quot; &amp;lt;-[#LightGreen;#DarkBlue]- &amp;quot;Farming&amp;quot;&lt;br /&gt;
&amp;quot;Deep_Artifice&amp;quot; &amp;lt;-[#BurlyWood;#DarkBlue]- &amp;quot;Basic_Mechanics&amp;quot;&lt;br /&gt;
&amp;quot;Deep_Artifice&amp;quot; &amp;lt;-[#DarkBlue]- &amp;quot;Metallurgy&amp;quot;&lt;br /&gt;
&amp;quot;Druidic_Rite&amp;quot; &amp;lt;-[#MediumPurple;#DarkGreen]- &amp;quot;Hearth_Magic&amp;quot;&lt;br /&gt;
&amp;quot;Druidic_Rite&amp;quot; &amp;lt;-[#LightGreen;#DarkGreen]- &amp;quot;Forestry&amp;quot;&lt;br /&gt;
&amp;quot;Farming&amp;quot; &amp;lt;-[#DarkGreen;#DarkBlue]- &amp;quot;Foraging&amp;quot;&lt;br /&gt;
&amp;quot;Firecrafts&amp;quot; &amp;lt;-[#OrangeRed]- &amp;quot;game_start&amp;quot;&lt;br /&gt;
&amp;quot;First_Aid&amp;quot; &amp;lt;-[#LightGreen]- &amp;quot;Plant_Lore&amp;quot;&lt;br /&gt;
&amp;quot;First_Aid&amp;quot; &amp;lt;-[#MediumPurple]- &amp;quot;Hearth_Magic&amp;quot;&lt;br /&gt;
&amp;quot;Fishing&amp;quot; &amp;lt;-[#SteelBlue]- &amp;quot;Foraging&amp;quot;&lt;br /&gt;
&amp;quot;Foraging&amp;quot; &amp;lt;-[#DarkGreen;#DarkBlue]- &amp;quot;game_start&amp;quot;&lt;br /&gt;
&amp;quot;Forestry&amp;quot; &amp;lt;-[#LightGreen;#DarkGreen]- &amp;quot;Gardening&amp;quot;&lt;br /&gt;
&amp;quot;Forestry&amp;quot; &amp;lt;-[#LightGreen;#DarkGreen]- &amp;quot;Woodsmanship&amp;quot;&lt;br /&gt;
&amp;quot;Gardening&amp;quot; &amp;lt;-[#LightGreen;#DarkGreen]- &amp;quot;Farming&amp;quot;&lt;br /&gt;
&amp;quot;Glass_Blowing&amp;quot; &amp;lt;-[#OrangeRed]- &amp;quot;Pottery&amp;quot;&lt;br /&gt;
&amp;quot;Hearth_Magic&amp;quot; &amp;lt;-[#MediumPurple;#DarkGreen]- &amp;quot;The_Will_to_Power&amp;quot;&lt;br /&gt;
&amp;quot;Hunting&amp;quot; &amp;lt;-[#DarkBlue]- &amp;quot;Foraging&amp;quot;&lt;br /&gt;
&amp;quot;Jewelry&amp;quot; &amp;lt;-- &amp;quot;Metal_Working&amp;quot;&lt;br /&gt;
&amp;quot;Landscaping&amp;quot; &amp;lt;-[#BurlyWood]- &amp;quot;Lumberjacking&amp;quot;&lt;br /&gt;
&amp;quot;Lawspeaking&amp;quot; &amp;lt;-[#LightGreen;#GoldenRod]- &amp;quot;Yeomanry&amp;quot;&lt;br /&gt;
&amp;quot;Lawspeaking&amp;quot; &amp;lt;-[#MediumPurple]- &amp;quot;Hearth_Magic&amp;quot;&lt;br /&gt;
&amp;quot;Locks_n_Bolts&amp;quot; &amp;lt;-[#LightGreen;#GoldenRod]- &amp;quot;Yeomanry&amp;quot;&lt;br /&gt;
&amp;quot;Locks_n_Bolts&amp;quot; &amp;lt;-[#BurlyWood]- &amp;quot;Carpentry&amp;quot;&lt;br /&gt;
&amp;quot;Lumberjacking&amp;quot; &amp;lt;-[#DarkGreen;#DarkBlue]- &amp;quot;Foraging&amp;quot;&lt;br /&gt;
&amp;quot;Metal_Working&amp;quot; &amp;lt;-[#DarkBlue]- &amp;quot;Stone_Working&amp;quot;&lt;br /&gt;
&amp;quot;Metallurgy&amp;quot; &amp;lt;-[#DarkBlue]- &amp;quot;Steelmaking&amp;quot;&lt;br /&gt;
&amp;quot;Mining&amp;quot; &amp;lt;-[#DarkBlue]- &amp;quot;Stone_Working&amp;quot;&lt;br /&gt;
&amp;quot;Murder&amp;quot; &amp;lt;-[#DarkRed]- &amp;quot;Rage&amp;quot;&lt;br /&gt;
&amp;quot;Music&amp;quot; &amp;lt;-[#MediumPurple]- &amp;quot;Hearth_Magic&amp;quot;&lt;br /&gt;
&amp;quot;Oral_Tradition&amp;quot; .. &amp;quot;by_default&amp;quot;&lt;br /&gt;
&amp;quot;Painting&amp;quot; &amp;lt;-[#MediumPurple]- &amp;quot;Hearth_Magic&amp;quot;&lt;br /&gt;
&amp;quot;Plant_Lore&amp;quot; &amp;lt;-[#LightGreen;#DarkGreen]- &amp;quot;Farming&amp;quot;&lt;br /&gt;
&amp;quot;Pottery&amp;quot; &amp;lt;-- &amp;quot;Foraging&amp;quot;&lt;br /&gt;
&amp;quot;Pottery&amp;quot; &amp;lt;-[#OrangeRed]- &amp;quot;Firecrafts&amp;quot;&lt;br /&gt;
&amp;quot;Primitive_Tools&amp;quot; .. &amp;quot;by_default&amp;quot;&lt;br /&gt;
&amp;quot;Rage&amp;quot; &amp;lt;-[#DarkRed]- &amp;quot;The_Will_to_Power&amp;quot;&lt;br /&gt;
&amp;quot;Rope_Twining&amp;quot; &amp;lt;-[#DarkBlue]- &amp;quot;Tanning&amp;quot;&lt;br /&gt;
&amp;quot;Sausage_Making&amp;quot; &amp;lt;-[#LightGreen]- &amp;quot;Farming&amp;quot;&lt;br /&gt;
&amp;quot;Sausage_Making&amp;quot; &amp;lt;-- &amp;quot;Animal_Husbandry&amp;quot;&lt;br /&gt;
&amp;quot;Sewing&amp;quot; &amp;lt;-[#LightGreen]- &amp;quot;Farming&amp;quot;&lt;br /&gt;
&amp;quot;Siegecraft&amp;quot; &amp;lt;-[#DarkRed]- &amp;quot;Vandalism&amp;quot;&lt;br /&gt;
&amp;quot;Silkfarming&amp;quot; &amp;lt;-[#LightGreen]- &amp;quot;Beekeeping&amp;quot;&lt;br /&gt;
&amp;quot;Steelmaking&amp;quot; &amp;lt;-[#DarkBlue]- &amp;quot;Metal_Working&amp;quot;&lt;br /&gt;
&amp;quot;Stone_Working&amp;quot; &amp;lt;-[#DarkBlue]- &amp;quot;Foraging&amp;quot;&lt;br /&gt;
&amp;quot;Swimming&amp;quot; &amp;lt;-[#SteelBlue]- &amp;quot;Fishing&amp;quot;&lt;br /&gt;
&amp;quot;Tanning&amp;quot; &amp;lt;-[#DarkBlue]- &amp;quot;Hunting&amp;quot;&lt;br /&gt;
&amp;quot;The_Will_to_Power&amp;quot; &amp;lt;-[#DarkRed;#DarkGreen]- &amp;quot;game_start&amp;quot;&lt;br /&gt;
&amp;quot;Theft&amp;quot; &amp;lt;-[#DarkRed]- &amp;quot;Trespassing&amp;quot;&lt;br /&gt;
&amp;quot;Trade&amp;quot; &amp;lt;-[#LightGreen;#GoldenRod]- &amp;quot;Yeomanry&amp;quot;&lt;br /&gt;
&amp;quot;Trespassing&amp;quot; &amp;lt;-[#DarkRed]- &amp;quot;The_Will_to_Power&amp;quot;&lt;br /&gt;
&amp;quot;Tunneling&amp;quot; &amp;lt;-[#DarkBlue]- &amp;quot;Mining&amp;quot;&lt;br /&gt;
&amp;quot;Vandalism&amp;quot; &amp;lt;-[#DarkRed]- &amp;quot;Theft&amp;quot;&lt;br /&gt;
&amp;quot;Vandalism&amp;quot; &amp;lt;-[#DarkRed]- &amp;quot;Rage&amp;quot;&lt;br /&gt;
&amp;quot;Wheelwrighting&amp;quot; &amp;lt;-[#BurlyWood;#DarkBlue]- &amp;quot;Carpentry&amp;quot;&lt;br /&gt;
&amp;quot;Wilderness_Survival&amp;quot; .. &amp;quot;by_default&amp;quot;&lt;br /&gt;
&amp;quot;Winemaking&amp;quot; &amp;lt;-[#LightGreen]- &amp;quot;Farming&amp;quot;&lt;br /&gt;
&amp;quot;Woodsmanship&amp;quot; &amp;lt;-[#LightGreen;#DarkGreen]- &amp;quot;Plant_Lore&amp;quot;&lt;br /&gt;
&amp;quot;Woodsmanship&amp;quot; &amp;lt;-[#BurlyWood;#DarkGreen]- &amp;quot;Lumberjacking&amp;quot;&lt;br /&gt;
&amp;quot;Yeomanry&amp;quot; &amp;lt;-[#GoldenRod]- &amp;quot;The_Will_to_Power&amp;quot;&lt;br /&gt;
&amp;quot;Yeomanry&amp;quot; &amp;lt;-[#LightGreen]- &amp;quot;Farming&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;connection untangling definitions&lt;br /&gt;
&amp;quot;Primitive_Tools&amp;quot; -[hidden]right- &amp;quot;Wilderness_Survival&amp;quot;&lt;br /&gt;
&amp;quot;The_Will_to_Power&amp;quot; -[hidden]right- &amp;quot;Firecrafts&amp;quot;&lt;br /&gt;
&amp;quot;Sewing&amp;quot; -[hidden]left- &amp;quot;Yeomanry&amp;quot;&lt;br /&gt;
&amp;quot;Painting&amp;quot; -[hidden]left- &amp;quot;Trade&amp;quot;&lt;br /&gt;
&amp;quot;Ancestral_Worship&amp;quot; -[hidden]left- &amp;quot;Trade&amp;quot;&lt;br /&gt;
&amp;quot;Lawspeaking&amp;quot; -[hidden]left- &amp;quot;Trade&amp;quot;&lt;br /&gt;
&amp;quot;Music&amp;quot; -[hidden]left- &amp;quot;Trade&amp;quot;&lt;br /&gt;
&amp;quot;Lawspeaking&amp;quot; -[hidden]- &amp;quot;Yeomanry&amp;quot;&lt;br /&gt;
&amp;quot;game_start&amp;quot; -[hidden]right- &amp;quot;by_default&amp;quot;&lt;br /&gt;
@enduml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Template:Skill_tree_skill_marker&amp;diff=120199</id>
		<title>Template:Skill tree skill marker</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Template:Skill_tree_skill_marker&amp;diff=120199"/>
		<updated>2025-12-27T12:21:06Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: clarification&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;div&lt;br /&gt;
style=&amp;quot;&lt;br /&gt;
 position: absolute&lt;br /&gt;
 ; display: flex&lt;br /&gt;
 ; justify-content: center&lt;br /&gt;
 ; align-items: center&lt;br /&gt;
 ; left: {{{2}}}%&lt;br /&gt;
 ; top: {{{3}}}%&lt;br /&gt;
 ; width: {{{4}}}%&lt;br /&gt;
 ; height: {{{5}}}%&lt;br /&gt;
 ; transform: translate(-50%, -50%)&lt;br /&gt;
 ; z-index: 10&lt;br /&gt;
 ; filter: alpha(opacity=0) !important&lt;br /&gt;
 ; -moz-opacity: 0 !important&lt;br /&gt;
 ; -khtml-opacity: 0 !important&lt;br /&gt;
 ; opacity: 0 !important&lt;br /&gt;
 ; background-color: transparent !important&lt;br /&gt;
 ; -ms-filter: &#039;progid:DXImageTransform.Microsoft.Alpha(Opacity=0)&#039; !important&lt;br /&gt;
&amp;quot;title=&amp;quot;{{{6|something}}} costs {{{7|unknown}}} learning points&amp;quot;&lt;br /&gt;
&amp;gt;&amp;lt;span&lt;br /&gt;
 style=&amp;quot;font-size: 30px&amp;quot;&lt;br /&gt;
 title=&amp;quot;{{{6|something}}} costs {{{7|unknown}}} learning points&amp;quot;&lt;br /&gt;
&amp;gt;[[{{{6}}}|o]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
this fills up the skill tree png&#039;s (File:Skill_tree_definition.png) ancestor div with itself for each area definition in [[Data:Skill_tree_skill_icon_area_registry]] - each one of this should be a link to the respective icon&#039;s page from the [[Skills|skills page]]&lt;br /&gt;
&lt;br /&gt;
these &amp;quot;area&amp;quot; links on the png work the way that there is an &amp;quot;o&amp;quot; hidden link display that is 30px font size for each icon inside the same div the png is in (roughly)&lt;br /&gt;
&lt;br /&gt;
the 30px font size is the proportional icon size: for example the original icons were set to be 76px squared, and the png was set to be 1200px wide with 3123px original width - so the pixel size of the font of a single character like &amp;quot;o&amp;quot; has to be 76px times 1200 over 3123 pixels that is approximately 29.2px - however i rounded it up&lt;br /&gt;
&lt;br /&gt;
each position can be got by using the source code included in the summary of the File:Skill_tree_definition.png in an application like visual studio code with jebbs&#039; plantuml extension (both are free), and then generate a new svg based on that source, open the svg in browser, open dev mode with f12, and then run javascript that is going to paste every single node the plantumel was containing as &amp;quot;rectangles&amp;quot; onto the user&#039;s clipboard:&lt;br /&gt;
&lt;br /&gt;
example javascript used for the old uml source code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// 1. Get the total width and height of the SVG viewbox&lt;br /&gt;
const svg = document.querySelector(&#039;svg&#039;);&lt;br /&gt;
const totalW = svg.viewBox.baseVal.width || svg.width.baseVal.value;&lt;br /&gt;
const totalH = svg.viewBox.baseVal.height || svg.height.baseVal.value;&lt;br /&gt;
&lt;br /&gt;
// 2. Select and sort skills&lt;br /&gt;
const skills = Array.from(document.querySelectorAll(&#039;g[id^=&amp;quot;elem_&amp;quot;]&#039;));&lt;br /&gt;
skills.sort((a, b) =&amp;gt; a.id.localeCompare(b.id));&lt;br /&gt;
&lt;br /&gt;
// 3. Map to Percentage Rates&lt;br /&gt;
const registryData = skills.map(skill =&amp;gt; {&lt;br /&gt;
    const bbox = skill.getBBox();&lt;br /&gt;
    const alias = skill.id.replace(&#039;elem_&#039;, &#039;&#039;);&lt;br /&gt;
    &lt;br /&gt;
    // Calculate Percentages&lt;br /&gt;
    const centerX = ((bbox.x + (bbox.width / 2)) / totalW) * 100;&lt;br /&gt;
    const centerY = ((bbox.y + (bbox.height / 2)) / totalH) * 100;&lt;br /&gt;
    const sizeX = (bbox.width / totalW) * 100;&lt;br /&gt;
    const sizeY = (bbox.height / totalH) * 100;&lt;br /&gt;
    &lt;br /&gt;
    return `{{#subobject: |Skill_page=${alias} |Skill_tree_coordinate_rates=${centerX.toFixed(2)}; ${centerY.toFixed(2)}; ${sizeX.toFixed(2)}; ${sizeY.toFixed(2)} }}`;&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// 4. Copy directly to your clipboard&lt;br /&gt;
const finalOutput = registryData.join(&#039;\n&#039;);&lt;br /&gt;
copy(finalOutput);&lt;br /&gt;
&lt;br /&gt;
console.log(&amp;quot;=== SUCCESS ===&amp;quot;);&lt;br /&gt;
console.log(`${registryData.length} skills converted to PERCENTAGE rates and copied to clipboard.`);&lt;br /&gt;
console.log(`Based on SVG Size: ${totalW}x${totalH}`);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note that using the old uml source code as template instead of the new one to update the uml source code, and then use this javascript on the svg of it will contain the rectangle definitions with lower case letters, and include two default nodes - that all will need to be rewritten to page names by hand, and will need to be removed by hand respectively after the extraction&lt;br /&gt;
&lt;br /&gt;
i have just uploaded new uml source code that will facilitate to upload smaller png files (wiki friendlyness), and will facilitate position, and size extraction - as a new javascript (perhaps witten by ai) will be able to differentiate between stereotypes of rectangles (in order to not extract the root skill nodes), and the page names may be according to the contents of the nodes (in order to not make wiki writers rewrite extracted page names themselves among [[Data:Skill_tree_skill_icon_area_registry|these subobjects]])&lt;br /&gt;
&lt;br /&gt;
i just asked google ai how to extract these infos from svg files, however the important stuff to know before extracting: every coordinate, and size must be relative percentage in format from zero to hundred (not zero to one), without percentage marks (those are placed after), and rounded to two digits (for readable code)&lt;br /&gt;
&lt;br /&gt;
it is also worth mentioning that with the new source code template the aliases are no longer feasable to be extracted (it has not been, but it did not matter before) because some of the aliases may contain different letters compared to the page names for the sake of handling those in uml. for example content &amp;quot;locks &amp;amp; bolts&amp;quot; is under alias &amp;quot;locks n bolts&amp;quot; in the new uml source - so the content will be needed to be extracted, not the alias (the current javascript example is extracting aliases)&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Template:Skill_tree_skill_marker&amp;diff=120198</id>
		<title>Template:Skill tree skill marker</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Template:Skill_tree_skill_marker&amp;diff=120198"/>
		<updated>2025-12-27T12:08:40Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: removed accidental skill trees&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;div&lt;br /&gt;
style=&amp;quot;&lt;br /&gt;
 position: absolute&lt;br /&gt;
 ; display: flex&lt;br /&gt;
 ; justify-content: center&lt;br /&gt;
 ; align-items: center&lt;br /&gt;
 ; left: {{{2}}}%&lt;br /&gt;
 ; top: {{{3}}}%&lt;br /&gt;
 ; width: {{{4}}}%&lt;br /&gt;
 ; height: {{{5}}}%&lt;br /&gt;
 ; transform: translate(-50%, -50%)&lt;br /&gt;
 ; z-index: 10&lt;br /&gt;
 ; filter: alpha(opacity=0) !important&lt;br /&gt;
 ; -moz-opacity: 0 !important&lt;br /&gt;
 ; -khtml-opacity: 0 !important&lt;br /&gt;
 ; opacity: 0 !important&lt;br /&gt;
 ; background-color: transparent !important&lt;br /&gt;
 ; -ms-filter: &#039;progid:DXImageTransform.Microsoft.Alpha(Opacity=0)&#039; !important&lt;br /&gt;
&amp;quot;title=&amp;quot;{{{6|something}}} costs {{{7|unknown}}} learning points&amp;quot;&lt;br /&gt;
&amp;gt;&amp;lt;span&lt;br /&gt;
 style=&amp;quot;font-size: 30px&amp;quot;&lt;br /&gt;
 title=&amp;quot;{{{6|something}}} costs {{{7|unknown}}} learning points&amp;quot;&lt;br /&gt;
&amp;gt;[[{{{6}}}|o]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
this fills up the skill tree png&#039;s (File:Skill_tree_definition.png) ancestor div with itself for each area definition in [[Data:Skill_tree_skill_icon_area_registry]] - each one of this should be a link to the respective icon&#039;s page from the [[Skills|skills page]]&lt;br /&gt;
&lt;br /&gt;
these &amp;quot;area&amp;quot; links on the png work the way that there is an &amp;quot;o&amp;quot; hidden link display that is 30px font size for each icon inside the same div the png is in (roughly)&lt;br /&gt;
 - the 30px font size is the proportional icon size: for example the original icons were set to be 76px squared, and the png was set to be 1200px wide with 3123px original width - so the pixel size of the font of a single character like &amp;quot;o&amp;quot; has to be 76px times 1200 over 3123 pixels that is approximately 29.2px - however i rounded it up&lt;br /&gt;
&lt;br /&gt;
each position can be got by using the source code included in the summary of the File:Skill_tree_definition.png in an application like visual studio code with jebbs&#039; plantuml extension (both are free), and then generate a new svg based on that source, open the svg in browser, open dev mode with f12, and then run javascript that is going to paste every single node the plantumel was containing as &amp;quot;rectangles&amp;quot; onto the user&#039;s clipboard:&lt;br /&gt;
&lt;br /&gt;
example javascript used for the old uml source code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// 1. Get the total width and height of the SVG viewbox&lt;br /&gt;
const svg = document.querySelector(&#039;svg&#039;);&lt;br /&gt;
const totalW = svg.viewBox.baseVal.width || svg.width.baseVal.value;&lt;br /&gt;
const totalH = svg.viewBox.baseVal.height || svg.height.baseVal.value;&lt;br /&gt;
&lt;br /&gt;
// 2. Select and sort skills&lt;br /&gt;
const skills = Array.from(document.querySelectorAll(&#039;g[id^=&amp;quot;elem_&amp;quot;]&#039;));&lt;br /&gt;
skills.sort((a, b) =&amp;gt; a.id.localeCompare(b.id));&lt;br /&gt;
&lt;br /&gt;
// 3. Map to Percentage Rates&lt;br /&gt;
const registryData = skills.map(skill =&amp;gt; {&lt;br /&gt;
    const bbox = skill.getBBox();&lt;br /&gt;
    const alias = skill.id.replace(&#039;elem_&#039;, &#039;&#039;);&lt;br /&gt;
    &lt;br /&gt;
    // Calculate Percentages&lt;br /&gt;
    const centerX = ((bbox.x + (bbox.width / 2)) / totalW) * 100;&lt;br /&gt;
    const centerY = ((bbox.y + (bbox.height / 2)) / totalH) * 100;&lt;br /&gt;
    const sizeX = (bbox.width / totalW) * 100;&lt;br /&gt;
    const sizeY = (bbox.height / totalH) * 100;&lt;br /&gt;
    &lt;br /&gt;
    return `{{#subobject: |Skill_page=${alias} |Skill_tree_coordinate_rates=${centerX.toFixed(2)}; ${centerY.toFixed(2)}; ${sizeX.toFixed(2)}; ${sizeY.toFixed(2)} }}`;&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// 4. Copy directly to your clipboard&lt;br /&gt;
const finalOutput = registryData.join(&#039;\n&#039;);&lt;br /&gt;
copy(finalOutput);&lt;br /&gt;
&lt;br /&gt;
console.log(&amp;quot;=== SUCCESS ===&amp;quot;);&lt;br /&gt;
console.log(`${registryData.length} skills converted to PERCENTAGE rates and copied to clipboard.`);&lt;br /&gt;
console.log(`Based on SVG Size: ${totalW}x${totalH}`);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note that using the old uml source code to write a new source code like that, and then use this javascript on the svg of it will contain the rectangle definitions with lower case letters, and include two default nodes - that will need to be removed by hand after the extraction&lt;br /&gt;
&lt;br /&gt;
i have just uploaded new uml source code that will facilitate to upload smaller png files (wiki friendlyness), and will facilitate position, and size extraction - as a new javascript is able to differentiate between stereotypes of rectangles (in order to not extract the root skill nodes, and then remove those by hand), and the page names may be according to the contents of the nodes (in order to not make wiki writers be not required to rewrite extracted page names themselves among [[Data:Skill_tree_skill_icon_area_registry|these subobjects]])&lt;br /&gt;
&lt;br /&gt;
i just asked google ai how to extract these infos from svg files, however the important stuff to know before extracting: every coordinate, and size must be relative percentage in format from zero to hundred (not zero to one), without percentage marks (those are placed after), and rounded to two digits (for readable code)&lt;br /&gt;
&lt;br /&gt;
it is also worth mentioning that with the new source code template the aliases are no longer feasable to be extracted because some of the aliases may contain different letters compared to the page names for the sake of handling those in uml for example &amp;quot;locks &amp;amp; bolts&amp;quot; is &amp;quot;locks n bolts&amp;quot; in the new uml source - so the content will be needed to be extracted, not the alias as the current javascript example is doing it&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Template:Skill_tree_skill_marker&amp;diff=120197</id>
		<title>Template:Skill tree skill marker</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Template:Skill_tree_skill_marker&amp;diff=120197"/>
		<updated>2025-12-27T12:06:28Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: added further documentation, and links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;div&lt;br /&gt;
style=&amp;quot;&lt;br /&gt;
 position: absolute&lt;br /&gt;
 ; display: flex&lt;br /&gt;
 ; justify-content: center&lt;br /&gt;
 ; align-items: center&lt;br /&gt;
 ; left: {{{2}}}%&lt;br /&gt;
 ; top: {{{3}}}%&lt;br /&gt;
 ; width: {{{4}}}%&lt;br /&gt;
 ; height: {{{5}}}%&lt;br /&gt;
 ; transform: translate(-50%, -50%)&lt;br /&gt;
 ; z-index: 10&lt;br /&gt;
 ; filter: alpha(opacity=0) !important&lt;br /&gt;
 ; -moz-opacity: 0 !important&lt;br /&gt;
 ; -khtml-opacity: 0 !important&lt;br /&gt;
 ; opacity: 0 !important&lt;br /&gt;
 ; background-color: transparent !important&lt;br /&gt;
 ; -ms-filter: &#039;progid:DXImageTransform.Microsoft.Alpha(Opacity=0)&#039; !important&lt;br /&gt;
&amp;quot;title=&amp;quot;{{{6|something}}} costs {{{7|unknown}}} learning points&amp;quot;&lt;br /&gt;
&amp;gt;&amp;lt;span&lt;br /&gt;
 style=&amp;quot;font-size: 30px&amp;quot;&lt;br /&gt;
 title=&amp;quot;{{{6|something}}} costs {{{7|unknown}}} learning points&amp;quot;&lt;br /&gt;
&amp;gt;[[{{{6}}}|o]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
this fills up the [[File:Skill_tree_definition.png|skill tree png&#039;s]] ancestor div with itself for each area definition in [[Data:Skill_tree_skill_icon_area_registry]] - each one of this should be a link to the respective icon&#039;s page from the [[Skills|skills page]]&lt;br /&gt;
&lt;br /&gt;
these &amp;quot;area&amp;quot; links on the png work the way that there is an &amp;quot;o&amp;quot; hidden link display that is 30px font size for each icon inside the same div the png is in (roughly)&lt;br /&gt;
 - the 30px font size is the proportional icon size: for example the original icons were set to be 76px squared, and the png was set to be 1200px wide with 3123px original width - so the pixel size of the font of a single character like &amp;quot;o&amp;quot; has to be 76px times 1200 over 3123 pixels that is approximately 29.2px - however i rounded it up&lt;br /&gt;
&lt;br /&gt;
each position can be got by using the source code included in the summary of the [[File:Skill_tree_definition.png]] in an application like visual studio code with jebbs&#039; plantuml extension (both are free), and then generate a new svg based on that source, open the svg in browser, open dev mode with f12, and then run javascript that is going to paste every single node the plantumel was containing as &amp;quot;rectangles&amp;quot; onto the user&#039;s clipboard:&lt;br /&gt;
&lt;br /&gt;
example javascript used for the old uml source code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// 1. Get the total width and height of the SVG viewbox&lt;br /&gt;
const svg = document.querySelector(&#039;svg&#039;);&lt;br /&gt;
const totalW = svg.viewBox.baseVal.width || svg.width.baseVal.value;&lt;br /&gt;
const totalH = svg.viewBox.baseVal.height || svg.height.baseVal.value;&lt;br /&gt;
&lt;br /&gt;
// 2. Select and sort skills&lt;br /&gt;
const skills = Array.from(document.querySelectorAll(&#039;g[id^=&amp;quot;elem_&amp;quot;]&#039;));&lt;br /&gt;
skills.sort((a, b) =&amp;gt; a.id.localeCompare(b.id));&lt;br /&gt;
&lt;br /&gt;
// 3. Map to Percentage Rates&lt;br /&gt;
const registryData = skills.map(skill =&amp;gt; {&lt;br /&gt;
    const bbox = skill.getBBox();&lt;br /&gt;
    const alias = skill.id.replace(&#039;elem_&#039;, &#039;&#039;);&lt;br /&gt;
    &lt;br /&gt;
    // Calculate Percentages&lt;br /&gt;
    const centerX = ((bbox.x + (bbox.width / 2)) / totalW) * 100;&lt;br /&gt;
    const centerY = ((bbox.y + (bbox.height / 2)) / totalH) * 100;&lt;br /&gt;
    const sizeX = (bbox.width / totalW) * 100;&lt;br /&gt;
    const sizeY = (bbox.height / totalH) * 100;&lt;br /&gt;
    &lt;br /&gt;
    return `{{#subobject: |Skill_page=${alias} |Skill_tree_coordinate_rates=${centerX.toFixed(2)}; ${centerY.toFixed(2)}; ${sizeX.toFixed(2)}; ${sizeY.toFixed(2)} }}`;&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// 4. Copy directly to your clipboard&lt;br /&gt;
const finalOutput = registryData.join(&#039;\n&#039;);&lt;br /&gt;
copy(finalOutput);&lt;br /&gt;
&lt;br /&gt;
console.log(&amp;quot;=== SUCCESS ===&amp;quot;);&lt;br /&gt;
console.log(`${registryData.length} skills converted to PERCENTAGE rates and copied to clipboard.`);&lt;br /&gt;
console.log(`Based on SVG Size: ${totalW}x${totalH}`);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note that using the old uml source code to write a new source code like that, and then use this javascript on the svg of it will contain the rectangle definitions with lower case letters, and include two default nodes - that will need to be removed by hand after the extraction&lt;br /&gt;
&lt;br /&gt;
i have just uploaded new uml source code that will facilitate to upload smaller png files (wiki friendlyness), and will facilitate position, and size extraction - as a new javascript is able to differentiate between stereotypes of rectangles (in order to not extract the root skill nodes, and then remove those by hand), and the page names may be according to the contents of the nodes (in order to not make wiki writers be not required to rewrite extracted page names themselves among [[Data:Skill_tree_skill_icon_area_registry|these subobjects]])&lt;br /&gt;
&lt;br /&gt;
i just asked google ai how to extract these infos from svg files, however the important stuff to know before extracting: every coordinate, and size must be relative percentage in format from zero to hundred (not zero to one), without percentage marks (those are placed after), and rounded to two digits (for readable code)&lt;br /&gt;
&lt;br /&gt;
it is also worth mentioning that with the new source code template the aliases are no longer feasable to be extracted because some of the aliases may contain different letters compared to the page names for the sake of handling those in uml for example &amp;quot;locks &amp;amp; bolts&amp;quot; is &amp;quot;locks n bolts&amp;quot; in the new uml source - so the content will be needed to be extracted, not the alias as the current javascript example is doing it&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=File:Skill_tree_definition.png&amp;diff=120196</id>
		<title>File:Skill tree definition.png</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=File:Skill_tree_definition.png&amp;diff=120196"/>
		<updated>2025-12-27T10:52:10Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: /* UML Code */ added new uml code both as template and as possible replacement for the current one in case anybody is interested in updateing the skill tree, added description of what is it&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
2025.12.26 skill tree update&lt;br /&gt;
&lt;br /&gt;
==UML Code==&lt;br /&gt;
Uml code is used to generate the look of the skill tree, and the links present on it in the wiki are smw (semantic media wiki) code that are generated based on pixel coordinate rates, and size rates extracted from the diagram using javascript in a browser in dev mode (i just asked google ai how to do it, and it told me).&lt;br /&gt;
&lt;br /&gt;
On this page below there are two uml codes. The first one is the currently used uml code, the second one is a newer one that is not used. Eventhough it is not the currently used code, it is intended to be a better template for an updated version of the skill tree for the case let us say new skills are added&lt;br /&gt;
&lt;br /&gt;
In the currently used code there are numerous mistakes such as:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The image width is not scaled down to a more wiki friendly size&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Basic Mechanics is lacking &amp;quot;s&amp;quot; from its end&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;When a java script is used on the svg form of it to extract everything either based on aliases, or based on tag content both are lowercase which will not match page names on the wiki, therefore the &amp;quot;subobjects&amp;quot; of [[Data:Skill_tree_skill_icon_area_registry]] will have to be rewritten by hand in order to update it even with it being extracted&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;During extraction the default nodes like &amp;quot;available to purchase from game start&amp;quot;, and &amp;quot;the player possesses it by default&amp;quot; is difficult to avoid, such that these two may have to be removed from the &amp;quot;subobjects&amp;quot; by hand after the extraction&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Possibly other mistakes i did not notice, or forgot to say&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
One disadvantage with the new code is that it might contain other yet to be known typoes, and other issues usage time may tell&lt;br /&gt;
&lt;br /&gt;
See more info about uml here:[//en.wikipedia.org/wiki/Unified_Modeling_Language Unified_Modeling_Language]&lt;br /&gt;
&lt;br /&gt;
===Currently used uml source code===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@startuml skill_tree_definition&lt;br /&gt;
&#039;made with plantuml extension in visual studio code&lt;br /&gt;
&lt;br /&gt;
&#039;appearance definitions&lt;br /&gt;
top to bottom direction&lt;br /&gt;
skinparam backgroundColor transparent&lt;br /&gt;
skinparam nodesep 15&lt;br /&gt;
&#039;skinparam ranksep 30&lt;br /&gt;
skinparam padding 0&lt;br /&gt;
skinparam margin 0&lt;br /&gt;
skinparam DefaultFontStyle bold&lt;br /&gt;
skinparam defaultTextAlignment center&lt;br /&gt;
skinparam rectangle {&lt;br /&gt;
    BackgroundColor transparent&lt;br /&gt;
    BorderColor transparent&lt;br /&gt;
    Shadowing false&lt;br /&gt;
}&lt;br /&gt;
skinparam ColorArrowSeparationSpace 5&lt;br /&gt;
skinparam arrowThickness 5&lt;br /&gt;
skinparam ArrowColor rosybrown&lt;br /&gt;
&lt;br /&gt;
&#039;node definitions&lt;br /&gt;
&#039;the icons for the nodes are downloaded from the wiki&lt;br /&gt;
&#039;template: rectangle &amp;quot;&amp;lt;font size=20&amp;gt;&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/.png&amp;gt;&amp;quot; as &lt;br /&gt;
&#039;&amp;quot;../../&amp;quot; stands for &amp;quot;up, up&amp;quot; from folders &amp;quot;diagrams/skills/&amp;quot;&lt;br /&gt;
&#039;use shift + alt down to copy selected row down&lt;br /&gt;
&#039;use alt + up, or down to move selected row into alphabetic position (if you will)&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;the player is starting with these&amp;quot; as by_default&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;available to purchase from the start of the game&amp;quot; as game_start&lt;br /&gt;
&#039;definitions with scaled icons: all the &amp;quot;95px...&amp;quot; ones - these are 76/95 = 0.8&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;charcoal burning&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/95px-Charcoal_Burning.png{scale=0.8}&amp;gt;&amp;quot; as charcoal_burning&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;cheesemaking&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/95px-Cheesemaking.png{scale=0.8}&amp;gt;&amp;quot; as cheesemaking&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;cooking&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/95px-Cooking.png{scale=0.8}&amp;gt;&amp;quot; as cooking&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;firecrafts&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/95px-Firecrafts.png{scale=0.8}&amp;gt;&amp;quot; as firecrafts&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;landscaping&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/95px-Landscaping.png{scale=0.8}&amp;gt;&amp;quot; as landscaping&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;music&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/95px-Music.png{scale=0.8}&amp;gt;&amp;quot; as music&lt;br /&gt;
&#039;unchanged definitions 76*76px, and 75*76px&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;alchemy&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Alchemy.png&amp;gt;&amp;quot; as alchemy&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;ancestral worship&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Ancestral_Worship.png&amp;gt;&amp;quot; as ancestral_worship&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;animal husbandry&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Animal_Husbandry.png&amp;gt;&amp;quot; as animal_husbandry&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;archery&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Archery.png&amp;gt;&amp;quot; as archery&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;baking&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Baking.png&amp;gt;&amp;quot; as baking&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;basic mechanic&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Basic_Mechanics.png&amp;gt;&amp;quot; as basic_mechanic&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;beekeeping&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Beekeeping.png&amp;gt;&amp;quot; as beekeeping&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;boat building&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Boat_Building.png&amp;gt;&amp;quot; as boat_building&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;carpentry&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Carpentry.png&amp;gt;&amp;quot; as carpentry&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;deep artifice&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Deep_Artifice.png&amp;gt;&amp;quot; as deep_artifice&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;druidic rite&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Druidic_Rite.png&amp;gt;&amp;quot; as druidic_rite&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;farming&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Farming.png&amp;gt;&amp;quot; as farming&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;first aid&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/First_Aid.png&amp;gt;&amp;quot; as first_aid&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;fishing&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Fishing.png&amp;gt;&amp;quot; as fishing&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;foraging&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Foraging.png&amp;gt;&amp;quot; as foraging&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;forestry&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Forestry.png&amp;gt;&amp;quot; as forestry&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;gardening&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Gardening.png&amp;gt;&amp;quot; as gardening&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;glass blowing&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Glass_Blowing.png&amp;gt;&amp;quot; as glass_blowing&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;hearth magic&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Hearth_Magic.png&amp;gt;&amp;quot; as hearth_magic&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;hunting&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Hunting.png&amp;gt;&amp;quot; as hunting&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;jewelry&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Jewelry.png&amp;gt;&amp;quot; as jewelry&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;lawspeaking&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Lawspeaking.png&amp;gt;&amp;quot; as lawspeaking&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;locks &amp;amp; bolts&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Locks_&amp;amp;_Bolts.png&amp;gt;&amp;quot; as locks_n_bolts&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;lumberjacking&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Lumberjacking.png&amp;gt;&amp;quot; as lumberjacking&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;metal working&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Metal_Working.png&amp;gt;&amp;quot; as metal_working&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;metallurgy&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Metallurgy.png&amp;gt;&amp;quot; as metallurgy&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;mining&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Mining.png&amp;gt;&amp;quot; as mining&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;murder&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Murder.png&amp;gt;&amp;quot; as murder&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;oral tradition&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Oral_Tradition.png&amp;gt;&amp;quot; as oral_tradition&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;painting&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Painting.png&amp;gt;&amp;quot; as painting&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;plant lore&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Plant_Lore.png&amp;gt;&amp;quot; as plant_lore&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;pottery&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Pottery.png&amp;gt;&amp;quot; as pottery&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;primitive tools&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Primitive_Tools.png&amp;gt;&amp;quot; as primitive_tools&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;rage&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Rage.png&amp;gt;&amp;quot; as rage&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;rope twining&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Rope_Twining.png&amp;gt;&amp;quot; as rope_twining&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;sausage making&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Sausage_Making.png&amp;gt;&amp;quot; as sausage_making&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;sewing&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Sewing.png&amp;gt;&amp;quot; as sewing&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;siegecraft&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Siegecraft.png&amp;gt;&amp;quot; as siegecraft&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;silkfarming&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Silkfarming.png&amp;gt;&amp;quot; as silkfarming&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;steelmaking&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Steelmaking.png&amp;gt;&amp;quot; as steelmaking&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;stone working&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Stone_Working.png&amp;gt;&amp;quot; as stone_working&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;swimming&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Swimming.png&amp;gt;&amp;quot; as swimming&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;tanning&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Tanning.png&amp;gt;&amp;quot; as tanning&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;the will to power&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/The_Will_to_Power.png&amp;gt;&amp;quot; as the_will_to_power&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;theft&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Theft.png&amp;gt;&amp;quot; as theft&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;trade&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Trade.png&amp;gt;&amp;quot; as trade&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;trespassing&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Trespassing.png&amp;gt;&amp;quot; as trespassing&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;tunneling&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Tunneling.png&amp;gt;&amp;quot; as tunneling&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;vandalism&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Vandalism.png&amp;gt;&amp;quot; as vandalism&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;wheelwrighting&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Wheelwrighting.png&amp;gt;&amp;quot; as wheelwrighting&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;wilderness survival&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Wilderness_Survival.png&amp;gt;&amp;quot; as wilderness_survival&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;winemaking&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Winemaking.png&amp;gt;&amp;quot; as winemaking&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;woodsmanship&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Woodsmanship.png&amp;gt;&amp;quot; as woodsmanship&lt;br /&gt;
rectangle &amp;quot;&amp;lt;font size=20&amp;gt;yeomanry&amp;lt;/font&amp;gt;\n&amp;lt;img:../../pictures/skills/Yeomanry.png&amp;gt;&amp;quot; as yeomanry&lt;br /&gt;
&lt;br /&gt;
&#039;connection definitions&lt;br /&gt;
alchemy &amp;lt;-[#MediumPurple]- hearth_magic&lt;br /&gt;
alchemy &amp;lt;-[#LightGreen]- plant_lore&lt;br /&gt;
alchemy &amp;lt;-[#OrangeRed]- glass_blowing&lt;br /&gt;
ancestral_worship &amp;lt;-[#MediumPurple]- hearth_magic&lt;br /&gt;
animal_husbandry &amp;lt;-- hunting&lt;br /&gt;
archery &amp;lt;-- hunting&lt;br /&gt;
baking &amp;lt;-[#OrangeRed]- pottery&lt;br /&gt;
baking &amp;lt;-[#OrangeRed]- cooking&lt;br /&gt;
baking &amp;lt;-[#LightGreen]- farming&lt;br /&gt;
basic_mechanic &amp;lt;-[#DarkBlue]- rope_twining&lt;br /&gt;
basic_mechanic &amp;lt;-[#BurlyWood;#DarkBlue]- wheelwrighting&lt;br /&gt;
basic_mechanic &amp;lt;-[#DarkBlue]- metal_working&lt;br /&gt;
beekeeping &amp;lt;-[#LightGreen]- farming&lt;br /&gt;
boat_building &amp;lt;-[#SteelBlue]- swimming&lt;br /&gt;
boat_building &amp;lt;-[#BurlyWood]- carpentry&lt;br /&gt;
carpentry &amp;lt;-[#BurlyWood;#DarkBlue]- lumberjacking&lt;br /&gt;
charcoal_burning &amp;lt;-[#OrangeRed]- pottery&lt;br /&gt;
charcoal_burning &amp;lt;-[#BurlyWood]- lumberjacking&lt;br /&gt;
cheesemaking &amp;lt;-- animal_husbandry&lt;br /&gt;
cheesemaking &amp;lt;-[#LightGreen]- farming&lt;br /&gt;
cooking &amp;lt;-[#OrangeRed]- firecrafts&lt;br /&gt;
deep_artifice &amp;lt;-[#DarkBlue]- tunneling&lt;br /&gt;
deep_artifice &amp;lt;-[#LightGreen;#DarkBlue]- farming&lt;br /&gt;
deep_artifice &amp;lt;-[#BurlyWood;#DarkBlue]- basic_mechanic&lt;br /&gt;
deep_artifice &amp;lt;-[#DarkBlue]- metallurgy&lt;br /&gt;
druidic_rite &amp;lt;-[#MediumPurple;#DarkGreen]- hearth_magic&lt;br /&gt;
druidic_rite &amp;lt;-[#LightGreen;#DarkGreen]- forestry&lt;br /&gt;
farming &amp;lt;-[#DarkGreen;#DarkBlue]- foraging&lt;br /&gt;
firecrafts &amp;lt;-[#OrangeRed]- game_start&lt;br /&gt;
first_aid &amp;lt;-[#LightGreen]- plant_lore&lt;br /&gt;
first_aid &amp;lt;-[#MediumPurple]- hearth_magic&lt;br /&gt;
fishing &amp;lt;-[#SteelBlue]- foraging&lt;br /&gt;
foraging &amp;lt;-[#DarkGreen;#DarkBlue]- game_start&lt;br /&gt;
forestry &amp;lt;-[#LightGreen;#DarkGreen]- gardening&lt;br /&gt;
forestry &amp;lt;-[#LightGreen;#DarkGreen]- woodsmanship&lt;br /&gt;
gardening &amp;lt;-[#LightGreen;#DarkGreen]- farming&lt;br /&gt;
glass_blowing &amp;lt;-[#OrangeRed]- pottery&lt;br /&gt;
hearth_magic &amp;lt;-[#MediumPurple;#DarkGreen]- the_will_to_power&lt;br /&gt;
hunting &amp;lt;-[#DarkBlue]- foraging&lt;br /&gt;
jewelry &amp;lt;-- metal_working&lt;br /&gt;
landscaping &amp;lt;-[#BurlyWood]- lumberjacking&lt;br /&gt;
lawspeaking &amp;lt;-[#LightGreen;#GoldenRod]- yeomanry&lt;br /&gt;
lawspeaking &amp;lt;-[#MediumPurple]- hearth_magic&lt;br /&gt;
locks_n_bolts &amp;lt;-[#LightGreen;#GoldenRod]- yeomanry&lt;br /&gt;
locks_n_bolts &amp;lt;-[#BurlyWood]- carpentry&lt;br /&gt;
lumberjacking &amp;lt;-[#DarkGreen;#DarkBlue]- foraging&lt;br /&gt;
metal_working &amp;lt;-[#DarkBlue]- stone_working&lt;br /&gt;
metallurgy &amp;lt;-[#DarkBlue]- steelmaking&lt;br /&gt;
mining &amp;lt;-[#DarkBlue]- stone_working&lt;br /&gt;
murder &amp;lt;-[#DarkRed]- rage&lt;br /&gt;
music &amp;lt;-[#MediumPurple]- hearth_magic&lt;br /&gt;
oral_tradition .. by_default&lt;br /&gt;
painting &amp;lt;-[#MediumPurple]- hearth_magic&lt;br /&gt;
plant_lore &amp;lt;-[#LightGreen;#DarkGreen]- farming&lt;br /&gt;
pottery &amp;lt;-- foraging&lt;br /&gt;
pottery &amp;lt;-[#OrangeRed]- firecrafts&lt;br /&gt;
primitive_tools .. by_default&lt;br /&gt;
rage &amp;lt;-[#DarkRed]- the_will_to_power&lt;br /&gt;
rope_twining &amp;lt;-[#DarkBlue]- tanning&lt;br /&gt;
sausage_making &amp;lt;-[#LightGreen]- farming&lt;br /&gt;
sausage_making &amp;lt;-- animal_husbandry&lt;br /&gt;
sewing &amp;lt;-[#LightGreen]- farming&lt;br /&gt;
siegecraft &amp;lt;-[#DarkRed]- vandalism&lt;br /&gt;
silkfarming &amp;lt;-[#LightGreen]- beekeeping&lt;br /&gt;
steelmaking &amp;lt;-[#DarkBlue]- metal_working&lt;br /&gt;
stone_working &amp;lt;-[#DarkBlue]- foraging&lt;br /&gt;
swimming &amp;lt;-[#SteelBlue]- fishing&lt;br /&gt;
tanning &amp;lt;-[#DarkBlue]- hunting&lt;br /&gt;
the_will_to_power &amp;lt;-[#DarkRed;#DarkGreen]- game_start&lt;br /&gt;
theft &amp;lt;-[#DarkRed]- trespassing&lt;br /&gt;
trade &amp;lt;-[#LightGreen;#GoldenRod]- yeomanry&lt;br /&gt;
trespassing &amp;lt;-[#DarkRed]- the_will_to_power&lt;br /&gt;
tunneling &amp;lt;-[#DarkBlue]- mining&lt;br /&gt;
vandalism &amp;lt;-[#DarkRed]- theft&lt;br /&gt;
vandalism &amp;lt;-[#DarkRed]- rage&lt;br /&gt;
wheelwrighting &amp;lt;-[#BurlyWood;#DarkBlue]- carpentry&lt;br /&gt;
wilderness_survival .. by_default&lt;br /&gt;
winemaking &amp;lt;-[#LightGreen]- farming&lt;br /&gt;
woodsmanship &amp;lt;-[#LightGreen;#DarkGreen]- plant_lore&lt;br /&gt;
woodsmanship &amp;lt;-[#BurlyWood;#DarkGreen]- lumberjacking&lt;br /&gt;
yeomanry &amp;lt;-[#GoldenRod]- the_will_to_power&lt;br /&gt;
yeomanry &amp;lt;-[#LightGreen]- farming&lt;br /&gt;
&lt;br /&gt;
&#039;connection untangling definitions&lt;br /&gt;
primitive_tools -[hidden]right- wilderness_survival&lt;br /&gt;
the_will_to_power -[hidden]right- firecrafts&lt;br /&gt;
sewing -[hidden]left- yeomanry&lt;br /&gt;
painting -[hidden]left- trade&lt;br /&gt;
ancestral_worship -[hidden]left- trade&lt;br /&gt;
lawspeaking -[hidden]left- trade&lt;br /&gt;
music -[hidden]left- trade&lt;br /&gt;
lawspeaking -[hidden]- yeomanry&lt;br /&gt;
game_start -[hidden]right- by_default&lt;br /&gt;
@enduml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===New uml source code template===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@startuml skill_tree_definition&lt;br /&gt;
&#039;made with plantuml extension (by jebbs) in visual studio code&lt;br /&gt;
scale 1600 width&lt;br /&gt;
&lt;br /&gt;
&#039;appearance definitions&lt;br /&gt;
hide stereotype&lt;br /&gt;
top to bottom direction&lt;br /&gt;
skinparam backgroundcolor transparent&lt;br /&gt;
&#039;this one is setting the spacing between nodes horizontally&lt;br /&gt;
skinparam nodesep 15&lt;br /&gt;
&#039;this one would be setting the spacing between nodes vertically&lt;br /&gt;
&#039;skinparam ranksep 30&lt;br /&gt;
&lt;br /&gt;
skinparam defaulttextalignment center&lt;br /&gt;
skinparam defaultfontsize 15&lt;br /&gt;
&lt;br /&gt;
skinparam colorarrowseparationspace 5&lt;br /&gt;
skinparam arrowthickness 5&lt;br /&gt;
skinparam arrowcolor rosybrown&lt;br /&gt;
&lt;br /&gt;
skinparam rectangle {&lt;br /&gt;
    backgroundcolor transparent&lt;br /&gt;
    bordercolor transparent&lt;br /&gt;
    shadowing false&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&#039;skill node template definitions for each stereotype&lt;br /&gt;
!procedure $skill_root_constructor($local_variable_root_name, $rich_root_content)&lt;br /&gt;
    rectangle &amp;quot;$rich_root_content&amp;quot; as $local_variable_root_name &amp;lt;&amp;lt;skill_root_rectangle&amp;gt;&amp;gt;&lt;br /&gt;
!endprocedure&lt;br /&gt;
&lt;br /&gt;
&#039;skill name, and rich skill name are different for example to facilitate names such as &amp;quot;locks &amp;amp; bolts&amp;quot; to &amp;quot;locks n bolts&amp;quot;&lt;br /&gt;
!procedure $skill_node_constructor($local_variable_skill_name, $rich_skill_name, $skill_icon_file_name, $skill_icon_scale)&lt;br /&gt;
    !$skill_icon_image_tag = &amp;quot;&amp;lt;img:../../pictures/skills/&amp;quot; + $skill_icon_file_name + &amp;quot;.png{scale=&amp;quot; + $skill_icon_scale + &amp;quot;}&amp;gt;&amp;quot;&lt;br /&gt;
    !$rectangle_content = $rich_skill_name + &amp;quot;\n&amp;quot; + $skill_icon_image_tag&lt;br /&gt;
    rectangle &amp;quot;$rectangle_content&amp;quot; as $local_variable_skill_name &amp;lt;&amp;lt;skill_node_rectangle&amp;gt;&amp;gt;&lt;br /&gt;
!endprocedure&lt;br /&gt;
&lt;br /&gt;
&#039;node definitions&lt;br /&gt;
&#039;use shift + alt down to copy selected row down&lt;br /&gt;
&#039;use alt + up, or down to move selected row into alphabetic position (if you will)&lt;br /&gt;
$skill_root_constructor(&amp;quot;by_default&amp;quot;, &amp;quot;the player is starting with these&amp;quot;)&lt;br /&gt;
$skill_root_constructor(&amp;quot;game_start&amp;quot;, &amp;quot;available to purchase from the start of the game&amp;quot;)&lt;br /&gt;
&#039;definitions with scaled icons: all the &amp;quot;95px...&amp;quot; ones - these are 76/95 = 0.8&lt;br /&gt;
$skill_node_constructor(&amp;quot;Charcoal_Burning&amp;quot;, &amp;quot;Charcoal Burning&amp;quot;, &amp;quot;95px-Charcoal_Burning&amp;quot;, &amp;quot;0.8&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Cheesemaking&amp;quot;, &amp;quot;Cheesemaking&amp;quot;, &amp;quot;95px-Cheesemaking&amp;quot;, &amp;quot;0.8&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Cooking&amp;quot;, &amp;quot;Cooking&amp;quot;, &amp;quot;95px-Cooking&amp;quot;, &amp;quot;0.8&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Firecrafts&amp;quot;, &amp;quot;Firecrafts&amp;quot;, &amp;quot;95px-Firecrafts&amp;quot;, &amp;quot;0.8&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Landscaping&amp;quot;, &amp;quot;Landscaping&amp;quot;, &amp;quot;95px-Landscaping&amp;quot;, &amp;quot;0.8&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Music&amp;quot;, &amp;quot;Music&amp;quot;, &amp;quot;95px-Music&amp;quot;, &amp;quot;0.8&amp;quot;)&lt;br /&gt;
&#039;unchanged definitions 76*76px, and 75*76px&lt;br /&gt;
$skill_node_constructor(&amp;quot;Alchemy&amp;quot;, &amp;quot;Alchemy&amp;quot;, &amp;quot;Alchemy&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Ancestral_Worship&amp;quot;, &amp;quot;Ancestral Worship&amp;quot;, &amp;quot;Ancestral_Worship&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Animal_Husbandry&amp;quot;, &amp;quot;Animal Husbandry&amp;quot;, &amp;quot;Animal_Husbandry&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Archery&amp;quot;, &amp;quot;Archery&amp;quot;, &amp;quot;Archery&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Baking&amp;quot;, &amp;quot;Baking&amp;quot;, &amp;quot;Baking&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Basic_Mechanics&amp;quot;, &amp;quot;Basic Mechanics&amp;quot;, &amp;quot;Basic_Mechanics&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Beekeeping&amp;quot;, &amp;quot;Beekeeping&amp;quot;, &amp;quot;Beekeeping&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Boat_Building&amp;quot;, &amp;quot;Boat Building&amp;quot;, &amp;quot;Boat_Building&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Carpentry&amp;quot;, &amp;quot;Carpentry&amp;quot;, &amp;quot;Carpentry&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Deep_Artifice&amp;quot;, &amp;quot;Deep Artifice&amp;quot;, &amp;quot;Deep_Artifice&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Druidic_Rite&amp;quot;, &amp;quot;Druidic Rite&amp;quot;, &amp;quot;Druidic_Rite&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Farming&amp;quot;, &amp;quot;Farming&amp;quot;, &amp;quot;Farming&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;First_Aid&amp;quot;, &amp;quot;First Aid&amp;quot;, &amp;quot;First_Aid&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Fishing&amp;quot;, &amp;quot;Fishing&amp;quot;, &amp;quot;Fishing&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Foraging&amp;quot;, &amp;quot;Foraging&amp;quot;, &amp;quot;Foraging&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Forestry&amp;quot;, &amp;quot;Forestry&amp;quot;, &amp;quot;Forestry&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Gardening&amp;quot;, &amp;quot;Gardening&amp;quot;, &amp;quot;Gardening&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Glass_Blowing&amp;quot;, &amp;quot;Glass Blowing&amp;quot;, &amp;quot;Glass_Blowing&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Hearth_Magic&amp;quot;, &amp;quot;Hearth Magic&amp;quot;, &amp;quot;Hearth_Magic&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Hunting&amp;quot;, &amp;quot;Hunting&amp;quot;, &amp;quot;Hunting&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Jewelry&amp;quot;, &amp;quot;Jewelry&amp;quot;, &amp;quot;Jewelry&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Lawspeaking&amp;quot;, &amp;quot;Lawspeaking&amp;quot;, &amp;quot;Lawspeaking&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Locks_n_Bolts&amp;quot;, &amp;quot;Locks &amp;amp; Bolts&amp;quot;, &amp;quot;Locks_&amp;amp;_Bolts&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Lumberjacking&amp;quot;, &amp;quot;Lumberjacking&amp;quot;, &amp;quot;Lumberjacking&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Metal_Working&amp;quot;, &amp;quot;Metal Working&amp;quot;, &amp;quot;Metal_Working&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Metallurgy&amp;quot;, &amp;quot;Metallurgy&amp;quot;, &amp;quot;Metallurgy&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Mining&amp;quot;, &amp;quot;Mining&amp;quot;, &amp;quot;Mining&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Murder&amp;quot;, &amp;quot;Murder&amp;quot;, &amp;quot;Murder&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Oral_Tradition&amp;quot;, &amp;quot;Oral Tradition&amp;quot;, &amp;quot;Oral_Tradition&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Painting&amp;quot;, &amp;quot;Painting&amp;quot;, &amp;quot;Painting&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Plant_Lore&amp;quot;, &amp;quot;Plant Lore&amp;quot;, &amp;quot;Plant_Lore&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Pottery&amp;quot;, &amp;quot;Pottery&amp;quot;, &amp;quot;Pottery&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Primitive_Tools&amp;quot;, &amp;quot;Primitive Tools&amp;quot;, &amp;quot;Primitive_Tools&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Rage&amp;quot;, &amp;quot;Rage&amp;quot;, &amp;quot;Rage&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Rope_Twining&amp;quot;, &amp;quot;Rope Twining&amp;quot;, &amp;quot;Rope_Twining&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Sausage_Making&amp;quot;, &amp;quot;Sausage Making&amp;quot;, &amp;quot;Sausage_Making&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Sewing&amp;quot;, &amp;quot;Sewing&amp;quot;, &amp;quot;Sewing&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Siegecraft&amp;quot;, &amp;quot;Siegecraft&amp;quot;, &amp;quot;Siegecraft&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Silkfarming&amp;quot;, &amp;quot;Silkfarming&amp;quot;, &amp;quot;Silkfarming&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Steelmaking&amp;quot;, &amp;quot;Steelmaking&amp;quot;, &amp;quot;Steelmaking&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Stone_Working&amp;quot;, &amp;quot;Stone Working&amp;quot;, &amp;quot;Stone_Working&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Swimming&amp;quot;, &amp;quot;Swimming&amp;quot;, &amp;quot;Swimming&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Tanning&amp;quot;, &amp;quot;Tanning&amp;quot;, &amp;quot;Tanning&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;The_Will_to_Power&amp;quot;, &amp;quot;The Will to Power&amp;quot;, &amp;quot;The_Will_to_Power&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Theft&amp;quot;, &amp;quot;Theft&amp;quot;, &amp;quot;Theft&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Trade&amp;quot;, &amp;quot;Trade&amp;quot;, &amp;quot;Trade&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Trespassing&amp;quot;, &amp;quot;Trespassing&amp;quot;, &amp;quot;Trespassing&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Tunneling&amp;quot;, &amp;quot;Tunneling&amp;quot;, &amp;quot;Tunneling&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Vandalism&amp;quot;, &amp;quot;Vandalism&amp;quot;, &amp;quot;Vandalism&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Wheelwrighting&amp;quot;, &amp;quot;Wheelwrighting&amp;quot;, &amp;quot;Wheelwrighting&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Wilderness_Survival&amp;quot;, &amp;quot;Wilderness Survival&amp;quot;, &amp;quot;Wilderness_Survival&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Winemaking&amp;quot;, &amp;quot;Winemaking&amp;quot;, &amp;quot;Winemaking&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Woodsmanship&amp;quot;, &amp;quot;Woodsmanship&amp;quot;, &amp;quot;Woodsmanship&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
$skill_node_constructor(&amp;quot;Yeomanry&amp;quot;, &amp;quot;Yeomanry&amp;quot;, &amp;quot;Yeomanry&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&#039;connection definitions&lt;br /&gt;
&amp;quot;Alchemy&amp;quot; &amp;lt;-[#MediumPurple]- &amp;quot;Hearth_Magic&amp;quot;&lt;br /&gt;
&amp;quot;Alchemy&amp;quot; &amp;lt;-[#LightGreen]- &amp;quot;Plant_Lore&amp;quot;&lt;br /&gt;
&amp;quot;Alchemy&amp;quot; &amp;lt;-[#OrangeRed]- &amp;quot;Glass_Blowing&amp;quot;&lt;br /&gt;
&amp;quot;Ancestral_Worship&amp;quot; &amp;lt;-[#MediumPurple]- &amp;quot;Hearth_Magic&amp;quot;&lt;br /&gt;
&amp;quot;Animal_Husbandry&amp;quot; &amp;lt;-- &amp;quot;Hunting&amp;quot;&lt;br /&gt;
&amp;quot;Archery&amp;quot; &amp;lt;-- &amp;quot;Hunting&amp;quot;&lt;br /&gt;
&amp;quot;Baking&amp;quot; &amp;lt;-[#OrangeRed]- &amp;quot;Pottery&amp;quot;&lt;br /&gt;
&amp;quot;Baking&amp;quot; &amp;lt;-[#OrangeRed]- &amp;quot;Cooking&amp;quot;&lt;br /&gt;
&amp;quot;Baking&amp;quot; &amp;lt;-[#LightGreen]- &amp;quot;Farming&amp;quot;&lt;br /&gt;
&amp;quot;Basic_Mechanics&amp;quot; &amp;lt;-[#DarkBlue]- &amp;quot;Rope_Twining&amp;quot;&lt;br /&gt;
&amp;quot;Basic_Mechanics&amp;quot; &amp;lt;-[#BurlyWood;#DarkBlue]- &amp;quot;Wheelwrighting&amp;quot;&lt;br /&gt;
&amp;quot;Basic_Mechanics&amp;quot; &amp;lt;-[#DarkBlue]- &amp;quot;Metal_Working&amp;quot;&lt;br /&gt;
&amp;quot;Beekeeping&amp;quot; &amp;lt;-[#LightGreen]- &amp;quot;Farming&amp;quot;&lt;br /&gt;
&amp;quot;Boat_Building&amp;quot; &amp;lt;-[#SteelBlue]- &amp;quot;Swimming&amp;quot;&lt;br /&gt;
&amp;quot;Boat_Building&amp;quot; &amp;lt;-[#BurlyWood]- &amp;quot;Carpentry&amp;quot;&lt;br /&gt;
&amp;quot;Carpentry&amp;quot; &amp;lt;-[#BurlyWood;#DarkBlue]- &amp;quot;Lumberjacking&amp;quot;&lt;br /&gt;
&amp;quot;Charcoal_Burning&amp;quot; &amp;lt;-[#OrangeRed]- &amp;quot;Pottery&amp;quot;&lt;br /&gt;
&amp;quot;Charcoal_Burning&amp;quot; &amp;lt;-[#BurlyWood]- &amp;quot;Lumberjacking&amp;quot;&lt;br /&gt;
&amp;quot;Cheesemaking&amp;quot; &amp;lt;-- &amp;quot;Animal_Husbandry&amp;quot;&lt;br /&gt;
&amp;quot;Cheesemaking&amp;quot; &amp;lt;-[#LightGreen]- &amp;quot;Farming&amp;quot;&lt;br /&gt;
&amp;quot;Cooking&amp;quot; &amp;lt;-[#OrangeRed]- &amp;quot;Firecrafts&amp;quot;&lt;br /&gt;
&amp;quot;Deep_Artifice&amp;quot; &amp;lt;-[#DarkBlue]- &amp;quot;Tunneling&amp;quot;&lt;br /&gt;
&amp;quot;Deep_Artifice&amp;quot; &amp;lt;-[#LightGreen;#DarkBlue]- &amp;quot;Farming&amp;quot;&lt;br /&gt;
&amp;quot;Deep_Artifice&amp;quot; &amp;lt;-[#BurlyWood;#DarkBlue]- &amp;quot;Basic_Mechanics&amp;quot;&lt;br /&gt;
&amp;quot;Deep_Artifice&amp;quot; &amp;lt;-[#DarkBlue]- &amp;quot;Metallurgy&amp;quot;&lt;br /&gt;
&amp;quot;Druidic_Rite&amp;quot; &amp;lt;-[#MediumPurple;#DarkGreen]- &amp;quot;Hearth_Magic&amp;quot;&lt;br /&gt;
&amp;quot;Druidic_Rite&amp;quot; &amp;lt;-[#LightGreen;#DarkGreen]- &amp;quot;Forestry&amp;quot;&lt;br /&gt;
&amp;quot;Farming&amp;quot; &amp;lt;-[#DarkGreen;#DarkBlue]- &amp;quot;Foraging&amp;quot;&lt;br /&gt;
&amp;quot;Firecrafts&amp;quot; &amp;lt;-[#OrangeRed]- &amp;quot;game_start&amp;quot;&lt;br /&gt;
&amp;quot;First_Aid&amp;quot; &amp;lt;-[#LightGreen]- &amp;quot;Plant_Lore&amp;quot;&lt;br /&gt;
&amp;quot;First_Aid&amp;quot; &amp;lt;-[#MediumPurple]- &amp;quot;Hearth_Magic&amp;quot;&lt;br /&gt;
&amp;quot;Fishing&amp;quot; &amp;lt;-[#SteelBlue]- &amp;quot;Foraging&amp;quot;&lt;br /&gt;
&amp;quot;Foraging&amp;quot; &amp;lt;-[#DarkGreen;#DarkBlue]- &amp;quot;game_start&amp;quot;&lt;br /&gt;
&amp;quot;Forestry&amp;quot; &amp;lt;-[#LightGreen;#DarkGreen]- &amp;quot;Gardening&amp;quot;&lt;br /&gt;
&amp;quot;Forestry&amp;quot; &amp;lt;-[#LightGreen;#DarkGreen]- &amp;quot;Woodsmanship&amp;quot;&lt;br /&gt;
&amp;quot;Gardening&amp;quot; &amp;lt;-[#LightGreen;#DarkGreen]- &amp;quot;Farming&amp;quot;&lt;br /&gt;
&amp;quot;Glass_Blowing&amp;quot; &amp;lt;-[#OrangeRed]- &amp;quot;Pottery&amp;quot;&lt;br /&gt;
&amp;quot;Hearth_Magic&amp;quot; &amp;lt;-[#MediumPurple;#DarkGreen]- &amp;quot;The_Will_to_Power&amp;quot;&lt;br /&gt;
&amp;quot;Hunting&amp;quot; &amp;lt;-[#DarkBlue]- &amp;quot;Foraging&amp;quot;&lt;br /&gt;
&amp;quot;Jewelry&amp;quot; &amp;lt;-- &amp;quot;Metal_Working&amp;quot;&lt;br /&gt;
&amp;quot;Landscaping&amp;quot; &amp;lt;-[#BurlyWood]- &amp;quot;Lumberjacking&amp;quot;&lt;br /&gt;
&amp;quot;Lawspeaking&amp;quot; &amp;lt;-[#LightGreen;#GoldenRod]- &amp;quot;Yeomanry&amp;quot;&lt;br /&gt;
&amp;quot;Lawspeaking&amp;quot; &amp;lt;-[#MediumPurple]- &amp;quot;Hearth_Magic&amp;quot;&lt;br /&gt;
&amp;quot;Locks_n_Bolts&amp;quot; &amp;lt;-[#LightGreen;#GoldenRod]- &amp;quot;Yeomanry&amp;quot;&lt;br /&gt;
&amp;quot;Locks_n_Bolts&amp;quot; &amp;lt;-[#BurlyWood]- &amp;quot;Carpentry&amp;quot;&lt;br /&gt;
&amp;quot;Lumberjacking&amp;quot; &amp;lt;-[#DarkGreen;#DarkBlue]- &amp;quot;Foraging&amp;quot;&lt;br /&gt;
&amp;quot;Metal_Working&amp;quot; &amp;lt;-[#DarkBlue]- &amp;quot;Stone_Working&amp;quot;&lt;br /&gt;
&amp;quot;Metallurgy&amp;quot; &amp;lt;-[#DarkBlue]- &amp;quot;Steelmaking&amp;quot;&lt;br /&gt;
&amp;quot;Mining&amp;quot; &amp;lt;-[#DarkBlue]- &amp;quot;Stone_Working&amp;quot;&lt;br /&gt;
&amp;quot;Murder&amp;quot; &amp;lt;-[#DarkRed]- &amp;quot;Rage&amp;quot;&lt;br /&gt;
&amp;quot;Music&amp;quot; &amp;lt;-[#MediumPurple]- &amp;quot;Hearth_Magic&amp;quot;&lt;br /&gt;
&amp;quot;Oral_Tradition&amp;quot; .. &amp;quot;by_default&amp;quot;&lt;br /&gt;
&amp;quot;Painting&amp;quot; &amp;lt;-[#MediumPurple]- &amp;quot;Hearth_Magic&amp;quot;&lt;br /&gt;
&amp;quot;Plant_Lore&amp;quot; &amp;lt;-[#LightGreen;#DarkGreen]- &amp;quot;Farming&amp;quot;&lt;br /&gt;
&amp;quot;Pottery&amp;quot; &amp;lt;-- &amp;quot;Foraging&amp;quot;&lt;br /&gt;
&amp;quot;Pottery&amp;quot; &amp;lt;-[#OrangeRed]- &amp;quot;Firecrafts&amp;quot;&lt;br /&gt;
&amp;quot;Primitive_Tools&amp;quot; .. &amp;quot;by_default&amp;quot;&lt;br /&gt;
&amp;quot;Rage&amp;quot; &amp;lt;-[#DarkRed]- &amp;quot;The_Will_to_Power&amp;quot;&lt;br /&gt;
&amp;quot;Rope_Twining&amp;quot; &amp;lt;-[#DarkBlue]- &amp;quot;Tanning&amp;quot;&lt;br /&gt;
&amp;quot;Sausage_Making&amp;quot; &amp;lt;-[#LightGreen]- &amp;quot;Farming&amp;quot;&lt;br /&gt;
&amp;quot;Sausage_Making&amp;quot; &amp;lt;-- &amp;quot;Animal_Husbandry&amp;quot;&lt;br /&gt;
&amp;quot;Sewing&amp;quot; &amp;lt;-[#LightGreen]- &amp;quot;Farming&amp;quot;&lt;br /&gt;
&amp;quot;Siegecraft&amp;quot; &amp;lt;-[#DarkRed]- &amp;quot;Vandalism&amp;quot;&lt;br /&gt;
&amp;quot;Silkfarming&amp;quot; &amp;lt;-[#LightGreen]- &amp;quot;Beekeeping&amp;quot;&lt;br /&gt;
&amp;quot;Steelmaking&amp;quot; &amp;lt;-[#DarkBlue]- &amp;quot;Metal_Working&amp;quot;&lt;br /&gt;
&amp;quot;Stone_Working&amp;quot; &amp;lt;-[#DarkBlue]- &amp;quot;Foraging&amp;quot;&lt;br /&gt;
&amp;quot;Swimming&amp;quot; &amp;lt;-[#SteelBlue]- &amp;quot;Fishing&amp;quot;&lt;br /&gt;
&amp;quot;Tanning&amp;quot; &amp;lt;-[#DarkBlue]- &amp;quot;Hunting&amp;quot;&lt;br /&gt;
&amp;quot;The_Will_to_Power&amp;quot; &amp;lt;-[#DarkRed;#DarkGreen]- &amp;quot;game_start&amp;quot;&lt;br /&gt;
&amp;quot;Theft&amp;quot; &amp;lt;-[#DarkRed]- &amp;quot;Trespassing&amp;quot;&lt;br /&gt;
&amp;quot;Trade&amp;quot; &amp;lt;-[#LightGreen;#GoldenRod]- &amp;quot;Yeomanry&amp;quot;&lt;br /&gt;
&amp;quot;Trespassing&amp;quot; &amp;lt;-[#DarkRed]- &amp;quot;The_Will_to_Power&amp;quot;&lt;br /&gt;
&amp;quot;Tunneling&amp;quot; &amp;lt;-[#DarkBlue]- &amp;quot;Mining&amp;quot;&lt;br /&gt;
&amp;quot;Vandalism&amp;quot; &amp;lt;-[#DarkRed]- &amp;quot;Theft&amp;quot;&lt;br /&gt;
&amp;quot;Vandalism&amp;quot; &amp;lt;-[#DarkRed]- &amp;quot;Rage&amp;quot;&lt;br /&gt;
&amp;quot;Wheelwrighting&amp;quot; &amp;lt;-[#BurlyWood;#DarkBlue]- &amp;quot;Carpentry&amp;quot;&lt;br /&gt;
&amp;quot;Wilderness_Survival&amp;quot; .. &amp;quot;by_default&amp;quot;&lt;br /&gt;
&amp;quot;Winemaking&amp;quot; &amp;lt;-[#LightGreen]- &amp;quot;Farming&amp;quot;&lt;br /&gt;
&amp;quot;Woodsmanship&amp;quot; &amp;lt;-[#LightGreen;#DarkGreen]- &amp;quot;Plant_Lore&amp;quot;&lt;br /&gt;
&amp;quot;Woodsmanship&amp;quot; &amp;lt;-[#BurlyWood;#DarkGreen]- &amp;quot;Lumberjacking&amp;quot;&lt;br /&gt;
&amp;quot;Yeomanry&amp;quot; &amp;lt;-[#GoldenRod]- &amp;quot;The_Will_to_Power&amp;quot;&lt;br /&gt;
&amp;quot;Yeomanry&amp;quot; &amp;lt;-[#LightGreen]- &amp;quot;Farming&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;connection untangling definitions&lt;br /&gt;
&amp;quot;Primitive_Tools&amp;quot; -[hidden]right- &amp;quot;Wilderness_Survival&amp;quot;&lt;br /&gt;
&amp;quot;The_Will_to_Power&amp;quot; -[hidden]right- &amp;quot;Firecrafts&amp;quot;&lt;br /&gt;
&amp;quot;Sewing&amp;quot; -[hidden]left- &amp;quot;Yeomanry&amp;quot;&lt;br /&gt;
&amp;quot;Painting&amp;quot; -[hidden]left- &amp;quot;Trade&amp;quot;&lt;br /&gt;
&amp;quot;Ancestral_Worship&amp;quot; -[hidden]left- &amp;quot;Trade&amp;quot;&lt;br /&gt;
&amp;quot;Lawspeaking&amp;quot; -[hidden]left- &amp;quot;Trade&amp;quot;&lt;br /&gt;
&amp;quot;Music&amp;quot; -[hidden]left- &amp;quot;Trade&amp;quot;&lt;br /&gt;
&amp;quot;Lawspeaking&amp;quot; -[hidden]- &amp;quot;Yeomanry&amp;quot;&lt;br /&gt;
&amp;quot;game_start&amp;quot; -[hidden]right- &amp;quot;by_default&amp;quot;&lt;br /&gt;
@enduml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Template:Skill_tree_skill_marker&amp;diff=120190</id>
		<title>Template:Skill tree skill marker</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Template:Skill_tree_skill_marker&amp;diff=120190"/>
		<updated>2025-12-27T02:19:57Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: changed link character from g to o (i believe this one is even more centered), adding tittle to span (maybe it will override the link&amp;#039;s tittle), into tittles the cost description is now with the page name instead of &amp;quot;it&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;div&lt;br /&gt;
style=&amp;quot;&lt;br /&gt;
 position: absolute&lt;br /&gt;
 ; display: flex&lt;br /&gt;
 ; justify-content: center&lt;br /&gt;
 ; align-items: center&lt;br /&gt;
 ; left: {{{2}}}%&lt;br /&gt;
 ; top: {{{3}}}%&lt;br /&gt;
 ; width: {{{4}}}%&lt;br /&gt;
 ; height: {{{5}}}%&lt;br /&gt;
 ; transform: translate(-50%, -50%)&lt;br /&gt;
 ; z-index: 10&lt;br /&gt;
 ; filter: alpha(opacity=0) !important&lt;br /&gt;
 ; -moz-opacity: 0 !important&lt;br /&gt;
 ; -khtml-opacity: 0 !important&lt;br /&gt;
 ; opacity: 0 !important&lt;br /&gt;
 ; background-color: transparent !important&lt;br /&gt;
 ; -ms-filter: &#039;progid:DXImageTransform.Microsoft.Alpha(Opacity=0)&#039; !important&lt;br /&gt;
&amp;quot;title=&amp;quot;{{{6|something}}} costs {{{7|unknown}}} learning points&amp;quot;&lt;br /&gt;
&amp;gt;&amp;lt;span&lt;br /&gt;
 style=&amp;quot;font-size: 30px&amp;quot;&lt;br /&gt;
 title=&amp;quot;{{{6|something}}} costs {{{7|unknown}}} learning points&amp;quot;&lt;br /&gt;
&amp;gt;[[{{{6}}}|o]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
this fills up the skill tree png&#039;s ancestor div with itself for each area definition in [[Data:Skill_tree_skill_icon_area_registry]] - each one of this should be a link to the icon&#039;s page&lt;br /&gt;
&lt;br /&gt;
these &amp;quot;area&amp;quot; links on the png work the way that there is a &amp;quot;g&amp;quot; hidden link display that is 30px font size for each icon inside the same div the png is in (roughly)&lt;br /&gt;
 - the 30px font size is the proportional icon size: for example the original icons where set to be 76px squared, and the png is set to be 1200px wide with 3123px original width - so the pixel size of the font of a single character like &amp;quot;g&amp;quot; has to be 76px times 1200 over 3123 pixels that is approximately 29.2px - however i rounded it up&lt;br /&gt;
&lt;br /&gt;
each position can be got by using the source code included in the summary of the file:skill_tree_definition.png in an application like visual studio code with jebbs plantuml extension (both are free), and then generate a new svg based on that source, open the svg in browser, open dev mode with f12, and then run the following javascript that is going to paste every single node the plantumel was containing as &amp;quot;rectangles&amp;quot; (including two default ones - that will need to be removed):&lt;br /&gt;
javascript:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// 1. Get the total width and height of the SVG viewbox&lt;br /&gt;
const svg = document.querySelector(&#039;svg&#039;);&lt;br /&gt;
const totalW = svg.viewBox.baseVal.width || svg.width.baseVal.value;&lt;br /&gt;
const totalH = svg.viewBox.baseVal.height || svg.height.baseVal.value;&lt;br /&gt;
&lt;br /&gt;
// 2. Select and sort skills&lt;br /&gt;
const skills = Array.from(document.querySelectorAll(&#039;g[id^=&amp;quot;elem_&amp;quot;]&#039;));&lt;br /&gt;
skills.sort((a, b) =&amp;gt; a.id.localeCompare(b.id));&lt;br /&gt;
&lt;br /&gt;
// 3. Map to Percentage Rates&lt;br /&gt;
const registryData = skills.map(skill =&amp;gt; {&lt;br /&gt;
    const bbox = skill.getBBox();&lt;br /&gt;
    const alias = skill.id.replace(&#039;elem_&#039;, &#039;&#039;);&lt;br /&gt;
    &lt;br /&gt;
    // Calculate Percentages&lt;br /&gt;
    const centerX = ((bbox.x + (bbox.width / 2)) / totalW) * 100;&lt;br /&gt;
    const centerY = ((bbox.y + (bbox.height / 2)) / totalH) * 100;&lt;br /&gt;
    const sizeX = (bbox.width / totalW) * 100;&lt;br /&gt;
    const sizeY = (bbox.height / totalH) * 100;&lt;br /&gt;
    &lt;br /&gt;
    return `{{#subobject: |Skill_page=${alias} |Skill_tree_coordinate_rates=${centerX.toFixed(2)}; ${centerY.toFixed(2)}; ${sizeX.toFixed(2)}; ${sizeY.toFixed(2)} }}`;&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// 4. Copy directly to your clipboard&lt;br /&gt;
const finalOutput = registryData.join(&#039;\n&#039;);&lt;br /&gt;
copy(finalOutput);&lt;br /&gt;
&lt;br /&gt;
console.log(&amp;quot;=== SUCCESS ===&amp;quot;);&lt;br /&gt;
console.log(`${registryData.length} skills converted to PERCENTAGE rates and copied to clipboard.`);&lt;br /&gt;
console.log(`Based on SVG Size: ${totalW}x${totalH}`);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
note that the svg will contain the rectangle definitions with lower case letters, and currently there is one typo in it: &amp;quot;basic mechanic&amp;quot; is present instead of &amp;quot;basic mechanic&amp;lt;u&amp;gt;s&amp;lt;/u&amp;gt;&amp;quot;&lt;br /&gt;
i intend to be soon uploading a plantuml source version in which the rectangle definitions are named according to page names (as those are not currently) - further facilitating the update of the skill tree in the future&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=User_talk:Csatangollah&amp;diff=120189</id>
		<title>User talk:Csatangollah</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=User_talk:Csatangollah&amp;diff=120189"/>
		<updated>2025-12-27T01:49:16Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: /* answer to MvGulik on */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;:{{quote|removed extra text, maybe it was interfering (according to ai it did)}} [//ringofbrodgar.com/index.php?title=Property:Skill_tree_coordinate_rates&amp;amp;oldid=120137 ref] Do you have the AI report on that for me. Might help in clearing up what the issue was/is.&lt;br /&gt;
:{{quote|skill tree header is no longer covered with toc}} [https://ringofbrodgar.com/index.php?title=Skills&amp;amp;oldid=120129 ref] Sorry to say TOC still covering the image. At least for Firefox 146.0 (Linux). (&#039;&#039;also showing some SMW output junk. ...&#039;&#039;)&lt;br /&gt;
:Also ... Please try to use sandbox(/..) page(s) for testing and intermediated problem solving, instead of the actual main target page. (&#039;&#039;most of the time the preview works just as well as saving. Which of course is considered a non issue on sandbox pages.&#039;&#039;.)&lt;br /&gt;
: --[[User_talk:MvGulik|&amp;lt;i style=&amp;quot;color:#666;&amp;quot;&amp;gt;.MvGulik.&amp;lt;/i&amp;gt;]] 09:54, 26 December 2025 (UTC)&lt;br /&gt;
&lt;br /&gt;
:After searching around a bit I&#039;m kinda doubtful RoB-wiki has the needed features to create functional image-maps. I could potentially help if you have, or know, a basic proof of concept I can check out. --[[User_talk:MvGulik|&amp;lt;i style=&amp;quot;color:#666;&amp;quot;&amp;gt;.MvGulik.&amp;lt;/i&amp;gt;]] 16:48, 26 December 2025 (UTC)&lt;br /&gt;
&lt;br /&gt;
== answer to MvGulik ==&lt;br /&gt;
&lt;br /&gt;
so i mentioned the ai that the record is grouping the last three fields of the record, and the ai was thinking that the first field must have thrown out of the record - even though i was mentioning him that all 60 pages are present for each field as used by.&lt;br /&gt;
&lt;br /&gt;
in the end, i argued to ai so much, i just opened a new instance of him, and the new insance told me to use explicit calls with property chains&lt;br /&gt;
&lt;br /&gt;
the purpose for toc is to cover the image when it is expanded. i am not sure if you can not collapse it with firefox, however that is using the toc-collapsible class that i did not write myself, it is stock&lt;br /&gt;
&lt;br /&gt;
i have never tried sandbox pages, thank you for suggesting, i will look up how can i proceed with those&lt;br /&gt;
&lt;br /&gt;
yes the wiki does not need the functionality of image maps - that is the exact reason i am not requesting it, but just doing it myself&lt;br /&gt;
&lt;br /&gt;
the proof of concept is present already - however i need help with making the divs background transparent in front of the png, or to make those be pushed below the png z while still working as links. if the divs do not work for links - such as because the link part of it is too tiny, then i will need to look for a different container&lt;br /&gt;
&lt;br /&gt;
== answer to MvGulik on ==&lt;br /&gt;
&lt;br /&gt;
i do own an svg version of the png, i do not know the extension capability of this wiki, so i require help with it too. i am not sure whether an interactive skill tree would be more simple using the svg instead of the png.&lt;br /&gt;
&lt;br /&gt;
also given that i have uploaded the png with the plantuml source i have created it, any user can also create the svg version (both jebbs plantuml extension, and visual studio code are free), upload it, and use it as interactive skill tree provided any extensions are present, or not in the future if required&lt;br /&gt;
&lt;br /&gt;
further on help i need. currently i can not make the div that holds onto both the markers, and the image to be constrictive of the height. i do not know why. i am trying to set a max height, a height in pixels, but the y-overflow is way too much higher than it is required - currently i constricted it with defining the overflow-x to be auto, and then i hid overflow-y&lt;br /&gt;
&lt;br /&gt;
== answer to MvGulik on ==&lt;br /&gt;
&lt;br /&gt;
so i feel like i have managed to overcome some of the difficulties. if you have got any suggestions, just tell me, or don&#039;t even tell me just do it yourself. do not wait me for an eternity even if you know your suggestions are worthy, just do it yourself&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Template:Skill_tree_skill_marker&amp;diff=120188</id>
		<title>Template:Skill tree skill marker</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Template:Skill_tree_skill_marker&amp;diff=120188"/>
		<updated>2025-12-27T01:26:56Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: adding explanation to how does the skill tree work&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;div&lt;br /&gt;
style=&amp;quot;&lt;br /&gt;
 position: absolute&lt;br /&gt;
 ; display: flex&lt;br /&gt;
 ; justify-content: center&lt;br /&gt;
 ; align-items: center&lt;br /&gt;
 ; left: {{{2}}}%&lt;br /&gt;
 ; top: {{{3}}}%&lt;br /&gt;
 ; width: {{{4}}}%&lt;br /&gt;
 ; height: {{{5}}}%&lt;br /&gt;
 ; transform: translate(-50%, -50%)&lt;br /&gt;
 ; z-index: 10&lt;br /&gt;
 ; filter: alpha(opacity=0) !important&lt;br /&gt;
 ; -moz-opacity: 0 !important&lt;br /&gt;
 ; -khtml-opacity: 0 !important&lt;br /&gt;
 ; opacity: 0 !important&lt;br /&gt;
 ; background-color: transparent !important&lt;br /&gt;
 ; -ms-filter: &#039;progid:DXImageTransform.Microsoft.Alpha(Opacity=0)&#039; !important&lt;br /&gt;
&amp;quot;title=&amp;quot;It costs {{{7|unknown}}} learning points&amp;quot;&lt;br /&gt;
&amp;gt;&amp;lt;span style=&amp;quot;font-size: 30px&amp;quot;&amp;gt;[[{{{6}}}|g]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
this fills up the skill tree png&#039;s ancestor div with itself for each area definition in [[Data:Skill_tree_skill_icon_area_registry]] - each one of this should be a link to the icon&#039;s page&lt;br /&gt;
&lt;br /&gt;
these &amp;quot;area&amp;quot; links on the png work the way that there is a &amp;quot;g&amp;quot; hidden link display that is 30px font size for each icon inside the same div the png is in (roughly)&lt;br /&gt;
 - the 30px font size is the proportional icon size: for example the original icons where set to be 76px squared, and the png is set to be 1200px wide with 3123px original width - so the pixel size of the font of a single character like &amp;quot;g&amp;quot; has to be 76px times 1200 over 3123 pixels that is approximately 29.2px - however i rounded it up&lt;br /&gt;
&lt;br /&gt;
each position can be got by using the source code included in the summary of the file:skill_tree_definition.png in an application like visual studio code with jebbs plantuml extension (both are free), and then generate a new svg based on that source, open the svg in browser, open dev mode with f12, and then run the following javascript that is going to paste every single node the plantumel was containing as &amp;quot;rectangles&amp;quot; (including two default ones - that will need to be removed):&lt;br /&gt;
javascript:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// 1. Get the total width and height of the SVG viewbox&lt;br /&gt;
const svg = document.querySelector(&#039;svg&#039;);&lt;br /&gt;
const totalW = svg.viewBox.baseVal.width || svg.width.baseVal.value;&lt;br /&gt;
const totalH = svg.viewBox.baseVal.height || svg.height.baseVal.value;&lt;br /&gt;
&lt;br /&gt;
// 2. Select and sort skills&lt;br /&gt;
const skills = Array.from(document.querySelectorAll(&#039;g[id^=&amp;quot;elem_&amp;quot;]&#039;));&lt;br /&gt;
skills.sort((a, b) =&amp;gt; a.id.localeCompare(b.id));&lt;br /&gt;
&lt;br /&gt;
// 3. Map to Percentage Rates&lt;br /&gt;
const registryData = skills.map(skill =&amp;gt; {&lt;br /&gt;
    const bbox = skill.getBBox();&lt;br /&gt;
    const alias = skill.id.replace(&#039;elem_&#039;, &#039;&#039;);&lt;br /&gt;
    &lt;br /&gt;
    // Calculate Percentages&lt;br /&gt;
    const centerX = ((bbox.x + (bbox.width / 2)) / totalW) * 100;&lt;br /&gt;
    const centerY = ((bbox.y + (bbox.height / 2)) / totalH) * 100;&lt;br /&gt;
    const sizeX = (bbox.width / totalW) * 100;&lt;br /&gt;
    const sizeY = (bbox.height / totalH) * 100;&lt;br /&gt;
    &lt;br /&gt;
    return `{{#subobject: |Skill_page=${alias} |Skill_tree_coordinate_rates=${centerX.toFixed(2)}; ${centerY.toFixed(2)}; ${sizeX.toFixed(2)}; ${sizeY.toFixed(2)} }}`;&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// 4. Copy directly to your clipboard&lt;br /&gt;
const finalOutput = registryData.join(&#039;\n&#039;);&lt;br /&gt;
copy(finalOutput);&lt;br /&gt;
&lt;br /&gt;
console.log(&amp;quot;=== SUCCESS ===&amp;quot;);&lt;br /&gt;
console.log(`${registryData.length} skills converted to PERCENTAGE rates and copied to clipboard.`);&lt;br /&gt;
console.log(`Based on SVG Size: ${totalW}x${totalH}`);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
note that the svg will contain the rectangle definitions with lower case letters, and currently there is one typo in it: &amp;quot;basic mechanic&amp;quot; is present instead of &amp;quot;basic mechanic&amp;lt;u&amp;gt;s&amp;lt;/u&amp;gt;&amp;quot;&lt;br /&gt;
i intend to be soon uploading a plantuml source version in which the rectangle definitions are named according to page names (as those are not currently) - further facilitating the update of the skill tree in the future&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Skills&amp;diff=120187</id>
		<title>Skills</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Skills&amp;diff=120187"/>
		<updated>2025-12-27T01:14:15Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: adding links to skill tree that are expected to work&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div&lt;br /&gt;
class=&amp;quot;toc-collapsible toc-collapsed&amp;quot;&lt;br /&gt;
style=&amp;quot;&lt;br /&gt;
 position: absolute&lt;br /&gt;
 ; display: inline-block&lt;br /&gt;
 ; background-color: white&lt;br /&gt;
 ; z-index: 101&lt;br /&gt;
&amp;quot;&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;height: 50px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Skill Tree ===&lt;br /&gt;
{{MT|off}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;&lt;br /&gt;
 position: relative&lt;br /&gt;
 ; overflow: auto&lt;br /&gt;
 ; max-width: 100%&lt;br /&gt;
 ; height: 440px&lt;br /&gt;
 ; display: block&lt;br /&gt;
&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Skill_tree_definition.png|none|1200px|link=]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;&lt;br /&gt;
 position: absolute&lt;br /&gt;
 ; overflow: hidden&lt;br /&gt;
 ; top: 0&lt;br /&gt;
 ; left: 0&lt;br /&gt;
 ; width: 1200px&lt;br /&gt;
 ; height: 440px&lt;br /&gt;
&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[-Has_subobject::Data:Skill_tree_skill_icon_area_registry]]&lt;br /&gt;
 |?Skill_tree_coordinate_rates.Coordinate_x_rate&lt;br /&gt;
 |?Skill_tree_coordinate_rates.Coordinate_y_rate&lt;br /&gt;
 |?Skill_tree_coordinate_rates.Size_x_rate&lt;br /&gt;
 |?Skill_tree_coordinate_rates.Size_y_rate&lt;br /&gt;
 |?Skill_page&lt;br /&gt;
 |?Skill_page.lpcost&lt;br /&gt;
 |format=template&lt;br /&gt;
 |template=Skill_tree_skill_marker&lt;br /&gt;
 |limit=100&lt;br /&gt;
 |sort=Skill_page&lt;br /&gt;
 |order=ascending&lt;br /&gt;
 |link=none&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{MT|off}}&lt;br /&gt;
===List of Skills===&lt;br /&gt;
&lt;br /&gt;
{{#ask:[[Category:Skills|+depth=0]]&lt;br /&gt;
 |?=skillname&lt;br /&gt;
 |?lpcost=lpcost&lt;br /&gt;
 |?paginae/text1=ptext1&lt;br /&gt;
 |?paginae/text2=ptext2&lt;br /&gt;
 |?paginae/text3=ptext3&lt;br /&gt;
 |format=plainlist&lt;br /&gt;
 |limit=100&lt;br /&gt;
 |link=none&lt;br /&gt;
 |template=skills_table{{!}}main&lt;br /&gt;
 |introtemplate=skills_table{{!}}intro&lt;br /&gt;
 |outrotemplate=skills_table{{!}}outro&lt;br /&gt;
 |userparam=ptext_header_on&lt;br /&gt;
 |sep={{!}}-&lt;br /&gt;
 |searchlabel=&lt;br /&gt;
 |named args=1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Game Development}}&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Template:Skill_tree_skill_marker&amp;diff=120186</id>
		<title>Template:Skill tree skill marker</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Template:Skill_tree_skill_marker&amp;diff=120186"/>
		<updated>2025-12-27T01:12:41Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: debugging ended- making opacity zero again&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;div&lt;br /&gt;
style=&amp;quot;&lt;br /&gt;
 position: absolute&lt;br /&gt;
 ; display: flex&lt;br /&gt;
 ; justify-content: center&lt;br /&gt;
 ; align-items: center&lt;br /&gt;
 ; left: {{{2}}}%&lt;br /&gt;
 ; top: {{{3}}}%&lt;br /&gt;
 ; width: {{{4}}}%&lt;br /&gt;
 ; height: {{{5}}}%&lt;br /&gt;
 ; transform: translate(-50%, -50%)&lt;br /&gt;
 ; z-index: 10&lt;br /&gt;
 ; filter: alpha(opacity=0) !important&lt;br /&gt;
 ; -moz-opacity: 0 !important&lt;br /&gt;
 ; -khtml-opacity: 0 !important&lt;br /&gt;
 ; opacity: 0 !important&lt;br /&gt;
 ; background-color: transparent !important&lt;br /&gt;
 ; -ms-filter: &#039;progid:DXImageTransform.Microsoft.Alpha(Opacity=0)&#039; !important&lt;br /&gt;
&amp;quot;title=&amp;quot;It costs {{{7|unknown}}} learning points&amp;quot;&lt;br /&gt;
&amp;gt;&amp;lt;span style=&amp;quot;font-size: 30px&amp;quot;&amp;gt;[[{{{6}}}|g]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
this fills up the skill tree png&#039;s ancestor div with itself for each area definition in [[Data:Skill_tree_skill_icon_area_registry]] - each one of this should be a link to the icon&#039;s page&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Template:Skill_tree_skill_marker&amp;diff=120185</id>
		<title>Template:Skill tree skill marker</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Template:Skill_tree_skill_marker&amp;diff=120185"/>
		<updated>2025-12-27T01:11:38Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: trying font size definition with px unit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;div&lt;br /&gt;
style=&amp;quot;&lt;br /&gt;
 position: absolute&lt;br /&gt;
 ; display: flex&lt;br /&gt;
 ; justify-content: center&lt;br /&gt;
 ; align-items: center&lt;br /&gt;
 ; left: {{{2}}}%&lt;br /&gt;
 ; top: {{{3}}}%&lt;br /&gt;
 ; width: {{{4}}}%&lt;br /&gt;
 ; height: {{{5}}}%&lt;br /&gt;
 ; transform: translate(-50%, -50%)&lt;br /&gt;
 ; z-index: 10&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
 ; filter: alpha(opacity=0) !important&lt;br /&gt;
 ; -moz-opacity: 0 !important&lt;br /&gt;
 ; -khtml-opacity: 0 !important&lt;br /&gt;
 ; opacity: 0 !important&lt;br /&gt;
 ; background-color: transparent !important&lt;br /&gt;
 ; -ms-filter: &#039;progid:DXImageTransform.Microsoft.Alpha(Opacity=0)&#039; !important&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;quot;title=&amp;quot;It costs {{{7|unknown}}} learning points&amp;quot;&lt;br /&gt;
&amp;gt;&amp;lt;span style=&amp;quot;font-size: 30px&amp;quot;&amp;gt;[[{{{6}}}|g]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
this fills up the skill tree png&#039;s ancestor div with itself for each area definition in [[Data:Skill_tree_skill_icon_area_registry]] - each one of this should be a link to the icon&#039;s page&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Template:Skill_tree_skill_marker&amp;diff=120184</id>
		<title>Template:Skill tree skill marker</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Template:Skill_tree_skill_marker&amp;diff=120184"/>
		<updated>2025-12-27T01:10:02Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: applying span for the link to attempt and edit its font size (such that it is approximately covering the entire icon)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;div&lt;br /&gt;
style=&amp;quot;&lt;br /&gt;
 position: absolute&lt;br /&gt;
 ; display: flex&lt;br /&gt;
 ; justify-content: center&lt;br /&gt;
 ; align-items: center&lt;br /&gt;
 ; left: {{{2}}}%&lt;br /&gt;
 ; top: {{{3}}}%&lt;br /&gt;
 ; width: {{{4}}}%&lt;br /&gt;
 ; height: {{{5}}}%&lt;br /&gt;
 ; transform: translate(-50%, -50%)&lt;br /&gt;
 ; z-index: 10&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
 ; filter: alpha(opacity=0) !important&lt;br /&gt;
 ; -moz-opacity: 0 !important&lt;br /&gt;
 ; -khtml-opacity: 0 !important&lt;br /&gt;
 ; opacity: 0 !important&lt;br /&gt;
 ; background-color: transparent !important&lt;br /&gt;
 ; -ms-filter: &#039;progid:DXImageTransform.Microsoft.Alpha(Opacity=0)&#039; !important&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;quot;title=&amp;quot;It costs {{{7|unknown}}} learning points&amp;quot;&lt;br /&gt;
&amp;gt;&amp;lt;span style=&amp;quot;font-size: 30&amp;quot;&amp;gt;[[{{{6}}}|g]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
this fills up the skill tree png&#039;s ancestor div with itself for each area definition in [[Data:Skill_tree_skill_icon_area_registry]] - each one of this should be a link to the icon&#039;s page&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Template:Skill_tree_skill_marker&amp;diff=120183</id>
		<title>Template:Skill tree skill marker</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Template:Skill_tree_skill_marker&amp;diff=120183"/>
		<updated>2025-12-27T01:04:45Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: flexboxing div to make inline elements in the center, also aligning, and justifying those to center&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;div&lt;br /&gt;
style=&amp;quot;&lt;br /&gt;
 position: absolute&lt;br /&gt;
 ; display: flex&lt;br /&gt;
 ; justify-content: center&lt;br /&gt;
 ; align-items: center&lt;br /&gt;
 ; left: {{{2}}}%&lt;br /&gt;
 ; top: {{{3}}}%&lt;br /&gt;
 ; width: {{{4}}}%&lt;br /&gt;
 ; height: {{{5}}}%&lt;br /&gt;
 ; transform: translate(-50%, -50%)&lt;br /&gt;
 ; z-index: 10&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
 ; filter: alpha(opacity=0) !important&lt;br /&gt;
 ; -moz-opacity: 0 !important&lt;br /&gt;
 ; -khtml-opacity: 0 !important&lt;br /&gt;
 ; opacity: 0 !important&lt;br /&gt;
 ; background-color: transparent !important&lt;br /&gt;
 ; -ms-filter: &#039;progid:DXImageTransform.Microsoft.Alpha(Opacity=0)&#039; !important&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;quot;title=&amp;quot;It costs {{{7|unknown}}} learning points&amp;quot;&lt;br /&gt;
&amp;gt;[[{{{6}}}|g]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
this fills up the skill tree png&#039;s ancestor div with itself for each area definition in [[Data:Skill_tree_skill_icon_area_registry]] - each one of this should be a link to the icon&#039;s page&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Template:Skill_tree_skill_marker&amp;diff=120182</id>
		<title>Template:Skill tree skill marker</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Template:Skill_tree_skill_marker&amp;diff=120182"/>
		<updated>2025-12-27T01:00:03Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: making div more tight around the link, and removing second character&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;div&lt;br /&gt;
style=&amp;quot;&lt;br /&gt;
 position: absolute&lt;br /&gt;
 ; display: block&lt;br /&gt;
 ; left: {{{2}}}%&lt;br /&gt;
 ; top: {{{3}}}%&lt;br /&gt;
 ; width: {{{4}}}%&lt;br /&gt;
 ; height: {{{5}}}%&lt;br /&gt;
 ; transform: translate(-50%, -50%)&lt;br /&gt;
 ; z-index: 10&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
 ; filter: alpha(opacity=0) !important&lt;br /&gt;
 ; -moz-opacity: 0 !important&lt;br /&gt;
 ; -khtml-opacity: 0 !important&lt;br /&gt;
 ; opacity: 0 !important&lt;br /&gt;
 ; background-color: transparent !important&lt;br /&gt;
 ; -ms-filter: &#039;progid:DXImageTransform.Microsoft.Alpha(Opacity=0)&#039; !important&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;quot;title=&amp;quot;It costs {{{7|unknown}}} learning points&amp;quot;&lt;br /&gt;
&amp;gt;[[{{{6}}}|g]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
this fills up the skill tree png&#039;s ancestor div with itself for each area definition in [[Data:Skill_tree_skill_icon_area_registry]] - each one of this should be a link to the icon&#039;s page&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
	<entry>
		<id>https://ringofbrodgar.com/index.php?title=Template:Skill_tree_skill_marker&amp;diff=120181</id>
		<title>Template:Skill tree skill marker</title>
		<link rel="alternate" type="text/html" href="https://ringofbrodgar.com/index.php?title=Template:Skill_tree_skill_marker&amp;diff=120181"/>
		<updated>2025-12-27T00:58:15Z</updated>

		<summary type="html">&lt;p&gt;Csatangollah: commenting opacity for debug purposes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;div&lt;br /&gt;
style=&amp;quot;&lt;br /&gt;
 position: absolute&lt;br /&gt;
 ; display: block&lt;br /&gt;
 ; left: {{{2}}}%&lt;br /&gt;
 ; top: {{{3}}}%&lt;br /&gt;
 ; width: {{{4}}}%&lt;br /&gt;
 ; height: {{{5}}}%&lt;br /&gt;
 ; transform: translate(-50%, -50%)&lt;br /&gt;
 ; z-index: 10&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
 ; filter: alpha(opacity=0) !important&lt;br /&gt;
 ; -moz-opacity: 0 !important&lt;br /&gt;
 ; -khtml-opacity: 0 !important&lt;br /&gt;
 ; opacity: 0 !important&lt;br /&gt;
 ; background-color: transparent !important&lt;br /&gt;
 ; -ms-filter: &#039;progid:DXImageTransform.Microsoft.Alpha(Opacity=0)&#039; !important&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;quot;title=&amp;quot;It costs {{{7|unknown}}} learning points&amp;quot;&lt;br /&gt;
&amp;gt;&lt;br /&gt;
  [[{{{6}}}|go]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
this fills up the skill tree png&#039;s ancestor div with itself for each area definition in [[Data:Skill_tree_skill_icon_area_registry]] - each one of this should be a link to the icon&#039;s page&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Csatangollah</name></author>
	</entry>
</feed>