<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://petitplanet.wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3AShop</id>
	<title>Module:Shop - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://petitplanet.wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3AShop"/>
	<link rel="alternate" type="text/html" href="https://petitplanet.wiki/index.php?title=Module:Shop&amp;action=history"/>
	<updated>2026-04-13T18:54:36Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://petitplanet.wiki/index.php?title=Module:Shop&amp;diff=3470&amp;oldid=prev</id>
		<title>Stevium: Removed gsub()</title>
		<link rel="alternate" type="text/html" href="https://petitplanet.wiki/index.php?title=Module:Shop&amp;diff=3470&amp;oldid=prev"/>
		<updated>2025-11-16T13:32:36Z</updated>

		<summary type="html">&lt;p&gt;Removed gsub()&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 13:32, 16 November 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l136&quot;&gt;Line 136:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 136:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		end&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		row:tag(&amp;#039;td&amp;#039;):node(Item(info))&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		row:tag(&amp;#039;td&amp;#039;):node(Item(info))&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		if (not args.nocat) then category:wikitext(&#039;[[Category:Sells &#039;, specific&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;:gsub(&#039;&amp;amp;&#039;, &#039;and&#039;)&lt;/del&gt;, &#039;|&#039;, specific, &#039;]]&#039;) end&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		if (not args.nocat) then category:wikitext(&#039;[[Category:Sells &#039;, specific, &#039;|&#039;, specific, &#039;]]&#039;) end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	end&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	if cost then&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	if cost then&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Stevium</name></author>
	</entry>
	<entry>
		<id>https://petitplanet.wiki/index.php?title=Module:Shop&amp;diff=1628&amp;oldid=prev</id>
		<title>Stevium: Changed to wikitable class</title>
		<link rel="alternate" type="text/html" href="https://petitplanet.wiki/index.php?title=Module:Shop&amp;diff=1628&amp;oldid=prev"/>
		<updated>2025-11-13T17:50:02Z</updated>

		<summary type="html">&lt;p&gt;Changed to wikitable class&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 17:50, 13 November 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l16&quot;&gt;Line 16:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 16:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;function p._main(args)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;function p._main(args)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	local out = mw.html.create(&#039;table&#039;):addClass(&#039;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;article-table fandom-table &lt;/del&gt;sortable &#039; .. (args.class or &#039;&#039;))&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	local out = mw.html.create(&#039;table&#039;):addClass(&#039;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;wikitable &lt;/ins&gt;sortable &#039; .. (args.class or &#039;&#039;))&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	local delim = args.delim or &amp;#039;;;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	local delim = args.delim or &amp;#039;;;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	local currency = args.currency or &amp;#039;Dough&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	local currency = args.currency or &amp;#039;Dough&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Stevium</name></author>
	</entry>
	<entry>
		<id>https://petitplanet.wiki/index.php?title=Module:Shop&amp;diff=460&amp;oldid=prev</id>
		<title>ReisuDesign at 19:13, 10 November 2025</title>
		<link rel="alternate" type="text/html" href="https://petitplanet.wiki/index.php?title=Module:Shop&amp;diff=460&amp;oldid=prev"/>
		<updated>2025-11-10T19:13:46Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:13, 10 November 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l18&quot;&gt;Line 18:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 18:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	local out = mw.html.create(&amp;#039;table&amp;#039;):addClass(&amp;#039;article-table fandom-table sortable &amp;#039; .. (args.class or &amp;#039;&amp;#039;))&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	local out = mw.html.create(&amp;#039;table&amp;#039;):addClass(&amp;#039;article-table fandom-table sortable &amp;#039; .. (args.class or &amp;#039;&amp;#039;))&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	local delim = args.delim or &amp;#039;;;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	local delim = args.delim or &amp;#039;;;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	local currency = args.currency or &#039;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Credit&lt;/del&gt;&#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	local currency = args.currency or &#039;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Dough&lt;/ins&gt;&#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	local stock = args.stock or &amp;#039;Stock&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	local stock = args.stock or &amp;#039;Stock&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l78&quot;&gt;Line 78:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 78:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	local cost = data[2]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	local cost = data[2]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	local stock = data[3] or data.stock&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	local stock = data[3] or data.stock&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	local currency = data.currency or args.currency or &#039;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Credit&lt;/del&gt;&#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	local currency = data.currency or args.currency or &#039;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Dough&lt;/ins&gt;&#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	function getCost(i)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	function getCost(i)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>ReisuDesign</name></author>
	</entry>
	<entry>
		<id>https://petitplanet.wiki/index.php?title=Module:Shop&amp;diff=459&amp;oldid=prev</id>
		<title>ReisuDesign: Created page with &quot;local p = {} local lib = require(&#039;Module:Feature&#039;) local Item = require(&#039;Module:Item&#039;)._main local category = mw.html.create():wikitext(&#039;Category:Shops&#039;) local TS = lib.thousandsSeparator local total = {}  function p.main(frame) 	local args = require(&#039;Module:Arguments&#039;).getArgs(frame) 	if tonumber(frame:callParserFunction(&#039;#var:transclude&#039;, &#039;&#039;) or &#039;0&#039;) == 1 then 		args.nocat = 1 	end 	 	return p._main(args) end  function p._main(args) 	local out = mw.html.create(&#039;tab...&quot;</title>
		<link rel="alternate" type="text/html" href="https://petitplanet.wiki/index.php?title=Module:Shop&amp;diff=459&amp;oldid=prev"/>
		<updated>2025-11-10T19:08:46Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;local p = {} local lib = require(&amp;#039;Module:Feature&amp;#039;) local Item = require(&amp;#039;Module:Item&amp;#039;)._main local category = mw.html.create():wikitext(&amp;#039;&lt;a href=&quot;/index.php?title=Category:Shops&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Category:Shops (page does not exist)&quot;&gt;Category:Shops&lt;/a&gt;&amp;#039;) local TS = lib.thousandsSeparator local total = {}  function p.main(frame) 	local args = require(&amp;#039;Module:Arguments&amp;#039;).getArgs(frame) 	if tonumber(frame:callParserFunction(&amp;#039;#var:transclude&amp;#039;, &amp;#039;&amp;#039;) or &amp;#039;0&amp;#039;) == 1 then 		args.nocat = 1 	end 	 	return p._main(args) end  function p._main(args) 	local out = mw.html.create(&amp;#039;tab...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
local lib = require(&amp;#039;Module:Feature&amp;#039;)&lt;br /&gt;
local Item = require(&amp;#039;Module:Item&amp;#039;)._main&lt;br /&gt;
local category = mw.html.create():wikitext(&amp;#039;[[Category:Shops]]&amp;#039;)&lt;br /&gt;
local TS = lib.thousandsSeparator&lt;br /&gt;
local total = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = require(&amp;#039;Module:Arguments&amp;#039;).getArgs(frame)&lt;br /&gt;
	if tonumber(frame:callParserFunction(&amp;#039;#var:transclude&amp;#039;, &amp;#039;&amp;#039;) or &amp;#039;0&amp;#039;) == 1 then&lt;br /&gt;
		args.nocat = 1&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return p._main(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	local out = mw.html.create(&amp;#039;table&amp;#039;):addClass(&amp;#039;article-table fandom-table sortable &amp;#039; .. (args.class or &amp;#039;&amp;#039;))&lt;br /&gt;
	local delim = args.delim or &amp;#039;;;&amp;#039;&lt;br /&gt;
	local currency = args.currency or &amp;#039;Credit&amp;#039;&lt;br /&gt;
	local stock = args.stock or &amp;#039;Stock&amp;#039;&lt;br /&gt;
	&lt;br /&gt;
	-- Header row&lt;br /&gt;
	local tr = out:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
	tr:tag(&amp;#039;th&amp;#039;):wikitext(&amp;#039;Item&amp;#039;)&lt;br /&gt;
	tr:tag(&amp;#039;th&amp;#039;):wikitext(&amp;#039;Cost&amp;#039;)&lt;br /&gt;
	tr:tag(&amp;#039;th&amp;#039;):wikitext(stock)&lt;br /&gt;
	if tonumber(args.total) == 1 then tr:tag(&amp;#039;th&amp;#039;):attr(&amp;#039;data-sort-type&amp;#039;, &amp;#039;number&amp;#039;):wikitext(&amp;#039;Total Cost&amp;#039;) end&lt;br /&gt;
	if lib.isNotEmpty(args.refresh) then tr:tag(&amp;#039;th&amp;#039;):wikitext(&amp;#039;Refresh&amp;#039;) end&lt;br /&gt;
	if lib.isNotEmpty(args.note) then tr:tag(&amp;#039;th&amp;#039;):wikitext(&amp;#039;Notes&amp;#039;) end&lt;br /&gt;
	&lt;br /&gt;
	-- Table body&lt;br /&gt;
	for _, raw in ipairs(args) do&lt;br /&gt;
		local data = p.splitParams(raw, delim)&lt;br /&gt;
		data.size = data.size or args.size or &amp;#039;35&amp;#039; -- first column image size&lt;br /&gt;
		data.currency = data.currency or currency&lt;br /&gt;
		data.cost_delim = data.cost_delim or args.cost_delim or &amp;#039;,&amp;#039;&lt;br /&gt;
		out:tag(&amp;#039;tr&amp;#039;):node(p.ItemRow(data, args))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Footer row&lt;br /&gt;
	if next(total) ~= nil and tonumber(args.total) == 1 then&lt;br /&gt;
		local tr = out:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
		tr:tag(&amp;#039;th&amp;#039;):wikitext(&amp;#039;Total cost for all items&amp;#039;)&lt;br /&gt;
		local th = tr:tag(&amp;#039;th&amp;#039;):attr(&amp;#039;colspan&amp;#039;, 3 + (lib.isNotEmpty(args.refresh) and 1 or 0) + (lib.isNotEmpty(args.note) and 1 or 0))&lt;br /&gt;
		local discount = false&lt;br /&gt;
		for name, info in lib.spairs(total) do&lt;br /&gt;
			if not discount and info.discounted and info.discounted&amp;gt;0 and info.discounted&amp;lt;info.base then discount=true end&lt;br /&gt;
			th:node(Item{&lt;br /&gt;
				name = name,&lt;br /&gt;
				link = name,&lt;br /&gt;
				count = TS(info.base) .. (info.base2&amp;gt;0 and (&amp;#039; (&amp;#039; .. TS(info.base2) .. &amp;#039;)&amp;#039;) or &amp;#039;&amp;#039;),&lt;br /&gt;
				size = 25&lt;br /&gt;
			}):wikitext(&amp;#039;&amp;lt;br /&amp;gt;&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
		if discount then&lt;br /&gt;
			th:tag(&amp;#039;u&amp;#039;):tag(&amp;#039;small&amp;#039;):wikitext(&amp;#039;Discounted:&amp;lt;br /&amp;gt;&amp;#039;)&lt;br /&gt;
			for name, info in lib.spairs(total) do&lt;br /&gt;
				th:node(Item{&lt;br /&gt;
					name = name,&lt;br /&gt;
					link = name,&lt;br /&gt;
					count = TS(info.discounted) .. (info.discounted2&amp;gt;0 and (&amp;#039; (&amp;#039; .. TS(info.discounted2) .. &amp;#039;)&amp;#039;) or &amp;#039;&amp;#039;),&lt;br /&gt;
					size = 25&lt;br /&gt;
				}):wikitext(&amp;#039;&amp;lt;br /&amp;gt;&amp;#039;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if not args.shop or mw.title.getCurrentTitle().rootText == args.shop then&lt;br /&gt;
		out:node(require(&amp;#039;Module:Namespace detect&amp;#039;).main{main=category})&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.ItemRow(data, args)&lt;br /&gt;
	local row = mw.html.create()&lt;br /&gt;
	local cost = data[2]&lt;br /&gt;
	local stock = data[3] or data.stock&lt;br /&gt;
	local currency = data.currency or args.currency or &amp;#039;Credit&amp;#039;&lt;br /&gt;
	&lt;br /&gt;
	function getCost(i)&lt;br /&gt;
		i.mult = tonumber(i.mult) or 1&lt;br /&gt;
		i.mult2 = tonumber(i.mult2) or 0&lt;br /&gt;
		if not data[1] and lib.isNotEmpty(data.x) and data.x ~= &amp;#039;1&amp;#039; then i.cell:wikitext(&amp;#039;&amp;amp;times;&amp;#039;, data.x, &amp;#039; per &amp;#039;) end&lt;br /&gt;
		if tonumber(i.value) == nil then&lt;br /&gt;
			local items = lib.split(i.value, data.cost_delim)&lt;br /&gt;
			for a, item in ipairs(items) do&lt;br /&gt;
				local name, amount = string.match(item, &amp;#039;^(.-)%*(.-)$&amp;#039;)&lt;br /&gt;
				amount = tonumber((amount:gsub(&amp;#039;,&amp;#039;, &amp;#039;&amp;#039;)))&lt;br /&gt;
				if name == currency then i.cell:attr(&amp;#039;data-sort-value&amp;#039;, amount) end&lt;br /&gt;
				i.cell:node(Item{&lt;br /&gt;
					name = name,&lt;br /&gt;
					link = name,&lt;br /&gt;
					count = TS(amount*i.mult) .. (i.mult2&amp;gt;0 and (&amp;#039; (&amp;#039; .. TS(amount*i.mult2) .. &amp;#039;)&amp;#039;) or &amp;#039;&amp;#039;),&lt;br /&gt;
					notext = 1,&lt;br /&gt;
					size = 25&lt;br /&gt;
				}):wikitext(&amp;#039;&amp;lt;br /&amp;gt;&amp;#039;)&lt;br /&gt;
				if (args.nocat == nil and i.nocat == nil) then category:wikitext(&amp;#039;[[Category:&amp;#039;, name, &amp;#039; Shops]]&amp;#039;) end&lt;br /&gt;
				if i.store_total and not args.nototal then&lt;br /&gt;
					total[name] = total[name] or {base=0, base2=0, discounted=0, discounted2=0}&lt;br /&gt;
					total[name][i.store_total] = total[name][i.store_total] + amount*i.mult&lt;br /&gt;
					total[name][i.store_total..&amp;#039;2&amp;#039;] = total[name][i.store_total..&amp;#039;2&amp;#039;] + amount*i.mult2&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			i.value = tonumber((i.value:gsub(&amp;#039;,&amp;#039;, &amp;#039;&amp;#039;)))&lt;br /&gt;
			i.cell&lt;br /&gt;
			:attr(&amp;#039;data-sort-value&amp;#039;, i.value)&lt;br /&gt;
			:node(Item{&lt;br /&gt;
					name = currency,&lt;br /&gt;
					link = currency,&lt;br /&gt;
					count = TS(i.value*i.mult) .. (i.mult2&amp;gt;0 and (&amp;#039; (&amp;#039; .. TS(i.value*i.mult2) .. &amp;#039;)&amp;#039;) or &amp;#039;&amp;#039;),&lt;br /&gt;
					notext = 1,&lt;br /&gt;
					size = 25&lt;br /&gt;
				})&lt;br /&gt;
			if (args.nocat == nil and i.nocat == nil) then category:wikitext(&amp;#039;[[Category:&amp;#039;, currency, &amp;#039; Shops]]&amp;#039;) end&lt;br /&gt;
			if i.store_total and not args.nototal then&lt;br /&gt;
				total[currency] = total[currency] or {base=0, base2=0, discounted=0, discounted2=0}&lt;br /&gt;
				total[currency][i.store_total] = total[currency][i.store_total] + i.value*i.mult&lt;br /&gt;
				total[currency][i.store_total..&amp;#039;2&amp;#039;] = total[currency][i.store_total..&amp;#039;2&amp;#039;] + i.value*i.mult2&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if data[1] then&lt;br /&gt;
		local info = {}&lt;br /&gt;
		local specific = data.specific or lib.ternary(tonumber(data.blueprint)==1, &amp;#039;Blueprint: &amp;#039; .. data[1], data[1])&lt;br /&gt;
		info.name = data[1]&lt;br /&gt;
		info.size = data.size&lt;br /&gt;
		info.count = data.x&lt;br /&gt;
		info.link = data.link or specific&lt;br /&gt;
		info.text = data.text or specific&lt;br /&gt;
		info[&amp;#039;type&amp;#039;] = data[&amp;#039;type&amp;#039;]&lt;br /&gt;
		if (data[&amp;#039;type&amp;#039;] == &amp;#039;Light Cone&amp;#039;) then&lt;br /&gt;
			info.suffix = &amp;#039;Icon&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		row:tag(&amp;#039;td&amp;#039;):node(Item(info))&lt;br /&gt;
		if (not args.nocat) then category:wikitext(&amp;#039;[[Category:Sells &amp;#039;, specific:gsub(&amp;#039;&amp;amp;&amp;#039;, &amp;#039;and&amp;#039;), &amp;#039;|&amp;#039;, specific, &amp;#039;]]&amp;#039;) end&lt;br /&gt;
	end&lt;br /&gt;
	if cost then&lt;br /&gt;
		local cell = row:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
		getCost{cell=cell, value=cost}&lt;br /&gt;
		if data.discount then&lt;br /&gt;
			cell:tag(&amp;#039;div&amp;#039;):tag(&amp;#039;u&amp;#039;):tag(&amp;#039;small&amp;#039;):wikitext(&amp;#039;Discounted:&amp;lt;br /&amp;gt;&amp;#039;)&lt;br /&gt;
			getCost{cell=cell, value=data.discount}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if stock then&lt;br /&gt;
		local cell = row:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
		if stock == &amp;#039;inf&amp;#039; then cell:wikitext(&amp;#039;∞&amp;#039;)&lt;br /&gt;
		else cell:wikitext(stock)&lt;br /&gt;
		end&lt;br /&gt;
		if data.stock2 then cell:wikitext(&amp;#039; (&amp;#039;, data.stock2, &amp;#039;)&amp;#039;) end&lt;br /&gt;
	end&lt;br /&gt;
	if tonumber(args.total) == 1 and cost and stock then&lt;br /&gt;
		local cell = row:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
		if stock == &amp;#039;inf&amp;#039; then cell:wikitext(&amp;#039;&amp;amp;mdash;&amp;#039;)&lt;br /&gt;
		else &lt;br /&gt;
			getCost{cell=cell, value=cost, mult=stock, mult2=data.stock2, nocat=true, store_total=&amp;#039;base&amp;#039;}&lt;br /&gt;
			if data.discount then &lt;br /&gt;
				cell:tag(&amp;#039;div&amp;#039;):tag(&amp;#039;u&amp;#039;):tag(&amp;#039;small&amp;#039;):wikitext(&amp;#039;Discounted:&amp;lt;br /&amp;gt;&amp;#039;)&lt;br /&gt;
				getCost{cell=cell, value=data.discount, mult=stock, mult2=data.stock2, nocat=true, store_total=&amp;#039;discounted&amp;#039;}&lt;br /&gt;
			else&lt;br /&gt;
				-- Sum non-discounted to discount for those who dont have a discounted version&lt;br /&gt;
				local mult = tonumber(stock) or 1&lt;br /&gt;
				local mult2 = tonumber(data.stock2) or 0&lt;br /&gt;
				if cost:find(&amp;#039;%*%d&amp;#039;) then&lt;br /&gt;
					local items = lib.split(cost, data.cost_delim)&lt;br /&gt;
					for a, item in ipairs(items) do&lt;br /&gt;
						local name, amount = string.match(item, &amp;#039;^(.-)*(.-)$&amp;#039;)&lt;br /&gt;
						amount = tonumber((amount:gsub(&amp;#039;,&amp;#039;, &amp;#039;&amp;#039;)))&lt;br /&gt;
						total[name] = total[name] or {base=0, base2=0, discounted=0, discounted2=0}&lt;br /&gt;
						total[name][&amp;#039;discounted&amp;#039;] = total[name][&amp;#039;discounted&amp;#039;] + amount*mult&lt;br /&gt;
						total[name][&amp;#039;discounted2&amp;#039;] = total[name][&amp;#039;discounted2&amp;#039;] + amount*mult2&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					local value = tonumber((cost:gsub(&amp;#039;,&amp;#039;, &amp;#039;&amp;#039;)))&lt;br /&gt;
					total[currency] = total[currency] or {base=0, base2=0, discounted=0, discounted2=0}&lt;br /&gt;
					total[currency][&amp;#039;discounted&amp;#039;] = total[currency][&amp;#039;discounted&amp;#039;] + value*mult&lt;br /&gt;
					total[currency][&amp;#039;discounted2&amp;#039;] = total[currency][&amp;#039;discounted2&amp;#039;] + value*mult2&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if data.refresh or args.refresh then&lt;br /&gt;
		refreshKeys = {d = &amp;#039;Daily&amp;#039;, w = &amp;#039;Weekly&amp;#039;, m = &amp;#039;Monthly&amp;#039;, v = &amp;#039;Per Version&amp;#039;}&lt;br /&gt;
		row:tag(&amp;#039;td&amp;#039;):wikitext(refreshKeys[data.refresh or 1] or data.refresh or &amp;#039;&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	if data.note or args.note then row:tag(&amp;#039;td&amp;#039;):wikitext(data.note or &amp;#039;&amp;#039;) end&lt;br /&gt;
	&lt;br /&gt;
	return row&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.splitParams(entry, paramDelim)&lt;br /&gt;
	entry = lib.split(entry, paramDelim)&lt;br /&gt;
	local returns = {}&lt;br /&gt;
	for i, param in ipairs(entry) do&lt;br /&gt;
		local name, val = string.match(param, &amp;#039;^%s*(.-)%s*{?{?=}?}?%s*(.-)%s*$&amp;#039;)&lt;br /&gt;
		if name ~= nil and name ~= &amp;#039;&amp;#039; and val ~= nil then --named params&lt;br /&gt;
			returns[name] = val&lt;br /&gt;
		elseif param ~= nil and param ~= &amp;#039;&amp;#039; then --unnamed params&lt;br /&gt;
			table.insert(returns, param)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return returns&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>ReisuDesign</name></author>
	</entry>
</feed>