<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://pigeongames.gaoice.run/index.php?action=history&amp;feed=atom&amp;title=%E6%A8%A1%E5%9D%97%3AB_ProjectDivide</id>
	<title>模块:B ProjectDivide - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://pigeongames.gaoice.run/index.php?action=history&amp;feed=atom&amp;title=%E6%A8%A1%E5%9D%97%3AB_ProjectDivide"/>
	<link rel="alternate" type="text/html" href="https://pigeongames.gaoice.run/index.php?title=%E6%A8%A1%E5%9D%97:B_ProjectDivide&amp;action=history"/>
	<updated>2026-08-15T23:40:10Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://pigeongames.gaoice.run/index.php?title=%E6%A8%A1%E5%9D%97:B_ProjectDivide&amp;diff=50363&amp;oldid=prev</id>
		<title>2024年10月10日 (四) 09:08 Staf Irity</title>
		<link rel="alternate" type="text/html" href="https://pigeongames.gaoice.run/index.php?title=%E6%A8%A1%E5%9D%97:B_ProjectDivide&amp;diff=50363&amp;oldid=prev"/>
		<updated>2024-10-10T09:08:49Z</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;zh-Hans-CN&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2024年10月10日 (四) 17:08的版本&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-l1&quot;&gt;第1行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第1行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;local frame;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;if not mw.loadJsonData then&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    mw.loadJsonData = function(pageName)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        local str = frame:expandTemplate{title=pageName};&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        return mw.text.jsonDecode(str)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    end&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;end&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs;&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 getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l12&quot;&gt;第12行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第22行：&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;p.initTableFromName = makeInvokeFunc(&amp;#039;_initTableFromName&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;p.initTableFromName = makeInvokeFunc(&amp;#039;_initTableFromName&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;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; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;local frame;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&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;local levelNameList = {&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 levelNameList = {&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Staf Irity</name></author>
	</entry>
	<entry>
		<id>https://pigeongames.gaoice.run/index.php?title=%E6%A8%A1%E5%9D%97:B_ProjectDivide&amp;diff=50358&amp;oldid=prev</id>
		<title>2024年10月10日 (四) 09:00 Staf Irity</title>
		<link rel="alternate" type="text/html" href="https://pigeongames.gaoice.run/index.php?title=%E6%A8%A1%E5%9D%97:B_ProjectDivide&amp;diff=50358&amp;oldid=prev"/>
		<updated>2024-10-10T09:00:24Z</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;zh-Hans-CN&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2024年10月10日 (四) 17:00的版本&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-l182&quot;&gt;第182行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第182行：&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;         list[7] = table.concat(skills,&amp;quot;\n\n&amp;quot;);&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;         list[7] = table.concat(skills,&amp;quot;\n\n&amp;quot;);&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;         return frame:expandTemplate{title = &quot;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;PD&lt;/del&gt;-&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ChaC&lt;/del&gt;&quot;,args = list}&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;         return frame:expandTemplate{title = &quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;B_PD&lt;/ins&gt;-&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;C&lt;/ins&gt;&quot;,args = list}&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,--&amp;quot;角色卡&amp;quot;&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,--&amp;quot;角色卡&amp;quot;&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;     L = &amp;quot;置物卡&amp;quot;,&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;     L = &amp;quot;置物卡&amp;quot;,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Staf Irity</name></author>
	</entry>
	<entry>
		<id>https://pigeongames.gaoice.run/index.php?title=%E6%A8%A1%E5%9D%97:B_ProjectDivide&amp;diff=50356&amp;oldid=prev</id>
		<title>Staf Irity：​重生之我是PjtD写手但是我往代码里加了一吨不可维护的屎山</title>
		<link rel="alternate" type="text/html" href="https://pigeongames.gaoice.run/index.php?title=%E6%A8%A1%E5%9D%97:B_ProjectDivide&amp;diff=50356&amp;oldid=prev"/>
		<updated>2024-10-10T08:57:32Z</updated>

		<summary type="html">&lt;p&gt;重生之我是PjtD写手但是我往代码里加了一吨不可维护的屎山&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs;&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function makeInvokeFunc(funcName)&lt;br /&gt;
    return function(frame)&lt;br /&gt;
        local args = getArgs(frame)&lt;br /&gt;
        return p[funcName](args)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.initTableFromName = makeInvokeFunc(&amp;#039;_initTableFromName&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local frame;&lt;br /&gt;
&lt;br /&gt;
local levelNameList = {&lt;br /&gt;
    [0] = &amp;quot;C&amp;quot;,&lt;br /&gt;
    [1] = &amp;quot;B&amp;quot;,&lt;br /&gt;
    [2] = &amp;quot;A&amp;quot;,&lt;br /&gt;
    [3] = &amp;quot;S&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local actionTypeNameList = {&lt;br /&gt;
    ACTIVE = &amp;quot;主动&amp;quot;,&lt;br /&gt;
    PASSIVE = &amp;quot;被动&amp;quot;,&lt;br /&gt;
    ENTRANCE = &amp;quot;登场&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local buffTypeNameList = {&lt;br /&gt;
    taunt = &amp;quot;嘲讽等级&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local action2TypeNameList = {&lt;br /&gt;
    destory = &amp;quot;销毁&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function getStrFromNumber(number)&lt;br /&gt;
    if number == 0 then return &amp;quot;0&amp;quot;;&lt;br /&gt;
    elseif number &amp;gt; 0 then return &amp;quot;+&amp;quot; .. number;&lt;br /&gt;
    else return tostring(number);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getStrFromOpAndValue(operator,value)&lt;br /&gt;
    if operator == 0 then return &amp;quot;+&amp;quot; .. value&lt;br /&gt;
    elseif operator == 1 then return &amp;quot;+&amp;quot; .. (value*100) .. &amp;quot;%&amp;quot;&lt;br /&gt;
    elseif operator == 2 then return &amp;quot;+&amp;quot; .. value&lt;br /&gt;
    elseif operator == 3 then return &amp;quot;*&amp;quot; .. (value*100+100) .. &amp;quot;%&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local readConditions,readCondition;&lt;br /&gt;
local originalJson;&lt;br /&gt;
function readCondition(condition)&lt;br /&gt;
    if condition.description then return condition.description;end&lt;br /&gt;
    if condition.type == &amp;quot;List&amp;quot; then return readConditions(condition);&lt;br /&gt;
    elseif condition.type == &amp;quot;event&amp;quot; then return &amp;quot;事件&amp;quot; .. condition.event .. &amp;quot;发生时&amp;quot;&lt;br /&gt;
    elseif condition.type == &amp;quot;condition&amp;quot; then return &amp;quot;条件&amp;quot; .. condition.condition .. &amp;quot;成立时&amp;quot;&lt;br /&gt;
    else return &amp;quot;未知条件:&amp;quot; .. mw.dumpObject(condition);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function readConditions(cList)&lt;br /&gt;
    local desp = string.gsub(cList.condition,&amp;quot;&amp;amp;&amp;amp;&amp;quot;,&amp;quot; 且 &amp;quot;);&lt;br /&gt;
    desp = string.gsub(desp,&amp;quot;||&amp;quot;,&amp;quot; 或 &amp;quot;);&lt;br /&gt;
    for _, v in ipairs(cList.list) do&lt;br /&gt;
        desp = string.gsub(desp,&amp;quot;%[&amp;quot; .. v.id .. &amp;quot;%]&amp;quot;,readCondition(v))&lt;br /&gt;
    end&lt;br /&gt;
    return desp;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function readSelector(selector,def)&lt;br /&gt;
    if not selector then return def;&lt;br /&gt;
    elseif selector.type == &amp;quot;self&amp;quot; then return &amp;quot;选中自身&amp;quot;&lt;br /&gt;
    elseif selector.type == &amp;quot;supported&amp;quot; then return &amp;quot;选中被援助对象&amp;quot;&lt;br /&gt;
    else return &amp;quot;选中 未知选择器:&amp;quot; .. mw.dumpObject(selector);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function readSkill(jsonSkill)&lt;br /&gt;
    local skillDes = {}&lt;br /&gt;
    skillDes[1] = &amp;quot;【&amp;quot; .. actionTypeNameList[jsonSkill.type] .. &amp;quot;】&amp;quot; .. jsonSkill.name;&lt;br /&gt;
&lt;br /&gt;
    if jsonSkill.cost ~= 0 then skillDes[2] = &amp;quot;（KB&amp;quot; .. getStrFromNumber(0 - jsonSkill.cost) .. &amp;quot;）： &amp;quot;;&lt;br /&gt;
    else skillDes[2] = &amp;quot;: &amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if jsonSkill.description then skillDes[3] = jsonSkill.description;&lt;br /&gt;
    else&lt;br /&gt;
        local i = 2;&lt;br /&gt;
        if jsonSkill.condition then&lt;br /&gt;
            skillDes[2] = skillDes[2] .. &amp;quot;当&amp;quot; .. readCondition(jsonSkill.condition) .. &amp;quot;生效：&amp;quot;;&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        for _i, v in ipairs(jsonSkill.actionList) do&lt;br /&gt;
            i = i + 1;&lt;br /&gt;
            if _i ~= 1 then skillDes[i] = &amp;quot;；&amp;quot;;i = i + 1;end&lt;br /&gt;
            &lt;br /&gt;
            if v.description then skillDes[i] = v.description;&lt;br /&gt;
            elseif v.type == &amp;quot;addCard&amp;quot; then&lt;br /&gt;
                skillDes[i] = readSelector(v.selector,&amp;quot;选中自身&amp;quot;);&lt;br /&gt;
                i = i + 1;&lt;br /&gt;
                skillDes[i] = &amp;quot;，向手牌里加入&amp;quot;&lt;br /&gt;
                for _i2, v2 in ipairs(v.cards) do&lt;br /&gt;
                    if _i2 ~= 1 then skillDes[i] = &amp;quot;、&amp;quot;;i = i + 1;end&lt;br /&gt;
&lt;br /&gt;
                    i = i + 1;&lt;br /&gt;
                    if v2.privateID then skillDes[i] = (v2.amount or 1) .. &amp;quot;张 &amp;quot; .. originalJson[v2.privateID].name&lt;br /&gt;
                    else error(&amp;quot;剩下的分支没写好！&amp;quot;)&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
            elseif v.type == &amp;quot;buff&amp;quot; then&lt;br /&gt;
                skillDes[i] = readSelector(v.selector,&amp;quot;选中自身&amp;quot;);&lt;br /&gt;
                i = i + 1;&lt;br /&gt;
                skillDes[i] = &amp;quot;，使其&amp;quot;&lt;br /&gt;
                i = i + 1;&lt;br /&gt;
                skillDes[i] = buffTypeNameList[v.name] or v.name or &amp;quot;???&amp;quot;;&lt;br /&gt;
                i = i + 1;&lt;br /&gt;
                skillDes[i] = &amp;quot;属性&amp;quot;;&lt;br /&gt;
                i = i + 1;&lt;br /&gt;
                skillDes[i] = getStrFromOpAndValue(v.operator,v.value);&lt;br /&gt;
                if v.duration then&lt;br /&gt;
                    i = i + 1;&lt;br /&gt;
                    skillDes[i] = &amp;quot;，持续&amp;quot;;&lt;br /&gt;
                    i = i + 1;&lt;br /&gt;
                    skillDes[i] = tostring(v.duration);&lt;br /&gt;
                    i = i + 1;&lt;br /&gt;
                    skillDes[i] = &amp;quot;回合&amp;quot;;&lt;br /&gt;
                end&lt;br /&gt;
            elseif v.type == &amp;quot;action&amp;quot; then&lt;br /&gt;
                if v.before then&lt;br /&gt;
                    skillDes[i] = &amp;quot;等待&amp;quot;;&lt;br /&gt;
                    i = i + 1;&lt;br /&gt;
                    skillDes[i] = tostring(v.before);&lt;br /&gt;
                    i = i + 1;&lt;br /&gt;
                    skillDes[i] = &amp;quot;回合后，&amp;quot;;&lt;br /&gt;
                    i = i + 1;&lt;br /&gt;
                end&lt;br /&gt;
                skillDes[i] = readSelector(v.selector,&amp;quot;选中自身&amp;quot;);&lt;br /&gt;
                i = i + 1;&lt;br /&gt;
                skillDes[i] = &amp;quot;，&amp;quot;&lt;br /&gt;
                i = i + 1;&lt;br /&gt;
                skillDes[i] = action2TypeNameList[v.name] or v.name or &amp;quot;???&amp;quot;&lt;br /&gt;
                i = i + 1;&lt;br /&gt;
                skillDes[i] = &amp;quot;卡牌&amp;quot;&lt;br /&gt;
            elseif v.type == &amp;quot;addKB&amp;quot; then&lt;br /&gt;
                skillDes[i] = readSelector(v.selector,&amp;quot;选中自身&amp;quot;);&lt;br /&gt;
                i = i + 1;&lt;br /&gt;
                skillDes[i] = &amp;quot;，&amp;quot;&lt;br /&gt;
                i = i + 1;&lt;br /&gt;
                skillDes[i] = getStrFromNumber(v.value)&lt;br /&gt;
                i = i + 1;&lt;br /&gt;
                skillDes[i] = &amp;quot;KB&amp;quot;&lt;br /&gt;
            else skillDes[i] = &amp;quot;未知行为: &amp;quot; .. mw.dumpObject(v);&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        i = i + 1;&lt;br /&gt;
        skillDes[i] = &amp;quot;。&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
     return table.concat(skillDes);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local cardTypeList = {&lt;br /&gt;
    C = function (json,isWhims)&lt;br /&gt;
        local list = {};&lt;br /&gt;
        list[1] = json.name;&lt;br /&gt;
        list[2] = json.EP;&lt;br /&gt;
        list[3] = json.BP;&lt;br /&gt;
        list[4] = json.KB;&lt;br /&gt;
        list[5] = isWhims and &amp;quot;异想之物&amp;quot; or &amp;quot;？？？&amp;quot;;&lt;br /&gt;
        list[6] = levelNameList[json.level];&lt;br /&gt;
     -- list[7] = &amp;quot;Ability&amp;quot;;&lt;br /&gt;
        list[8] = &amp;quot;???援助角色&amp;quot;;&lt;br /&gt;
        list[9] = &amp;quot;未知编号&amp;quot;;&lt;br /&gt;
        list[10] = json.description or &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        local skills = {};&lt;br /&gt;
        for index, v in ipairs(json.skills) do&lt;br /&gt;
            skills[index] = readSkill(v);&lt;br /&gt;
        end&lt;br /&gt;
        list[7] = table.concat(skills,&amp;quot;\n\n&amp;quot;);&lt;br /&gt;
        return frame:expandTemplate{title = &amp;quot;PD-ChaC&amp;quot;,args = list}&lt;br /&gt;
    end,--&amp;quot;角色卡&amp;quot;&lt;br /&gt;
    L = &amp;quot;置物卡&amp;quot;,&lt;br /&gt;
    A = &amp;quot;行动卡&amp;quot;,&lt;br /&gt;
    T = &amp;quot;反击卡&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function makeTable(json)&lt;br /&gt;
    local func = cardTypeList[json.type];&lt;br /&gt;
    &lt;br /&gt;
    if func then return func(json,false);&lt;br /&gt;
    else func = cardTypeList[string.sub(json.type,1,1)];return func(json,true);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._initTableFromName(args)&lt;br /&gt;
    frame = mw.getCurrentFrame();&lt;br /&gt;
    local pageName = args[1];&lt;br /&gt;
    local json = mw.loadJsonData(args[1])&lt;br /&gt;
    local limit = type(args[2]) == &amp;quot;string&amp;quot;&lt;br /&gt;
    originalJson = json;&lt;br /&gt;
    if json[&amp;quot;name&amp;quot;] then&lt;br /&gt;
        return makeTable(json)&lt;br /&gt;
    elseif limit then local str = &amp;quot;&amp;quot;;&lt;br /&gt;
        for _, v in ipairs(json) do&lt;br /&gt;
            if v.type == limit or v.type == (limit .. &amp;quot;W&amp;quot;) then str = str .. makeTable(v) .. &amp;quot;\n\n&amp;quot;; end&lt;br /&gt;
        end&lt;br /&gt;
        return str;&lt;br /&gt;
    else local str = &amp;quot;&amp;quot;;&lt;br /&gt;
        for _, v in ipairs(json) do&lt;br /&gt;
            str = str .. makeTable(v) .. &amp;quot;\n\n&amp;quot;;&lt;br /&gt;
        end&lt;br /&gt;
        return str;&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p;&lt;/div&gt;</summary>
		<author><name>Staf Irity</name></author>
	</entry>
</feed>