<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[Little Fighter Empire - Forums - Tutorials]]></title>
		<link>https://lf-empire.de/forum/</link>
		<description><![CDATA[Little Fighter Empire - Forums - https://lf-empire.de/forum]]></description>
		<pubDate>Thu, 07 May 2026 14:30:24 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[Comprehensive Guide of ItrKind:1 & ItrKind:3..?     Secret Tech of Catchment.]]></title>
			<link>https://lf-empire.de/forum/showthread.php?tid=11219</link>
			<pubDate>Fri, 11 Feb 2022 09:25:14 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://lf-empire.de/forum/member.php?action=profile&uid=6253">Mesujin</a>]]></dc:creator>
			<guid isPermaLink="false">https://lf-empire.de/forum/showthread.php?tid=11219</guid>
			<description><![CDATA[(Bad english ;')(Would be happy if u would repost this post with better phrase/the better way of explaining.)<br />
<br />
<div class="tborder spoiler"><div class="spoiler_header"><span style="color: #cccccc;" class="mycode_color"><span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Basic Description</span></span></span> <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
• <span style="color: #cccccc;" class="mycode_color">ItrKind:1 (ik1)</span><br />
<span style="font-family: consolas;" class="mycode_font">kind:1</span> in <span style="font-family: consolas;" class="mycode_font">itr:</span> tag are used in the game to 'catch' an object that has <span style="font-family: consolas;" class="mycode_font">state:16</span> in it's current frame.<br />
{ik1 can only be activated by <span style="font-family: consolas;" class="mycode_font">type:0</span> that pressing &gt; or &lt; button}<br />
<br />
Once the <span style="font-family: consolas;" class="mycode_font">itr</span> are success, the 'catcher' will "transform" it's current frame into the number that being preferred by <span style="font-family: consolas;" class="mycode_font">catchingact:% %</span> in 'catcher''s data, while the object that being 'caught' will "transform" it's current frame into the number that being preferred by <span style="font-family: consolas;" class="mycode_font">caughtact:% %</span> in 'catcher''s data.<br />
Then, the 'catcher' may control the 'caught' object using <span style="font-family: consolas;" class="mycode_font">cpoint:</span> tag that immediately start working/immediately working after the "frame transformation" by the ik1.<br />
<br />
("%" meaning a certain value / variable, usually i use this because it's way more noticeable than "x".)<br />
(Not sure why there's a double value that being used for both <span style="font-family: consolas;" class="mycode_font">catchingact:</span> and <span style="font-family: consolas;" class="mycode_font">caughtact:</span>.)<br />
<br />
• <span style="color: #cccccc;" class="mycode_color">ItrKind:3 (ik3)</span><br />
<span style="font-family: consolas;" class="mycode_font">kind:1</span> in <span style="font-family: consolas;" class="mycode_font">itr:</span> tag are used in the game to 'catch' a <span style="font-family: consolas;" class="mycode_font">type:0</span> object.. is it works for <span style="font-family: consolas;" class="mycode_font">type:5</span> too?<br />
<br />
Just same like ik1, once the <span style="font-family: consolas;" class="mycode_font">itr</span> are success, the 'catcher' will "transform" it's current frame into the number that being preferred by <span style="font-family: consolas;" class="mycode_font">catchingact:% %</span> in 'catcher''s data, while the object that being 'caught' will "transform" it's current frame into the number that being preferred by <span style="font-family: consolas;" class="mycode_font">caughtact:% %</span> in 'catcher''s data.<br />
Then, the 'catcher' may control the 'caught' object using <span style="font-family: consolas;" class="mycode_font">cpoint:</span> tag that immediately start working/immediately working after the "frame transformation" by the ik3.<br />
<br />
(The "frame transformation" of the ik1 and ik3 is the "frame transformation lv4".)<br />
(The "frame transformation" of the <span style="font-family: consolas;" class="mycode_font">cpoint:</span> is same like <span style="font-family: consolas;" class="mycode_font">wpoint:</span>'s "frame transformation" which is "frame transformation lv5" which are the weakest "frame transformation".)<br />
<br />
• <span style="color: #cccccc;" class="mycode_color">Cpoint: tag</span><br />
<span style="font-family: consolas;" class="mycode_font">cpoint:</span> is a feature that allow an object to control other object after successfully being 'catch' by ik1 or ik3.<br />
<br />
I don't think i need to explain much about cpoint:..<br />
(Basic description about cpoint:; <a href="https://lf-empire.de/lf2-empire/data-changing/frame-elements/177-cpoint-catch-point" target="_blank" rel="noopener" class="mycode_url">https://lf-empire.de/lf2-empire/data-cha...atch-point</a>)<br />
<br />
But! It doesn't explain anything about CpointKind:0 right?!<br />
<br />
Cpoint actually always exist in any frame even if you don't insert Cpoint: in a frame. The default value of Cpoint is<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;DC-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="dc" style="font-family&#58;monospace;"><span style="color&#58; #008040; font-weight&#58; bold;">cpoint&#58;</span> <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span> <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span> <span style="color&#58; #800000; font-weight&#58; bold;">vaction&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span> <span style="color&#58; #008040; font-weight&#58; bold;">cpoint&#95;end&#58;</span></pre></code></div></div>
		</td></tr></table><br />
Another value also valued 0 by default.<br />
The basic function of CpointKind:0 is to allow you to end the catch. Technically there's CpointKind:0 in injured or falling frame by default you know.. that's why the catch of your character will ends if your character cast a skill or being injured.<br />
<hr class="mycode_hr" />
"But why the enemy doesn't dropped in frame0 since the vaction: are 0?"<br />
Because the caught object use CpointKind:2 in it's frame which will hijack the dropped frame.<br />
<hr class="mycode_hr" />
When the CpointKind:0 are used by the caught object, it'll ends the catch too, the catcher will goto frame0 (if the catcher using CpointKind:1) while the caught object will continue with it's next:.</div></div><div class="tborder spoiler"><div class="spoiler_header"><span style="color: #cccccc;" class="mycode_color"><span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Cpoint's Recall</span></span></span> <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
Actually I prefer to call it "ik3's recall" but.. well.. "cpoint's recall" is more relevant.<br />
<br />
If you know, there's a variable in AI, named <span style="color: #FF857A;" class="mycode_color">ctimer</span>, idk why it's being named as "timer" even tho it doesn't count anything {I think the address was messed up, it shouldn't be "ctimer" right?}. Instead of works as a "timer", it's actually an ObjNum of the thing that recently catch your character/an object.<br />
<br />
Cpoint's recall is a bug that when you using a Cpoint with kind:1 that followed with throwx, throwy, and throwy was ≠ 0, the last catched object in <span style="color: #FF857A;" class="mycode_color">ctimer</span> will be totally forced to move/teleport to the preferred location and frame in that Cpoint.<br />
The only problem is.. if the last caught ObjNum were being caught by other ObjNum/the number changed, the .exe will stopped working, which is it's the big flaw of this tech.<br />
<br />
Except from that flaw, the only flaw is this tech won't applying/affecting the Called ObjNum's Z-axis and must be affected by throwxyz.<br />
<br />
Anyway, the function of this tech are kind like ik8 but instead of doesn't affecting the Y-axis, this tech won't affecting the Z-axis...<br />
<br />
Study Example... hmm... this tech are quite risky if it being used for a single Mod...<br />
<br />
<div class="tborder spoiler"><div class="spoiler_header">I thought these videos could show enough about the Cpoint's Recall.. <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
<iframe width="560" height="315" src="https://www.youtube.com/embed/OxtyDzfhvyE" frameborder="0" allowfullscreen></iframe><iframe width="560" height="315" src="https://www.youtube.com/embed/PwjzE1QDAcg" frameborder="0" allowfullscreen></iframe><iframe width="560" height="315" src="https://www.youtube.com/embed/gxNvpcuV218" frameborder="0" allowfullscreen></iframe></div></div></div></div><div class="tborder spoiler"><div class="spoiler_header"><span style="color: #cccccc;" class="mycode_color"><span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">End up Position of ItrKind:1 And ItrKind:3 Control</span></span></span> <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
By using these steps, the end up position of ik1 and ik3 should be changed into "<span style="font-family: consolas;" class="mycode_font">(catcher.x + caught.x)/2</span>".<br />
Do note that the <span style="font-family: consolas;" class="mycode_font">cpoint:</span> of the caught object is like this. (Ofc you can adjust the value to Control the postion.)<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;DC-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="dc" style="font-family&#58;monospace;"><span style="color&#58; #008040; font-weight&#58; bold;">cpoint&#58;</span> <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">2</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span class="br0">&#40;</span>€<span class="br0">&#41;</span> <span style="color&#58; #008040; font-weight&#58; bold;">cpoint&#95;end&#58;</span>
&nbsp;
<span style="color&#58; #777777;">#&#40;€ was the centerx&#58;&#46;&#41;&#40;Another value can use any value as you wish&#46;&#41;</span></pre></code></div></div>
		</td></tr></table><br />
== <span style="color: #cccccc;" class="mycode_color">ItrKind:3 (ik3)</span> ==<br />
• Consider the value(named <span style="font-family: consolas;" class="mycode_font">%</span>) as the frame that will be sacrificed. Let's say % is <span style="font-family: consolas;" class="mycode_font">399</span>.... means frame399 will be sacrificed.<br />
• Set every <span style="font-family: consolas;" class="mycode_font">caughtact:</span> that use ik3 in Catcher's data into <span style="font-family: consolas;" class="mycode_font">%</span>.<br />
• Add frame% in the Catcher's data a <br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;DC-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="dc" style="font-family&#58;monospace;"><span style="color&#58; #008040; font-weight&#58; bold;">cpoint&#58;</span> <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span class="br0">&#40;</span>€ - <span style="color&#58; #000000; font-weight&#58; bold;">43</span><span class="br0">&#41;</span> <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span class="br0">&#40;</span>£<span class="br0">&#41;</span> <span style="color&#58; #008040; font-weight&#58; bold;">cpoint&#95;end&#58;</span>
&nbsp;
<span style="color&#58; #777777;">#&#40;€ was the centerx&#58; of frame% while £ was the centery&#58; of frame%&#46;&#41;</span></pre></code></div></div>
		</td></tr></table><br />
Done. *You can adjust that <span style="font-family: consolas;" class="mycode_font">43</span> in the cpoint to get into more advanced with this.<br />
{For example change the value into <span style="font-family: consolas;" class="mycode_font">(€ - 45)</span> for an object that will catch yourself(your char) and you won't move/got a shift from your position}<br />
<br />
== <span style="color: #cccccc;" class="mycode_color">ItrKind:1 (ik1)</span> ==<br />
• Consider the value(named <span style="font-family: consolas;" class="mycode_font">%</span>) as the frame that will be sacrificed. Let's say <span style="font-family: consolas;" class="mycode_font">%</span> is <span style="font-family: consolas;" class="mycode_font">398</span>.... means frame398 will be sacrificed.<br />
{you can also set it on frame399 (a same frame with ik3 fixer) but the magical value will be changed significantly}<br />
• Set every <span style="font-family: consolas;" class="mycode_font">caughtact:</span> that use ik1 in Catcher's data into <span style="font-family: consolas;" class="mycode_font">%</span>.<br />
• Set <span style="font-family: consolas;" class="mycode_font">x:</span> value in the <span style="font-family: consolas;" class="mycode_font">cpoint:</span> in the frame that being referred from every <span style="font-family: consolas;" class="mycode_font">catchingact:</span> that use ik1 into €. € was the value of <span style="font-family: consolas;" class="mycode_font">centerx:</span> of the frame.<br />
• Add frame% in the Catcher's data a <br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;DC-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="dc" style="font-family&#58;monospace;"><span style="color&#58; #008040; font-weight&#58; bold;">cpoint&#58;</span> <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span class="br0">&#40;</span>€ + <span style="color&#58; #000000; font-weight&#58; bold;">1</span><span class="br0">&#41;</span> <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span class="br0">&#40;</span>£<span class="br0">&#41;</span> <span style="color&#58; #008040; font-weight&#58; bold;">cpoint&#95;end&#58;</span>
&nbsp;
<span style="color&#58; #777777;">#&#40;€ was the centerx&#58; of frame% while £ was the centery&#58; of frame%&#46;&#41;</span></pre></code></div></div>
		</td></tr></table><br />
Done, but if you want both fixer are works, then you need change something in the steps of ik1;<br />
• Set <span style="font-family: consolas;" class="mycode_font">x:</span> value in the <span style="font-family: consolas;" class="mycode_font">cpoint:</span> in the frame that being referred from every <span style="font-family: consolas;" class="mycode_font">catchingact:</span> that use ik1 into <span style="font-family: consolas;" class="mycode_font">(€ - 40)</span>. € was the value of <span style="font-family: consolas;" class="mycode_font">centerx:</span> of the frame.<br />
• Add frame% in the Catcher's data a <br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;DC-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="dc" style="font-family&#58;monospace;"><span style="color&#58; #008040; font-weight&#58; bold;">cpoint&#58;</span> <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span class="br0">&#40;</span>€ - <span style="color&#58; #000000; font-weight&#58; bold;">43</span><span class="br0">&#41;</span> <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span class="br0">&#40;</span>£<span class="br0">&#41;</span> <span style="color&#58; #008040; font-weight&#58; bold;">cpoint&#95;end&#58;</span>
&nbsp;
<span style="color&#58; #777777;">#&#40;€ was the centerx&#58; of frame% while £ was the centery&#58; of frame%&#46;&#41;</span></pre></code></div></div>
		</td></tr></table></div></div>]]></description>
			<content:encoded><![CDATA[(Bad english ;')(Would be happy if u would repost this post with better phrase/the better way of explaining.)<br />
<br />
<div class="tborder spoiler"><div class="spoiler_header"><span style="color: #cccccc;" class="mycode_color"><span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Basic Description</span></span></span> <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
• <span style="color: #cccccc;" class="mycode_color">ItrKind:1 (ik1)</span><br />
<span style="font-family: consolas;" class="mycode_font">kind:1</span> in <span style="font-family: consolas;" class="mycode_font">itr:</span> tag are used in the game to 'catch' an object that has <span style="font-family: consolas;" class="mycode_font">state:16</span> in it's current frame.<br />
{ik1 can only be activated by <span style="font-family: consolas;" class="mycode_font">type:0</span> that pressing &gt; or &lt; button}<br />
<br />
Once the <span style="font-family: consolas;" class="mycode_font">itr</span> are success, the 'catcher' will "transform" it's current frame into the number that being preferred by <span style="font-family: consolas;" class="mycode_font">catchingact:% %</span> in 'catcher''s data, while the object that being 'caught' will "transform" it's current frame into the number that being preferred by <span style="font-family: consolas;" class="mycode_font">caughtact:% %</span> in 'catcher''s data.<br />
Then, the 'catcher' may control the 'caught' object using <span style="font-family: consolas;" class="mycode_font">cpoint:</span> tag that immediately start working/immediately working after the "frame transformation" by the ik1.<br />
<br />
("%" meaning a certain value / variable, usually i use this because it's way more noticeable than "x".)<br />
(Not sure why there's a double value that being used for both <span style="font-family: consolas;" class="mycode_font">catchingact:</span> and <span style="font-family: consolas;" class="mycode_font">caughtact:</span>.)<br />
<br />
• <span style="color: #cccccc;" class="mycode_color">ItrKind:3 (ik3)</span><br />
<span style="font-family: consolas;" class="mycode_font">kind:1</span> in <span style="font-family: consolas;" class="mycode_font">itr:</span> tag are used in the game to 'catch' a <span style="font-family: consolas;" class="mycode_font">type:0</span> object.. is it works for <span style="font-family: consolas;" class="mycode_font">type:5</span> too?<br />
<br />
Just same like ik1, once the <span style="font-family: consolas;" class="mycode_font">itr</span> are success, the 'catcher' will "transform" it's current frame into the number that being preferred by <span style="font-family: consolas;" class="mycode_font">catchingact:% %</span> in 'catcher''s data, while the object that being 'caught' will "transform" it's current frame into the number that being preferred by <span style="font-family: consolas;" class="mycode_font">caughtact:% %</span> in 'catcher''s data.<br />
Then, the 'catcher' may control the 'caught' object using <span style="font-family: consolas;" class="mycode_font">cpoint:</span> tag that immediately start working/immediately working after the "frame transformation" by the ik3.<br />
<br />
(The "frame transformation" of the ik1 and ik3 is the "frame transformation lv4".)<br />
(The "frame transformation" of the <span style="font-family: consolas;" class="mycode_font">cpoint:</span> is same like <span style="font-family: consolas;" class="mycode_font">wpoint:</span>'s "frame transformation" which is "frame transformation lv5" which are the weakest "frame transformation".)<br />
<br />
• <span style="color: #cccccc;" class="mycode_color">Cpoint: tag</span><br />
<span style="font-family: consolas;" class="mycode_font">cpoint:</span> is a feature that allow an object to control other object after successfully being 'catch' by ik1 or ik3.<br />
<br />
I don't think i need to explain much about cpoint:..<br />
(Basic description about cpoint:; <a href="https://lf-empire.de/lf2-empire/data-changing/frame-elements/177-cpoint-catch-point" target="_blank" rel="noopener" class="mycode_url">https://lf-empire.de/lf2-empire/data-cha...atch-point</a>)<br />
<br />
But! It doesn't explain anything about CpointKind:0 right?!<br />
<br />
Cpoint actually always exist in any frame even if you don't insert Cpoint: in a frame. The default value of Cpoint is<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;DC-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="dc" style="font-family&#58;monospace;"><span style="color&#58; #008040; font-weight&#58; bold;">cpoint&#58;</span> <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span> <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span> <span style="color&#58; #800000; font-weight&#58; bold;">vaction&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span> <span style="color&#58; #008040; font-weight&#58; bold;">cpoint&#95;end&#58;</span></pre></code></div></div>
		</td></tr></table><br />
Another value also valued 0 by default.<br />
The basic function of CpointKind:0 is to allow you to end the catch. Technically there's CpointKind:0 in injured or falling frame by default you know.. that's why the catch of your character will ends if your character cast a skill or being injured.<br />
<hr class="mycode_hr" />
"But why the enemy doesn't dropped in frame0 since the vaction: are 0?"<br />
Because the caught object use CpointKind:2 in it's frame which will hijack the dropped frame.<br />
<hr class="mycode_hr" />
When the CpointKind:0 are used by the caught object, it'll ends the catch too, the catcher will goto frame0 (if the catcher using CpointKind:1) while the caught object will continue with it's next:.</div></div><div class="tborder spoiler"><div class="spoiler_header"><span style="color: #cccccc;" class="mycode_color"><span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Cpoint's Recall</span></span></span> <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
Actually I prefer to call it "ik3's recall" but.. well.. "cpoint's recall" is more relevant.<br />
<br />
If you know, there's a variable in AI, named <span style="color: #FF857A;" class="mycode_color">ctimer</span>, idk why it's being named as "timer" even tho it doesn't count anything {I think the address was messed up, it shouldn't be "ctimer" right?}. Instead of works as a "timer", it's actually an ObjNum of the thing that recently catch your character/an object.<br />
<br />
Cpoint's recall is a bug that when you using a Cpoint with kind:1 that followed with throwx, throwy, and throwy was ≠ 0, the last catched object in <span style="color: #FF857A;" class="mycode_color">ctimer</span> will be totally forced to move/teleport to the preferred location and frame in that Cpoint.<br />
The only problem is.. if the last caught ObjNum were being caught by other ObjNum/the number changed, the .exe will stopped working, which is it's the big flaw of this tech.<br />
<br />
Except from that flaw, the only flaw is this tech won't applying/affecting the Called ObjNum's Z-axis and must be affected by throwxyz.<br />
<br />
Anyway, the function of this tech are kind like ik8 but instead of doesn't affecting the Y-axis, this tech won't affecting the Z-axis...<br />
<br />
Study Example... hmm... this tech are quite risky if it being used for a single Mod...<br />
<br />
<div class="tborder spoiler"><div class="spoiler_header">I thought these videos could show enough about the Cpoint's Recall.. <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
<iframe width="560" height="315" src="https://www.youtube.com/embed/OxtyDzfhvyE" frameborder="0" allowfullscreen></iframe><iframe width="560" height="315" src="https://www.youtube.com/embed/PwjzE1QDAcg" frameborder="0" allowfullscreen></iframe><iframe width="560" height="315" src="https://www.youtube.com/embed/gxNvpcuV218" frameborder="0" allowfullscreen></iframe></div></div></div></div><div class="tborder spoiler"><div class="spoiler_header"><span style="color: #cccccc;" class="mycode_color"><span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">End up Position of ItrKind:1 And ItrKind:3 Control</span></span></span> <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
By using these steps, the end up position of ik1 and ik3 should be changed into "<span style="font-family: consolas;" class="mycode_font">(catcher.x + caught.x)/2</span>".<br />
Do note that the <span style="font-family: consolas;" class="mycode_font">cpoint:</span> of the caught object is like this. (Ofc you can adjust the value to Control the postion.)<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;DC-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="dc" style="font-family&#58;monospace;"><span style="color&#58; #008040; font-weight&#58; bold;">cpoint&#58;</span> <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">2</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span class="br0">&#40;</span>€<span class="br0">&#41;</span> <span style="color&#58; #008040; font-weight&#58; bold;">cpoint&#95;end&#58;</span>
&nbsp;
<span style="color&#58; #777777;">#&#40;€ was the centerx&#58;&#46;&#41;&#40;Another value can use any value as you wish&#46;&#41;</span></pre></code></div></div>
		</td></tr></table><br />
== <span style="color: #cccccc;" class="mycode_color">ItrKind:3 (ik3)</span> ==<br />
• Consider the value(named <span style="font-family: consolas;" class="mycode_font">%</span>) as the frame that will be sacrificed. Let's say % is <span style="font-family: consolas;" class="mycode_font">399</span>.... means frame399 will be sacrificed.<br />
• Set every <span style="font-family: consolas;" class="mycode_font">caughtact:</span> that use ik3 in Catcher's data into <span style="font-family: consolas;" class="mycode_font">%</span>.<br />
• Add frame% in the Catcher's data a <br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;DC-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="dc" style="font-family&#58;monospace;"><span style="color&#58; #008040; font-weight&#58; bold;">cpoint&#58;</span> <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span class="br0">&#40;</span>€ - <span style="color&#58; #000000; font-weight&#58; bold;">43</span><span class="br0">&#41;</span> <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span class="br0">&#40;</span>£<span class="br0">&#41;</span> <span style="color&#58; #008040; font-weight&#58; bold;">cpoint&#95;end&#58;</span>
&nbsp;
<span style="color&#58; #777777;">#&#40;€ was the centerx&#58; of frame% while £ was the centery&#58; of frame%&#46;&#41;</span></pre></code></div></div>
		</td></tr></table><br />
Done. *You can adjust that <span style="font-family: consolas;" class="mycode_font">43</span> in the cpoint to get into more advanced with this.<br />
{For example change the value into <span style="font-family: consolas;" class="mycode_font">(€ - 45)</span> for an object that will catch yourself(your char) and you won't move/got a shift from your position}<br />
<br />
== <span style="color: #cccccc;" class="mycode_color">ItrKind:1 (ik1)</span> ==<br />
• Consider the value(named <span style="font-family: consolas;" class="mycode_font">%</span>) as the frame that will be sacrificed. Let's say <span style="font-family: consolas;" class="mycode_font">%</span> is <span style="font-family: consolas;" class="mycode_font">398</span>.... means frame398 will be sacrificed.<br />
{you can also set it on frame399 (a same frame with ik3 fixer) but the magical value will be changed significantly}<br />
• Set every <span style="font-family: consolas;" class="mycode_font">caughtact:</span> that use ik1 in Catcher's data into <span style="font-family: consolas;" class="mycode_font">%</span>.<br />
• Set <span style="font-family: consolas;" class="mycode_font">x:</span> value in the <span style="font-family: consolas;" class="mycode_font">cpoint:</span> in the frame that being referred from every <span style="font-family: consolas;" class="mycode_font">catchingact:</span> that use ik1 into €. € was the value of <span style="font-family: consolas;" class="mycode_font">centerx:</span> of the frame.<br />
• Add frame% in the Catcher's data a <br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;DC-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="dc" style="font-family&#58;monospace;"><span style="color&#58; #008040; font-weight&#58; bold;">cpoint&#58;</span> <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span class="br0">&#40;</span>€ + <span style="color&#58; #000000; font-weight&#58; bold;">1</span><span class="br0">&#41;</span> <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span class="br0">&#40;</span>£<span class="br0">&#41;</span> <span style="color&#58; #008040; font-weight&#58; bold;">cpoint&#95;end&#58;</span>
&nbsp;
<span style="color&#58; #777777;">#&#40;€ was the centerx&#58; of frame% while £ was the centery&#58; of frame%&#46;&#41;</span></pre></code></div></div>
		</td></tr></table><br />
Done, but if you want both fixer are works, then you need change something in the steps of ik1;<br />
• Set <span style="font-family: consolas;" class="mycode_font">x:</span> value in the <span style="font-family: consolas;" class="mycode_font">cpoint:</span> in the frame that being referred from every <span style="font-family: consolas;" class="mycode_font">catchingact:</span> that use ik1 into <span style="font-family: consolas;" class="mycode_font">(€ - 40)</span>. € was the value of <span style="font-family: consolas;" class="mycode_font">centerx:</span> of the frame.<br />
• Add frame% in the Catcher's data a <br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;DC-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="dc" style="font-family&#58;monospace;"><span style="color&#58; #008040; font-weight&#58; bold;">cpoint&#58;</span> <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span class="br0">&#40;</span>€ - <span style="color&#58; #000000; font-weight&#58; bold;">43</span><span class="br0">&#41;</span> <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span class="br0">&#40;</span>£<span class="br0">&#41;</span> <span style="color&#58; #008040; font-weight&#58; bold;">cpoint&#95;end&#58;</span>
&nbsp;
<span style="color&#58; #777777;">#&#40;€ was the centerx&#58; of frame% while £ was the centery&#58; of frame%&#46;&#41;</span></pre></code></div></div>
		</td></tr></table></div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Timed Heavy System]]></title>
			<link>https://lf-empire.de/forum/showthread.php?tid=11218</link>
			<pubDate>Fri, 17 Dec 2021 10:25:48 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://lf-empire.de/forum/member.php?action=profile&uid=6253">Mesujin</a>]]></dc:creator>
			<guid isPermaLink="false">https://lf-empire.de/forum/showthread.php?tid=11218</guid>
			<description><![CDATA[Idk if this trick/tech/.. whatever already invented somewhere but since i don't see a thread that talk about this, then lemme make it :'3<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Explanation</span></span><br />
<br />
By using the bug when an object that being held does OpointKind:2 which causing the character got stuck in his Heavy System, to then spawn an object on the stucked object that being held to destroy it whenever u wanted.<br />
<br />
In short, this trick are just spawning an object when the char pick a heavy object to enter his heavy mode, but making the picked heavy object to stuck by using Ok2.<br />
Nice, double useless explanation.<br />
<br />
Abit lazy to explain in detailed about the way to make it, so just take a look to the Study Example if you're interested.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Study Example</span></span><br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://lf-empire.de/forum/images/attachtypes/rar.gif" title="" border="0" alt=".rar" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=3652" target="_blank" title="">Study Example - Timed Heavy System.rar</a> (Size: 151.18 KB / Downloads: 186)
<!-- end: postbit_attachments_attachment --><br />
<br />
This template also including some cool skills anyway..<br />
• AJ/DJ : Full Break Punch<br />
• D &gt; A : Breaking Pulse (100 MP)<br />
• D &gt; J : Magical Pulse (150 MP)<br />
• D J A : Open Mode (500 MP)<br />
<br />
By using Open Mode, template will increase his atk spd and enchant his Full Break Punch to enter his Overwhelming Mode that allowing him to spam Breaking Pulse within 7 seconds.<br />
<br />
This template are just a result from complications of abilities in LF2ET.]]></description>
			<content:encoded><![CDATA[Idk if this trick/tech/.. whatever already invented somewhere but since i don't see a thread that talk about this, then lemme make it :'3<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Explanation</span></span><br />
<br />
By using the bug when an object that being held does OpointKind:2 which causing the character got stuck in his Heavy System, to then spawn an object on the stucked object that being held to destroy it whenever u wanted.<br />
<br />
In short, this trick are just spawning an object when the char pick a heavy object to enter his heavy mode, but making the picked heavy object to stuck by using Ok2.<br />
Nice, double useless explanation.<br />
<br />
Abit lazy to explain in detailed about the way to make it, so just take a look to the Study Example if you're interested.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Study Example</span></span><br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://lf-empire.de/forum/images/attachtypes/rar.gif" title="" border="0" alt=".rar" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=3652" target="_blank" title="">Study Example - Timed Heavy System.rar</a> (Size: 151.18 KB / Downloads: 186)
<!-- end: postbit_attachments_attachment --><br />
<br />
This template also including some cool skills anyway..<br />
• AJ/DJ : Full Break Punch<br />
• D &gt; A : Breaking Pulse (100 MP)<br />
• D &gt; J : Magical Pulse (150 MP)<br />
• D J A : Open Mode (500 MP)<br />
<br />
By using Open Mode, template will increase his atk spd and enchant his Full Break Punch to enter his Overwhelming Mode that allowing him to spam Breaking Pulse within 7 seconds.<br />
<br />
This template are just a result from complications of abilities in LF2ET.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Arest & Vrest - a comprehensive guide]]></title>
			<link>https://lf-empire.de/forum/showthread.php?tid=11217</link>
			<pubDate>Mon, 13 Dec 2021 20:14:11 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://lf-empire.de/forum/member.php?action=profile&uid=7">STM1993</a>]]></dc:creator>
			<guid isPermaLink="false">https://lf-empire.de/forum/showthread.php?tid=11217</guid>
			<description><![CDATA[This thread is about the Arest/Vrest system in LF2, as used in "itr:" tags and "Weapon_strength_list".<br />
I am compiling what is known previously, and something that was shared in Discord, plus some of my personal input.<br />
<br />
I will detail what arest &amp; vrest are individually, as well as what happens when you mix these two tags (in multiple separate itrs, in a single itr, and in wpoint).<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">Arest:</span> Attacker Rest</span></span><br />
You can only hit x1 person. The default value appears to be 4.<br />
However, arest has several complicated properties that are not commonly known.<br />
* Arest does NOT count down during attacker's hitlag(3).<br />
* Type 3 (balls) technically have 0 attacker hitlag, and so can immediately hit again upon next tu with arest: 1.<br />
* Type 0 (chars) have a minimum capped arest of 4, even if you type arest: -1.<br />
* Arest instantly resets to 0 when attacker goes to a new frame that has no itrs of any kind at all.<br />
* Arest will pick a target at <a href="https://lf-empire.de/forum/showthread.php?tid=9025" target="_blank" rel="noopener" class="mycode_url">random</a>.<br />
* For some reason, arest has a maximum x-axis range of 1000 in each direction (so from -1000 to 1000, total 2000px).<br />
<br />
To summarize the randomization if you put 2~5 arest itrs in the same frame:<br />
* <span style="font-weight: bold;" class="mycode_b">2 arests:</span> 50% / 50%<br />
* <span style="font-weight: bold;" class="mycode_b">3 arests:</span> 25% / 25% / 50%<br />
* <span style="font-weight: bold;" class="mycode_b">4 arests:</span> 12.5% / 12.5% / 25% / 50%<br />
* <span style="font-weight: bold;" class="mycode_b">5 arests:</span> 8.33% / 8.33% / 8.33% / 25% / 50%<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">Vrest:</span> Victim Rest</span></span><br />
You can hit **<span style="font-weight: bold;" class="mycode_b">up to 20</span>** objects, but not the same person again until after x time has passed.<br />
It continues to countdown during hitlag;<br />
Hence, vrest7 can be said to be equivalent to arest4 (unless you're using type 3, then v7=a7).<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Default:</span> 0 (vrest is <span style="font-style: italic;" class="mycode_i">not</span> enabled)<br />
<span style="font-weight: bold;" class="mycode_b">BlockCap:</span> 10 (if attack is blocked, the vrest inflicted is capped at 10)<br />
<span style="font-weight: bold;" class="mycode_b">Maximum:</span> 127<br />
<span style="font-weight: bold;" class="mycode_b">Fastest:</span> -1 (you get the same effect with numbers 128 to 256; vrest300 is technically vrest44)<br />
<br />
Unlike arest, it is *not* random.<br />
LF2 will always choose the 1st vrest itr from the top, and then go down the list.<br />
If a vrest hits successfully, no further vrests below it will be calculated.<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">[v+a] Vrest(itr1) + Arest(itr2):</span> Arest takes priority</span></span><br />
This tech uses 2 itrs at the same time.<br />
The order is important; the vrest being written above arest.<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;DC-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="dc" style="font-family&#58;monospace;"><span style="color&#58; #008040; font-weight&#58; bold;">itr&#58;</span> <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">22</span>  <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">5</span>  <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">58</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">64</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">12</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvy&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">12</span>  <span style="color&#58; #800000; font-weight&#58; bold;">fall&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">70</span>  <span style="color&#58; #800000; font-weight&#58; bold;">vrest&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">12</span>  <span style="color&#58; #800000; font-weight&#58; bold;">bdefend&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">60</span>  <span style="color&#58; #800000; font-weight&#58; bold;">injury&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">70</span>  <span style="color&#58; #800000; font-weight&#58; bold;">effect&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span>  <span style="color&#58; #008040; font-weight&#58; bold;">itr&#95;end&#58;</span> 
<span style="color&#58; #008040; font-weight&#58; bold;">itr&#58;</span> <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">22</span>  <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">5</span>  <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">58</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">64</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">12</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvy&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">12</span>  <span style="color&#58; #800000; font-weight&#58; bold;">fall&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">70</span>  <span style="color&#58; #800000; font-weight&#58; bold;">arest&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">9</span>  <span style="color&#58; #800000; font-weight&#58; bold;">bdefend&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">60</span>  <span style="color&#58; #800000; font-weight&#58; bold;">injury&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">70</span>  <span style="color&#58; #800000; font-weight&#58; bold;">effect&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">4</span>  <span style="color&#58; #008040; font-weight&#58; bold;">itr&#95;end&#58;</span></pre></code></div></div>
		</td></tr></table><br />
In this example, Deep's &gt;&gt;JA will hit multiple enemies at the same time as usual.<br />
However, if a ball/weapon gets thrown into Deep's sword, he will only hit the ball/weapon and not any characters his sword is attempting to cut.<br />
<br />
If you have v1+a2+v3+a4, in that order,<br />
You will randomly prioritize either a2+v3(50%), or a4(50%) only.<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">[a+v] Arest(itr1) + Vrest(itr2):</span> Both hit, but with bugs</span></span><br />
This tech also uses 2 itrs at the same time, again the order is important.<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;DC-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="dc" style="font-family&#58;monospace;"><span style="color&#58; #008040; font-weight&#58; bold;">itr&#58;</span> <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">22</span>  <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">5</span>  <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">58</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">64</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">6</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvy&#58;</span> -<span style="color&#58; #000000; font-weight&#58; bold;">4</span>  <span style="color&#58; #800000; font-weight&#58; bold;">fall&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">70</span>  <span style="color&#58; #800000; font-weight&#58; bold;">arest&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span>  <span style="color&#58; #800000; font-weight&#58; bold;">bdefend&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">16</span>  <span style="color&#58; #800000; font-weight&#58; bold;">injury&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">20</span>  <span style="color&#58; #800000; font-weight&#58; bold;">effect&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">2</span>  <span style="color&#58; #008040; font-weight&#58; bold;">itr&#95;end&#58;</span> 
<span style="color&#58; #008040; font-weight&#58; bold;">itr&#58;</span> <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">22</span>  <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">5</span>  <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">58</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">64</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">12</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvy&#58;</span> -<span style="color&#58; #000000; font-weight&#58; bold;">7</span>  <span style="color&#58; #800000; font-weight&#58; bold;">fall&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">70</span>  <span style="color&#58; #800000; font-weight&#58; bold;">vrest&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">12</span>  <span style="color&#58; #800000; font-weight&#58; bold;">bdefend&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">20</span>  <span style="color&#58; #800000; font-weight&#58; bold;">injury&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">50</span>  <span style="color&#58; #800000; font-weight&#58; bold;">effect&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span>  <span style="color&#58; #008040; font-weight&#58; bold;">itr&#95;end&#58;</span></pre></code></div></div>
		</td></tr></table><br />
In this example, the attack will hit twice at the same time; you will see 2 hitsparks.<br />
* Normally, it does 70 damage. The enemy goes into falling(not burning). You will hear burning &amp; cutting sounds.<br />
* If you use cheat engine, you'll notice that the values I used for dvx/dvy will make the enemy fly at xspeed=12 exactly, and yspeed=-7.33333.<br />
* You can bypass Louis/Knight's armor, because of the 1st arest itr inflicts effect 2.<br />
* The attack can be blocked, but will send the blocker into broken_defend since 16+20=36 which greater than 30.<br />
* You can bypass Julian's armor because the 1st arest itr inflicts bdefend 16, just enough to bypass armorclass 15. However, you will notice that Julian doesn't fly as far/high as normally, because his velocity is reduced due to the action of blocking the 1st itr, and he only takes (20/10)+50=52 damage.<br />
<br />
However, if you use this attack on multiple enemies at once, its arest behaves inconsistently.<br />
I find that it will always function properly against x1-2 enemies, but there is a chance the arest will fail to hit a 3rd enemy, and pretty much always fail to hit a 4th enemy.<br />
Hence in practice, you'd find that only 2-3 enemies take full damage, while the other enemies only take the vrest damage.<br />
<br />
This arest+vrest tech can be used to induce the <a href="https://lf-empire.de/forum/showthread.php?tid=10699" target="_blank" rel="noopener" class="mycode_url">injurybounce</a> mechanic, which happens when a character reaches fall80 and then takes another hit, confusing the game and sending the character into injury frames while receiving falling velocity.<br />
<img src="https://i.imgur.com/jXCkozc.gif" alt="[Image: jXCkozc.gif]" class="mycode_img" /><br />
<br />
This tech can also be used to consistently inflict fall80 on type 3 attacks.<br />
This is done by using itr 1[arest effect 4 fall: -70](<span style="text-decoration: underline;" class="mycode_u">set</span> fall to exactly 10) and itr2[vrest fall: 70](<span style="text-decoration: underline;" class="mycode_u">add</span> fall 70), therefore always triggering fall80.<br />
Fall80 can destroy state3005/3006, and if frame 180/186 is defined in the type 3, it will be sent to those frames(based on direction hit) instead of frame20/30.<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">[a%v-1] Arest + Vrest:</span> Within the same itr</span></span><br />
Credits go to <DVZ_ME#0> for sharing this tech on Discord and giving its name.<br />
So it turns out that you can actually put both arest and vrest tags <span style="font-weight: bold;" class="mycode_b">in the same itr</span>.<br />
Normally, this is pretty pointless since the vrest would sort of override the arest.<br />
The trick is to use vrest: -1.<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;DC-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="dc" style="font-family&#58;monospace;"><span style="color&#58; #008040; font-weight&#58; bold;">itr&#58;</span> <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">22</span>  <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">5</span>  <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">58</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">64</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">12</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvy&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">fall&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">70</span>  <span style="color&#58; #800000; font-weight&#58; bold;">arest&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span>  <span style="color&#58; #800000; font-weight&#58; bold;">vrest&#58;</span> -<span style="color&#58; #000000; font-weight&#58; bold;">1</span>  <span style="color&#58; #800000; font-weight&#58; bold;">bdefend&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">30</span>  <span style="color&#58; #800000; font-weight&#58; bold;">injury&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">100</span>  <span style="color&#58; #800000; font-weight&#58; bold;">effect&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span>  <span style="color&#58; #008040; font-weight&#58; bold;">itr&#95;end&#58;</span></pre></code></div></div>
		</td></tr></table><br />
The order is <span style="font-style: italic;" class="mycode_i">not</span> important in this case, what matters is that you have both tags written in same itr.<br />
<br />
In summary, it gives you an arest with vrest properties, by shorting out the rest values.<br />
* You can hit multiple enemies at once, like vrest.<br />
* However, you cannot hit any further enemies/objects during hitlag, just like arest.<br />
* You can define the rest period via the "arest" tag, its <span style="font-weight: bold;" class="mycode_b">minimum value is 1</span> instead of 4!<br />
* It is <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">not</span></span> random.<br />
<br />
This tech is useful if you want to say, buff John's super_punch to hit multiple enemies at once, but not cause him to hit the weapon that the enemies might be holding.<br />
This can also be used to replace the normal arest for the a+v tech mentioned above, which largely solves the lack of consistency problem when hitting more than 2 enemies.<br />
<br />
However, this tech has a few important caveats:<br />
(1) If the enemy has more than 1 bdy, and the itr overlaps both of those bdys, it will hit that same enemy multiple times.<br />
(2) This attack can only hit up to 20 times (same as vrest).<br />
(3) The itr will prioritize enemies lower on the object memory list.<br />
<br />
#1 is a very big problem if you intend to use this tech in original LF2, because it will appear to cause random x2~3 damage/fall etc when hitting enemies in certain frames. Therefore, this trick is only recommended for full mods that intend to standardize everyone to have only x1 bdy.<br />
<br />
#2 and #3 are more relevant if you intend to use multiple a%v-1 itrs or enjoy large Battles.<br />
Suppose you use x3 of such itrs, and you(Player 1) are attacking Players 2,3,4, who have x5 bdy each.<br />
* You will ALWAYS hit Player 2 a total of 3x5=15 times.<br />
* You will ALWAYS hit Player 3 a total of 5 times.<br />
* You will NEVER hit Player 4.<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">Itr Kind 5 + Wpoint:</span> Attacking(Weapon_Strength_List)</span></span><br />
Incidentally, ik5+wpoint also have some arest/vrest related magic.<br />
(1) weaponStrength[vrest], ik5[arest]; original lf2 weapons.<br />
(2) weaponStrength[vrest], ik5[vrest]; basically normal vrest.<br />
(3) weaponStrength[arest], ik5[arest]; basically normal arest.<br />
(4) weaponStrength[arest], ik5[vrest]; actually the same as a%v-1 tech.<br />
<br />
#1 is what you see in original LF2 weapons.<br />
Notice that if you swing a weapon at multiple enemies, they will fall over one by one instead of altogether at once like in a normal vrest(#2).<br />
Therefore, v%a-1 *<span style="font-style: italic;" class="mycode_i">technically</span>* exists in LF2, but as far as I know, it is only available through weapons, and appears to be a pretty impractical tech when proper vrest and a%v-1 tech exists.<br />
<br />
#4 while you cannot directly put a%v-1 tech into weaponStrength, you can get the exact same results by putting vrest ik5 in the weapon's on_hand frames, and then using an attack value from the weapon_strength_list that uses arest.<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="text-decoration: underline;" class="mycode_u">Can I mix a%v-1 with arest/vrest?</span></span><br />
a%v-1 + arest (both orders) behaves pretty randomly, I do not recommend it.<br />
That being said, in my tests, arest + a%v-1 in that order <span style="font-style: italic;" class="mycode_i">seemed</span> to have better success in hitting multiple enemies(around 2-3) to get hit than a%v-1 + arest in that order. I would advise messing around to get better sample data for your needs.<br />
<br />
a%v-1 + vrest (in that order) as advised is a good alternative for arest+vrest, but beware the more than 1 bdy problem.<br />
<br />
vrest + a%v-1 (in that order) will always prioritize vrest first. However, I also do not recommend this; on testing with vrest(itr effect 4)+a%v-1(normal), I find that if you hit a weapon/ball, it will actually short the vrest, causing you to be able to double-hit enemies.<br />
<br />
Overall, it seems the most suitable applications for a%v-1 are:<br />
a) Making an attack hit up to x20 enemies in an instant, but not during hitlag.<br />
b) Making an attack that needs to perform up to x20 simultaneous hit on the exact same target.<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">[v-1v%] Vrest(-1)(itr1) + Vrest(itr2):</span></span></span><br />
After everything above, it turns out Arest+Vrest and [a%v-1]+Vrest is a bit obsolete for the purposes of simultaneous hits.<br />
Just use vrest: -1 and vrest: %.<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">Other Notes:</span></span></span><br />
This tech is not exclusive to kind 0; it can be used for other kinds itr kind 3(catch)/8(healball).<br />
I have managed to use x4 itr kind 4 + x1 itr kind 1 and 4 bdys to make it such that ik1 always grabs the person with the lowest object number instead of attempting to catch everyone.<br />
Feel free to experiment and find more possible practical uses.]]></description>
			<content:encoded><![CDATA[This thread is about the Arest/Vrest system in LF2, as used in "itr:" tags and "Weapon_strength_list".<br />
I am compiling what is known previously, and something that was shared in Discord, plus some of my personal input.<br />
<br />
I will detail what arest &amp; vrest are individually, as well as what happens when you mix these two tags (in multiple separate itrs, in a single itr, and in wpoint).<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">Arest:</span> Attacker Rest</span></span><br />
You can only hit x1 person. The default value appears to be 4.<br />
However, arest has several complicated properties that are not commonly known.<br />
* Arest does NOT count down during attacker's hitlag(3).<br />
* Type 3 (balls) technically have 0 attacker hitlag, and so can immediately hit again upon next tu with arest: 1.<br />
* Type 0 (chars) have a minimum capped arest of 4, even if you type arest: -1.<br />
* Arest instantly resets to 0 when attacker goes to a new frame that has no itrs of any kind at all.<br />
* Arest will pick a target at <a href="https://lf-empire.de/forum/showthread.php?tid=9025" target="_blank" rel="noopener" class="mycode_url">random</a>.<br />
* For some reason, arest has a maximum x-axis range of 1000 in each direction (so from -1000 to 1000, total 2000px).<br />
<br />
To summarize the randomization if you put 2~5 arest itrs in the same frame:<br />
* <span style="font-weight: bold;" class="mycode_b">2 arests:</span> 50% / 50%<br />
* <span style="font-weight: bold;" class="mycode_b">3 arests:</span> 25% / 25% / 50%<br />
* <span style="font-weight: bold;" class="mycode_b">4 arests:</span> 12.5% / 12.5% / 25% / 50%<br />
* <span style="font-weight: bold;" class="mycode_b">5 arests:</span> 8.33% / 8.33% / 8.33% / 25% / 50%<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">Vrest:</span> Victim Rest</span></span><br />
You can hit **<span style="font-weight: bold;" class="mycode_b">up to 20</span>** objects, but not the same person again until after x time has passed.<br />
It continues to countdown during hitlag;<br />
Hence, vrest7 can be said to be equivalent to arest4 (unless you're using type 3, then v7=a7).<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Default:</span> 0 (vrest is <span style="font-style: italic;" class="mycode_i">not</span> enabled)<br />
<span style="font-weight: bold;" class="mycode_b">BlockCap:</span> 10 (if attack is blocked, the vrest inflicted is capped at 10)<br />
<span style="font-weight: bold;" class="mycode_b">Maximum:</span> 127<br />
<span style="font-weight: bold;" class="mycode_b">Fastest:</span> -1 (you get the same effect with numbers 128 to 256; vrest300 is technically vrest44)<br />
<br />
Unlike arest, it is *not* random.<br />
LF2 will always choose the 1st vrest itr from the top, and then go down the list.<br />
If a vrest hits successfully, no further vrests below it will be calculated.<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">[v+a] Vrest(itr1) + Arest(itr2):</span> Arest takes priority</span></span><br />
This tech uses 2 itrs at the same time.<br />
The order is important; the vrest being written above arest.<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;DC-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="dc" style="font-family&#58;monospace;"><span style="color&#58; #008040; font-weight&#58; bold;">itr&#58;</span> <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">22</span>  <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">5</span>  <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">58</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">64</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">12</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvy&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">12</span>  <span style="color&#58; #800000; font-weight&#58; bold;">fall&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">70</span>  <span style="color&#58; #800000; font-weight&#58; bold;">vrest&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">12</span>  <span style="color&#58; #800000; font-weight&#58; bold;">bdefend&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">60</span>  <span style="color&#58; #800000; font-weight&#58; bold;">injury&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">70</span>  <span style="color&#58; #800000; font-weight&#58; bold;">effect&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span>  <span style="color&#58; #008040; font-weight&#58; bold;">itr&#95;end&#58;</span> 
<span style="color&#58; #008040; font-weight&#58; bold;">itr&#58;</span> <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">22</span>  <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">5</span>  <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">58</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">64</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">12</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvy&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">12</span>  <span style="color&#58; #800000; font-weight&#58; bold;">fall&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">70</span>  <span style="color&#58; #800000; font-weight&#58; bold;">arest&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">9</span>  <span style="color&#58; #800000; font-weight&#58; bold;">bdefend&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">60</span>  <span style="color&#58; #800000; font-weight&#58; bold;">injury&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">70</span>  <span style="color&#58; #800000; font-weight&#58; bold;">effect&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">4</span>  <span style="color&#58; #008040; font-weight&#58; bold;">itr&#95;end&#58;</span></pre></code></div></div>
		</td></tr></table><br />
In this example, Deep's &gt;&gt;JA will hit multiple enemies at the same time as usual.<br />
However, if a ball/weapon gets thrown into Deep's sword, he will only hit the ball/weapon and not any characters his sword is attempting to cut.<br />
<br />
If you have v1+a2+v3+a4, in that order,<br />
You will randomly prioritize either a2+v3(50%), or a4(50%) only.<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">[a+v] Arest(itr1) + Vrest(itr2):</span> Both hit, but with bugs</span></span><br />
This tech also uses 2 itrs at the same time, again the order is important.<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;DC-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="dc" style="font-family&#58;monospace;"><span style="color&#58; #008040; font-weight&#58; bold;">itr&#58;</span> <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">22</span>  <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">5</span>  <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">58</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">64</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">6</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvy&#58;</span> -<span style="color&#58; #000000; font-weight&#58; bold;">4</span>  <span style="color&#58; #800000; font-weight&#58; bold;">fall&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">70</span>  <span style="color&#58; #800000; font-weight&#58; bold;">arest&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span>  <span style="color&#58; #800000; font-weight&#58; bold;">bdefend&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">16</span>  <span style="color&#58; #800000; font-weight&#58; bold;">injury&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">20</span>  <span style="color&#58; #800000; font-weight&#58; bold;">effect&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">2</span>  <span style="color&#58; #008040; font-weight&#58; bold;">itr&#95;end&#58;</span> 
<span style="color&#58; #008040; font-weight&#58; bold;">itr&#58;</span> <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">22</span>  <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">5</span>  <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">58</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">64</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">12</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvy&#58;</span> -<span style="color&#58; #000000; font-weight&#58; bold;">7</span>  <span style="color&#58; #800000; font-weight&#58; bold;">fall&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">70</span>  <span style="color&#58; #800000; font-weight&#58; bold;">vrest&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">12</span>  <span style="color&#58; #800000; font-weight&#58; bold;">bdefend&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">20</span>  <span style="color&#58; #800000; font-weight&#58; bold;">injury&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">50</span>  <span style="color&#58; #800000; font-weight&#58; bold;">effect&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span>  <span style="color&#58; #008040; font-weight&#58; bold;">itr&#95;end&#58;</span></pre></code></div></div>
		</td></tr></table><br />
In this example, the attack will hit twice at the same time; you will see 2 hitsparks.<br />
* Normally, it does 70 damage. The enemy goes into falling(not burning). You will hear burning &amp; cutting sounds.<br />
* If you use cheat engine, you'll notice that the values I used for dvx/dvy will make the enemy fly at xspeed=12 exactly, and yspeed=-7.33333.<br />
* You can bypass Louis/Knight's armor, because of the 1st arest itr inflicts effect 2.<br />
* The attack can be blocked, but will send the blocker into broken_defend since 16+20=36 which greater than 30.<br />
* You can bypass Julian's armor because the 1st arest itr inflicts bdefend 16, just enough to bypass armorclass 15. However, you will notice that Julian doesn't fly as far/high as normally, because his velocity is reduced due to the action of blocking the 1st itr, and he only takes (20/10)+50=52 damage.<br />
<br />
However, if you use this attack on multiple enemies at once, its arest behaves inconsistently.<br />
I find that it will always function properly against x1-2 enemies, but there is a chance the arest will fail to hit a 3rd enemy, and pretty much always fail to hit a 4th enemy.<br />
Hence in practice, you'd find that only 2-3 enemies take full damage, while the other enemies only take the vrest damage.<br />
<br />
This arest+vrest tech can be used to induce the <a href="https://lf-empire.de/forum/showthread.php?tid=10699" target="_blank" rel="noopener" class="mycode_url">injurybounce</a> mechanic, which happens when a character reaches fall80 and then takes another hit, confusing the game and sending the character into injury frames while receiving falling velocity.<br />
<img src="https://i.imgur.com/jXCkozc.gif" alt="[Image: jXCkozc.gif]" class="mycode_img" /><br />
<br />
This tech can also be used to consistently inflict fall80 on type 3 attacks.<br />
This is done by using itr 1[arest effect 4 fall: -70](<span style="text-decoration: underline;" class="mycode_u">set</span> fall to exactly 10) and itr2[vrest fall: 70](<span style="text-decoration: underline;" class="mycode_u">add</span> fall 70), therefore always triggering fall80.<br />
Fall80 can destroy state3005/3006, and if frame 180/186 is defined in the type 3, it will be sent to those frames(based on direction hit) instead of frame20/30.<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">[a%v-1] Arest + Vrest:</span> Within the same itr</span></span><br />
Credits go to <DVZ_ME#0> for sharing this tech on Discord and giving its name.<br />
So it turns out that you can actually put both arest and vrest tags <span style="font-weight: bold;" class="mycode_b">in the same itr</span>.<br />
Normally, this is pretty pointless since the vrest would sort of override the arest.<br />
The trick is to use vrest: -1.<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;DC-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="dc" style="font-family&#58;monospace;"><span style="color&#58; #008040; font-weight&#58; bold;">itr&#58;</span> <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">22</span>  <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">5</span>  <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">58</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">64</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">12</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvy&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">fall&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">70</span>  <span style="color&#58; #800000; font-weight&#58; bold;">arest&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span>  <span style="color&#58; #800000; font-weight&#58; bold;">vrest&#58;</span> -<span style="color&#58; #000000; font-weight&#58; bold;">1</span>  <span style="color&#58; #800000; font-weight&#58; bold;">bdefend&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">30</span>  <span style="color&#58; #800000; font-weight&#58; bold;">injury&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">100</span>  <span style="color&#58; #800000; font-weight&#58; bold;">effect&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span>  <span style="color&#58; #008040; font-weight&#58; bold;">itr&#95;end&#58;</span></pre></code></div></div>
		</td></tr></table><br />
The order is <span style="font-style: italic;" class="mycode_i">not</span> important in this case, what matters is that you have both tags written in same itr.<br />
<br />
In summary, it gives you an arest with vrest properties, by shorting out the rest values.<br />
* You can hit multiple enemies at once, like vrest.<br />
* However, you cannot hit any further enemies/objects during hitlag, just like arest.<br />
* You can define the rest period via the "arest" tag, its <span style="font-weight: bold;" class="mycode_b">minimum value is 1</span> instead of 4!<br />
* It is <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">not</span></span> random.<br />
<br />
This tech is useful if you want to say, buff John's super_punch to hit multiple enemies at once, but not cause him to hit the weapon that the enemies might be holding.<br />
This can also be used to replace the normal arest for the a+v tech mentioned above, which largely solves the lack of consistency problem when hitting more than 2 enemies.<br />
<br />
However, this tech has a few important caveats:<br />
(1) If the enemy has more than 1 bdy, and the itr overlaps both of those bdys, it will hit that same enemy multiple times.<br />
(2) This attack can only hit up to 20 times (same as vrest).<br />
(3) The itr will prioritize enemies lower on the object memory list.<br />
<br />
#1 is a very big problem if you intend to use this tech in original LF2, because it will appear to cause random x2~3 damage/fall etc when hitting enemies in certain frames. Therefore, this trick is only recommended for full mods that intend to standardize everyone to have only x1 bdy.<br />
<br />
#2 and #3 are more relevant if you intend to use multiple a%v-1 itrs or enjoy large Battles.<br />
Suppose you use x3 of such itrs, and you(Player 1) are attacking Players 2,3,4, who have x5 bdy each.<br />
* You will ALWAYS hit Player 2 a total of 3x5=15 times.<br />
* You will ALWAYS hit Player 3 a total of 5 times.<br />
* You will NEVER hit Player 4.<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">Itr Kind 5 + Wpoint:</span> Attacking(Weapon_Strength_List)</span></span><br />
Incidentally, ik5+wpoint also have some arest/vrest related magic.<br />
(1) weaponStrength[vrest], ik5[arest]; original lf2 weapons.<br />
(2) weaponStrength[vrest], ik5[vrest]; basically normal vrest.<br />
(3) weaponStrength[arest], ik5[arest]; basically normal arest.<br />
(4) weaponStrength[arest], ik5[vrest]; actually the same as a%v-1 tech.<br />
<br />
#1 is what you see in original LF2 weapons.<br />
Notice that if you swing a weapon at multiple enemies, they will fall over one by one instead of altogether at once like in a normal vrest(#2).<br />
Therefore, v%a-1 *<span style="font-style: italic;" class="mycode_i">technically</span>* exists in LF2, but as far as I know, it is only available through weapons, and appears to be a pretty impractical tech when proper vrest and a%v-1 tech exists.<br />
<br />
#4 while you cannot directly put a%v-1 tech into weaponStrength, you can get the exact same results by putting vrest ik5 in the weapon's on_hand frames, and then using an attack value from the weapon_strength_list that uses arest.<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="text-decoration: underline;" class="mycode_u">Can I mix a%v-1 with arest/vrest?</span></span><br />
a%v-1 + arest (both orders) behaves pretty randomly, I do not recommend it.<br />
That being said, in my tests, arest + a%v-1 in that order <span style="font-style: italic;" class="mycode_i">seemed</span> to have better success in hitting multiple enemies(around 2-3) to get hit than a%v-1 + arest in that order. I would advise messing around to get better sample data for your needs.<br />
<br />
a%v-1 + vrest (in that order) as advised is a good alternative for arest+vrest, but beware the more than 1 bdy problem.<br />
<br />
vrest + a%v-1 (in that order) will always prioritize vrest first. However, I also do not recommend this; on testing with vrest(itr effect 4)+a%v-1(normal), I find that if you hit a weapon/ball, it will actually short the vrest, causing you to be able to double-hit enemies.<br />
<br />
Overall, it seems the most suitable applications for a%v-1 are:<br />
a) Making an attack hit up to x20 enemies in an instant, but not during hitlag.<br />
b) Making an attack that needs to perform up to x20 simultaneous hit on the exact same target.<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">[v-1v%] Vrest(-1)(itr1) + Vrest(itr2):</span></span></span><br />
After everything above, it turns out Arest+Vrest and [a%v-1]+Vrest is a bit obsolete for the purposes of simultaneous hits.<br />
Just use vrest: -1 and vrest: %.<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">Other Notes:</span></span></span><br />
This tech is not exclusive to kind 0; it can be used for other kinds itr kind 3(catch)/8(healball).<br />
I have managed to use x4 itr kind 4 + x1 itr kind 1 and 4 bdys to make it such that ik1 always grabs the person with the lowest object number instead of attempting to catch everyone.<br />
Feel free to experiment and find more possible practical uses.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[A Certain Position Image]]></title>
			<link>https://lf-empire.de/forum/showthread.php?tid=11195</link>
			<pubDate>Mon, 01 Nov 2021 08:59:09 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://lf-empire.de/forum/member.php?action=profile&uid=6253">Mesujin</a>]]></dc:creator>
			<guid isPermaLink="false">https://lf-empire.de/forum/showthread.php?tid=11195</guid>
			<description><![CDATA[.... <br />
<br />
Kinda dunno why i'm doing this... (bad english warning '-'). (Might just wanna increase my green star .__.)<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: x-large;" class="mycode_size">Explanation</span></span><br />
<br />
A certain position image is a DC trick that manipulating/controling an Object's PIC/Appareance to be disappear or appear based on Camera's position. This trick are using a bug where when an Object/ID load an image that has smaller size than the Object/ID needed/wanted/trying to load in the &lt;bmp_&gt;, which will make the Object/ID's appreance become invisibile at certain position.<br />
<br />
The trick itself doesn't giving any effect to the gameplay except the appreance of an object, but this trick might made your char become cooler.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: x-large;" class="mycode_size">Example</span></span><br />
<br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/0SKxg-IlIl8" frameborder="0" allowfullscreen></iframe><br />
As you can see, the black background will only visible at certain position.<br />
<br />
Well, i don't... i mean, i can't giving the study example about this trick, but here's the example of the object that will be the background, this is should be enough info if you a DCer. Just Opoint the Frame 300 of this object with FACING: 10 and give it the black_layer.bmp with 795 x 510 Px size.<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://lf-empire.de/forum/images/attachtypes/txt.gif" title="Text Document" border="0" alt=".txt" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=3651" target="_blank" title="">readme.txt</a> (Size: 659 bytes / Downloads: 122)
<!-- end: postbit_attachments_attachment --><br />
<br />
Well, just wait for 2022, about the example of the trick usage if there's no one will use this trick.<br />
(hopefully, this won't just become a word. ;'))<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: x-large;" class="mycode_size">Furthermore</span></span><br />
<br />
Anyway, this trick kinda need some calculation to be made perfectly, so be prepared to be confused if you wanna use this trick furthermore, well here's another info about this trick.<br />
<div class="tborder spoiler"><div class="spoiler_header">Basic Mechanism <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">As i had explained on the top of this thread, this trick are using a bug.. bla bla... Simply by making the 'w: x+1' the object's appreance will be disappear once the camera's position are on the front of the object. <br />
<br />
???<br />
<br />
Yeah, based on the facing, if the camera's position are on the front of the object, the object's appreance will be invsible, but when the camera are positioned on the back of the object and when the object's position also are out of the camera, the object will be visible.<br />
<br />
So, by making a twin object at correct/calculated position, you can make a certain position background.</div></div><div class="tborder spoiler"><div class="spoiler_header">Additonal <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">Make sure you read the Basic Mechanism first '-'<br />
<br />
If you think this trick can only be applicated on a background, then you dumb '-'-'-' jk.<br />
With a bit extreme calculation, this trick can also make a normal object (an object with small appreance like a normal char) to be only visible at certain position.</div></div>]]></description>
			<content:encoded><![CDATA[.... <br />
<br />
Kinda dunno why i'm doing this... (bad english warning '-'). (Might just wanna increase my green star .__.)<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: x-large;" class="mycode_size">Explanation</span></span><br />
<br />
A certain position image is a DC trick that manipulating/controling an Object's PIC/Appareance to be disappear or appear based on Camera's position. This trick are using a bug where when an Object/ID load an image that has smaller size than the Object/ID needed/wanted/trying to load in the &lt;bmp_&gt;, which will make the Object/ID's appreance become invisibile at certain position.<br />
<br />
The trick itself doesn't giving any effect to the gameplay except the appreance of an object, but this trick might made your char become cooler.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: x-large;" class="mycode_size">Example</span></span><br />
<br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/0SKxg-IlIl8" frameborder="0" allowfullscreen></iframe><br />
As you can see, the black background will only visible at certain position.<br />
<br />
Well, i don't... i mean, i can't giving the study example about this trick, but here's the example of the object that will be the background, this is should be enough info if you a DCer. Just Opoint the Frame 300 of this object with FACING: 10 and give it the black_layer.bmp with 795 x 510 Px size.<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://lf-empire.de/forum/images/attachtypes/txt.gif" title="Text Document" border="0" alt=".txt" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=3651" target="_blank" title="">readme.txt</a> (Size: 659 bytes / Downloads: 122)
<!-- end: postbit_attachments_attachment --><br />
<br />
Well, just wait for 2022, about the example of the trick usage if there's no one will use this trick.<br />
(hopefully, this won't just become a word. ;'))<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: x-large;" class="mycode_size">Furthermore</span></span><br />
<br />
Anyway, this trick kinda need some calculation to be made perfectly, so be prepared to be confused if you wanna use this trick furthermore, well here's another info about this trick.<br />
<div class="tborder spoiler"><div class="spoiler_header">Basic Mechanism <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">As i had explained on the top of this thread, this trick are using a bug.. bla bla... Simply by making the 'w: x+1' the object's appreance will be disappear once the camera's position are on the front of the object. <br />
<br />
???<br />
<br />
Yeah, based on the facing, if the camera's position are on the front of the object, the object's appreance will be invsible, but when the camera are positioned on the back of the object and when the object's position also are out of the camera, the object will be visible.<br />
<br />
So, by making a twin object at correct/calculated position, you can make a certain position background.</div></div><div class="tborder spoiler"><div class="spoiler_header">Additonal <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">Make sure you read the Basic Mechanism first '-'<br />
<br />
If you think this trick can only be applicated on a background, then you dumb '-'-'-' jk.<br />
With a bit extreme calculation, this trick can also make a normal object (an object with small appreance like a normal char) to be only visible at certain position.</div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Significant Frame Numbers]]></title>
			<link>https://lf-empire.de/forum/showthread.php?tid=11118</link>
			<pubDate>Sun, 29 Nov 2020 05:31:03 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://lf-empire.de/forum/member.php?action=profile&uid=7">STM1993</a>]]></dc:creator>
			<guid isPermaLink="false">https://lf-empire.de/forum/showthread.php?tid=11118</guid>
			<description><![CDATA[This is a reference page for ALL <span style="font-style: italic;" class="mycode_i">hardcoded</span> frame numbers, regardless of data type.<br />
Catching/Picked_Caught/Throw_Lying_Man is actually not hardcoded.<br />
<br />
Let me know if I missed out anything that is frame specific.<br />
<br />
<br />
<span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">ID Specific</span></span> - excluding broken_weapon fragments.<br />
id6, fr300 onwards = LouisEX transform's HP Lock. Yes, it is tied to a frame, not to the actual DJA input.<br />
id51, fr290 = Fusion.<br />
id200, fr50-59 = Healball lures &lt;50% darkHP teammates. fr60-69 = JohnShield's effect on enemy AI(repel &amp; prevent weapon pickup).<br />
id209, fr40 = energyBalls converted into iceballs will go to this frame.<br />
id211, type3_hitFa13 always spawns fr50(grdfire) and fr109(exp).<br />
id212, fr150-159 = Whirlwind's effect on AI. type3_hitFa13 always spawns fr100(icicles).<br />
id212, all frame numbers ending in 0(eg: 0,10,20,...380,390) will be able to hit allied icicles despite being type3.<br />
id221, fr81 = spawned from type3_hit_Fa13.<br />
id998, fr0,2,4,6 = come/stay/move/join respectively.<br />
id999, fr101 = lands on this frame.<br />
<br />
<br />
<span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">frame</span></span><br />
0 = THE default frame; extremely important. st8xxx, cpoint injury -1, finish drinking, invisible, catch interrupt, weaponDropFromSky etc... all will return here.<br />
5-8 = Walking Loop.<br />
9-11 = Running Loop. Type0 spawned in Stage without indicating act: will default to 9.<br />
12-15 = Walking(heavy) Loop. 12 is the heavy default.<br />
<br />
10 = state3000 upon hitting something.<br />
0-5 = wpoint kind3 will drop its weapon in one of these 6 frames at random. Also heavy_weapon sky frames.<br />
0-15 = weapons that get hit, or dropped by state10/12, or state1002 hitting something(gains dvx-2,dvy-2) will go to one of these 16 frames at random. Linked to 40-55 for throwables/drinks. heavy_weapon dropped by flute/shield also goes to these set of frames(resulting in occasional bugs).<br />
<br />
1-2 &amp; 3-4 = used by type3_hitFa2 dennis chase.<br />
0-9 &amp; 50-59 = used by type3_hitFa14 skull chase.<br />
<br />
16-18 = Running(heavy) Loop.<br />
19 = heavy_stoprun.<br />
20 = normal_weapon_attack, Type3 upon taking a hit. Landing frame for Type2.<br />
25 = normal_weapon_attack2.<br />
30 = jump_weapon_attack, Type3 upon getting rebounded.<br />
35 = run_weapon_attack.<br />
<br />
40 = dash_weapon_attack.<br />
wpoint dvx/dvy weaponthrow always sends weapon to this frame.<br />
type3 hit_Fa7 spawns this frame as a tail.<br />
state 3005 getting hit by itr kind 9 will go to this frame as well.<br />
<br />
45 = light_weapon_throw<br />
50 = heavy_weapon_throw<br />
52 = sky_weapon_throw<br />
55 = drinking<br />
<br />
40-55 = Linked to 0-15 for throwables/drinks.<br />
<br />
60 = punch. landing frame for light weapons &amp; type3(hitFa7).<br />
65 = punch2.<br />
70 = superpunch. also landing frame for light weapons.<br />
80 = jump_attack<br />
85 = run_attack<br />
90 = dash_attack<br />
94 = landing frame for state100 on Type0 only.<br />
100 = rowing.<br />
102 = Rolling.<br />
108 = rowing_back.<br />
110 = Defend. Can change direction.<br />
111 = getting hit while in 110.<br />
112 = broken_defend. Firen &amp; Freeze will actually enter these frames upon de-fusing, but one of them will be in midair for some reason.<br />
115 = picking light weapon via ik2.<br />
116 = picking heavy weapon via ik2.<br />
<br />
180/186 = fall(61-80) &amp;&amp; yspeed -10 or lower. Always goes here if hit by physical attacks while in state13. Please note that type3 can enter these frames if they get sent to fall80 EXACTLY.<br />
181/187 = yspeed &gt;-10. Cpoint released by "decrease" goes t0 181 with dvx2/dvy-2.<br />
182/188 = yspeed &gt;0 (can flip)<br />
183/189 = yspeed &gt;6<br />
184/190 = unused, but has trajectory detection.<br />
185/191 = bounce(dvx2,dvy-2) upon landing if xspeed &gt;10 or yspeed &gt;1.<br />
<br />
200-201 = Frozen. Also generates ice particles. Immune to itr effect 30 (yes, its tied to frames, not state 13).<br />
202 = Grants 20tu of blinking timer! (compared to 15tu for state14 blinking)<br />
203-204 = Burning while dvy &lt;0. Hardcoded trajectory detection &amp; landing frame on state18.<br />
205-206 = Burning while dvy &gt;0. Hardcoded trajectory detection &amp; landing frame on state18.<br />
210 = Default Jump input.<br />
212 = state0/next999 goes here if in midair. Using next212 will automatically trigger jump. Lands in frame215 instead of 219. If victim in cpoint kind 2 stops being grabbed, he is released into this frame with dvy-2.<br />
213 = dash(forward). state5 automatically goes here if you have any form of dvx.<br />
214 = dash(backward). state5 automatically goes here if you have any form of -dvx.<br />
215 = type0 will land here if they are in frame212 or have state6. Has dvz determined by dash_distancez. Can press D=roll, J=dash.<br />
218 = stop_run.<br />
219 = default landing frame for type0. This is also used when "I join you" happens, with a longer wait duration.<br />
220 = injury(fall1-20)<br />
222 = injury(fall21-40) or midair fall1-20, front.<br />
224 = injury(fall21-40) or midair fall1-20, back.<br />
226 = stun(fall41-60)<br />
230 = lying(front)<br />
231 = lying(back)<br />
245 = transformBack frame if you untransform from Rudolf's DJA(cpoint injury -1).<br />
399 = no special property, but this is the highest frame number possible per data file.]]></description>
			<content:encoded><![CDATA[This is a reference page for ALL <span style="font-style: italic;" class="mycode_i">hardcoded</span> frame numbers, regardless of data type.<br />
Catching/Picked_Caught/Throw_Lying_Man is actually not hardcoded.<br />
<br />
Let me know if I missed out anything that is frame specific.<br />
<br />
<br />
<span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">ID Specific</span></span> - excluding broken_weapon fragments.<br />
id6, fr300 onwards = LouisEX transform's HP Lock. Yes, it is tied to a frame, not to the actual DJA input.<br />
id51, fr290 = Fusion.<br />
id200, fr50-59 = Healball lures &lt;50% darkHP teammates. fr60-69 = JohnShield's effect on enemy AI(repel &amp; prevent weapon pickup).<br />
id209, fr40 = energyBalls converted into iceballs will go to this frame.<br />
id211, type3_hitFa13 always spawns fr50(grdfire) and fr109(exp).<br />
id212, fr150-159 = Whirlwind's effect on AI. type3_hitFa13 always spawns fr100(icicles).<br />
id212, all frame numbers ending in 0(eg: 0,10,20,...380,390) will be able to hit allied icicles despite being type3.<br />
id221, fr81 = spawned from type3_hit_Fa13.<br />
id998, fr0,2,4,6 = come/stay/move/join respectively.<br />
id999, fr101 = lands on this frame.<br />
<br />
<br />
<span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">frame</span></span><br />
0 = THE default frame; extremely important. st8xxx, cpoint injury -1, finish drinking, invisible, catch interrupt, weaponDropFromSky etc... all will return here.<br />
5-8 = Walking Loop.<br />
9-11 = Running Loop. Type0 spawned in Stage without indicating act: will default to 9.<br />
12-15 = Walking(heavy) Loop. 12 is the heavy default.<br />
<br />
10 = state3000 upon hitting something.<br />
0-5 = wpoint kind3 will drop its weapon in one of these 6 frames at random. Also heavy_weapon sky frames.<br />
0-15 = weapons that get hit, or dropped by state10/12, or state1002 hitting something(gains dvx-2,dvy-2) will go to one of these 16 frames at random. Linked to 40-55 for throwables/drinks. heavy_weapon dropped by flute/shield also goes to these set of frames(resulting in occasional bugs).<br />
<br />
1-2 &amp; 3-4 = used by type3_hitFa2 dennis chase.<br />
0-9 &amp; 50-59 = used by type3_hitFa14 skull chase.<br />
<br />
16-18 = Running(heavy) Loop.<br />
19 = heavy_stoprun.<br />
20 = normal_weapon_attack, Type3 upon taking a hit. Landing frame for Type2.<br />
25 = normal_weapon_attack2.<br />
30 = jump_weapon_attack, Type3 upon getting rebounded.<br />
35 = run_weapon_attack.<br />
<br />
40 = dash_weapon_attack.<br />
wpoint dvx/dvy weaponthrow always sends weapon to this frame.<br />
type3 hit_Fa7 spawns this frame as a tail.<br />
state 3005 getting hit by itr kind 9 will go to this frame as well.<br />
<br />
45 = light_weapon_throw<br />
50 = heavy_weapon_throw<br />
52 = sky_weapon_throw<br />
55 = drinking<br />
<br />
40-55 = Linked to 0-15 for throwables/drinks.<br />
<br />
60 = punch. landing frame for light weapons &amp; type3(hitFa7).<br />
65 = punch2.<br />
70 = superpunch. also landing frame for light weapons.<br />
80 = jump_attack<br />
85 = run_attack<br />
90 = dash_attack<br />
94 = landing frame for state100 on Type0 only.<br />
100 = rowing.<br />
102 = Rolling.<br />
108 = rowing_back.<br />
110 = Defend. Can change direction.<br />
111 = getting hit while in 110.<br />
112 = broken_defend. Firen &amp; Freeze will actually enter these frames upon de-fusing, but one of them will be in midair for some reason.<br />
115 = picking light weapon via ik2.<br />
116 = picking heavy weapon via ik2.<br />
<br />
180/186 = fall(61-80) &amp;&amp; yspeed -10 or lower. Always goes here if hit by physical attacks while in state13. Please note that type3 can enter these frames if they get sent to fall80 EXACTLY.<br />
181/187 = yspeed &gt;-10. Cpoint released by "decrease" goes t0 181 with dvx2/dvy-2.<br />
182/188 = yspeed &gt;0 (can flip)<br />
183/189 = yspeed &gt;6<br />
184/190 = unused, but has trajectory detection.<br />
185/191 = bounce(dvx2,dvy-2) upon landing if xspeed &gt;10 or yspeed &gt;1.<br />
<br />
200-201 = Frozen. Also generates ice particles. Immune to itr effect 30 (yes, its tied to frames, not state 13).<br />
202 = Grants 20tu of blinking timer! (compared to 15tu for state14 blinking)<br />
203-204 = Burning while dvy &lt;0. Hardcoded trajectory detection &amp; landing frame on state18.<br />
205-206 = Burning while dvy &gt;0. Hardcoded trajectory detection &amp; landing frame on state18.<br />
210 = Default Jump input.<br />
212 = state0/next999 goes here if in midair. Using next212 will automatically trigger jump. Lands in frame215 instead of 219. If victim in cpoint kind 2 stops being grabbed, he is released into this frame with dvy-2.<br />
213 = dash(forward). state5 automatically goes here if you have any form of dvx.<br />
214 = dash(backward). state5 automatically goes here if you have any form of -dvx.<br />
215 = type0 will land here if they are in frame212 or have state6. Has dvz determined by dash_distancez. Can press D=roll, J=dash.<br />
218 = stop_run.<br />
219 = default landing frame for type0. This is also used when "I join you" happens, with a longer wait duration.<br />
220 = injury(fall1-20)<br />
222 = injury(fall21-40) or midair fall1-20, front.<br />
224 = injury(fall21-40) or midair fall1-20, back.<br />
226 = stun(fall41-60)<br />
230 = lying(front)<br />
231 = lying(back)<br />
245 = transformBack frame if you untransform from Rudolf's DJA(cpoint injury -1).<br />
399 = no special property, but this is the highest frame number possible per data file.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Remove flipping from falling frames(and unused frame 184/190)]]></title>
			<link>https://lf-empire.de/forum/showthread.php?tid=10925</link>
			<pubDate>Wed, 24 Oct 2018 02:42:44 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://lf-empire.de/forum/member.php?action=profile&uid=7">STM1993</a>]]></dc:creator>
			<guid isPermaLink="false">https://lf-empire.de/forum/showthread.php?tid=10925</guid>
			<description><![CDATA[In LF2, being able to flip from frame 182 and frame 188 is a hardcoded default input, even if you changed the state from 12 to something else.<br />
Furthermore, if you tried to use a custom frame with state 12, you'd find that the falling animation would no longer be trajectory-sensitive.<br />
<br />
Well, I've found a way to remove flipping from an LF2 character for good, and also allow you to make a custom flip with hit_j that actually costs MP to use.<br />
<br />
The trick is to set frame 182/188's wait from 3 to 0, and then change their next from 0 to 184/190 respectively.<br />
Now, it'd look consistent in regular play, but you'd find that if you did F2 pausing, you'd see the character appear to glitch graphically, as seen here:<br />
<img src="https://cdn.discordapp.com/attachments/257435658333716480/503971767035887617/noflipping.gif" alt="[Image: noflipping.gif]" class="mycode_img" /><br />
The reason why I used frame 184/190 is because they happen to be unused falling frames, yet they are trajectory-sensitive. So even if you next into 184/190, the game will frantically try to bring you back to frame 182/188, only to immediately next back into 184/190.(in the gif, I used frame 183/189 instead)<br />
<br />
To fix that, we'll make frame 184/190 identical to 182/188.<br />
<br />
You will also need to fix the freezing frame 202 to use next: 181(or 184 if you prefer) instead of next: 182, otherwise you'd still be able to instantly flip as soon as you thaw from being frozen for too long without getting hit.<br />
<br />
The data would look like this:<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;DC-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="dc" style="font-family&#58;monospace;"><span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&gt;</span> <span style="color&#58; #000000; font-weight&#58; bold;">182</span> falling
   <span style="color&#58; #800000; font-weight&#58; bold;">pic&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">32</span>  <span style="color&#58; #800000; font-weight&#58; bold;">state&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">12</span>  <span style="color&#58; #800000; font-weight&#58; bold;">wait&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">next&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">184</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvy&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvz&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">centerx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">39</span>  <span style="color&#58; #800000; font-weight&#58; bold;">centery&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>  <span style="color&#58; #800000; font-weight&#58; bold;">hit&#95;a&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">hit&#95;d&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">hit&#95;j&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span>  <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">38</span>  <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">43</span>  <span style="color&#58; #800000; font-weight&#58; bold;">weaponact&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">21</span>  <span style="color&#58; #800000; font-weight&#58; bold;">attacking&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">cover&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvy&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvz&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span> 
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#95;end&#58;</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">itr&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">4</span>  <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">13</span>  <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">18</span>  <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">46</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">26</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">2</span>  <span style="color&#58; #800000; font-weight&#58; bold;">fall&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">70</span>  <span style="color&#58; #800000; font-weight&#58; bold;">vrest&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">20</span>  <span style="color&#58; #800000; font-weight&#58; bold;">bdefend&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">10</span>  <span style="color&#58; #800000; font-weight&#58; bold;">injury&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">30</span>  
   <span style="color&#58; #008040; font-weight&#58; bold;">itr&#95;end&#58;</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">27</span>  <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">22</span>  <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">20</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">18</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#95;end&#58;</span>
<span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&#95;end&gt;</span>
&#46;&#46;&#46;
<span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&gt;</span> <span style="color&#58; #000000; font-weight&#58; bold;">184</span> falling
   <span style="color&#58; #800000; font-weight&#58; bold;">pic&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">32</span>  <span style="color&#58; #800000; font-weight&#58; bold;">state&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">12</span>  <span style="color&#58; #800000; font-weight&#58; bold;">wait&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">3</span>  <span style="color&#58; #800000; font-weight&#58; bold;">next&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvy&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvz&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">centerx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">39</span>  <span style="color&#58; #800000; font-weight&#58; bold;">centery&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>  <span style="color&#58; #800000; font-weight&#58; bold;">hit&#95;a&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">hit&#95;d&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">hit&#95;j&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">203</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span>  <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">38</span>  <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">43</span>  <span style="color&#58; #800000; font-weight&#58; bold;">weaponact&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">21</span>  <span style="color&#58; #800000; font-weight&#58; bold;">attacking&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">cover&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvy&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvz&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span> 
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#95;end&#58;</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">itr&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">4</span>  <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">13</span>  <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">18</span>  <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">46</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">26</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">2</span>  <span style="color&#58; #800000; font-weight&#58; bold;">fall&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">70</span>  <span style="color&#58; #800000; font-weight&#58; bold;">vrest&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">20</span>  <span style="color&#58; #800000; font-weight&#58; bold;">bdefend&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">10</span>  <span style="color&#58; #800000; font-weight&#58; bold;">injury&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">30</span>  
   <span style="color&#58; #008040; font-weight&#58; bold;">itr&#95;end&#58;</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">27</span>  <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">22</span>  <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">20</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">18</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#95;end&#58;</span>
<span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&#95;end&gt;</span>
&nbsp;
&#46;&#46;&#46;
&nbsp;
<span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&gt;</span> <span style="color&#58; #000000; font-weight&#58; bold;">188</span> falling
   <span style="color&#58; #800000; font-weight&#58; bold;">pic&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">42</span>  <span style="color&#58; #800000; font-weight&#58; bold;">state&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">12</span>  <span style="color&#58; #800000; font-weight&#58; bold;">wait&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">next&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">190</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvy&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvz&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">centerx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">39</span>  <span style="color&#58; #800000; font-weight&#58; bold;">centery&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>  <span style="color&#58; #800000; font-weight&#58; bold;">hit&#95;a&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">hit&#95;d&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">hit&#95;j&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span>  <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">29</span>  <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">35</span>  <span style="color&#58; #800000; font-weight&#58; bold;">weaponact&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">22</span>  <span style="color&#58; #800000; font-weight&#58; bold;">attacking&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">cover&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvy&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvz&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span> 
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#95;end&#58;</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">itr&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">4</span>  <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">14</span>  <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">29</span>  <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">58</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">23</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">2</span>  <span style="color&#58; #800000; font-weight&#58; bold;">fall&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">70</span>  <span style="color&#58; #800000; font-weight&#58; bold;">vrest&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">20</span>  <span style="color&#58; #800000; font-weight&#58; bold;">bdefend&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">10</span>  <span style="color&#58; #800000; font-weight&#58; bold;">injury&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">30</span>  
   <span style="color&#58; #008040; font-weight&#58; bold;">itr&#95;end&#58;</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">30</span>  <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">31</span>  <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">24</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">21</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#95;end&#58;</span>
<span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&#95;end&gt;</span>
&#46;&#46;&#46;
<span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&gt;</span> <span style="color&#58; #000000; font-weight&#58; bold;">190</span> falling
   <span style="color&#58; #800000; font-weight&#58; bold;">pic&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">42</span>  <span style="color&#58; #800000; font-weight&#58; bold;">state&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">12</span>  <span style="color&#58; #800000; font-weight&#58; bold;">wait&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">3</span>  <span style="color&#58; #800000; font-weight&#58; bold;">next&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvy&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvz&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">centerx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">39</span>  <span style="color&#58; #800000; font-weight&#58; bold;">centery&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>  <span style="color&#58; #800000; font-weight&#58; bold;">hit&#95;a&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">hit&#95;d&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">hit&#95;j&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">203</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span>  <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">29</span>  <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">35</span>  <span style="color&#58; #800000; font-weight&#58; bold;">weaponact&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">22</span>  <span style="color&#58; #800000; font-weight&#58; bold;">attacking&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">cover&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvy&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvz&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span> 
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#95;end&#58;</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">itr&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">4</span>  <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">14</span>  <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">29</span>  <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">58</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">23</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">2</span>  <span style="color&#58; #800000; font-weight&#58; bold;">fall&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">70</span>  <span style="color&#58; #800000; font-weight&#58; bold;">vrest&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">20</span>  <span style="color&#58; #800000; font-weight&#58; bold;">bdefend&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">10</span>  <span style="color&#58; #800000; font-weight&#58; bold;">injury&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">30</span>  
   <span style="color&#58; #008040; font-weight&#58; bold;">itr&#95;end&#58;</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">30</span>  <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">31</span>  <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">24</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">21</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#95;end&#58;</span>
<span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&#95;end&gt;</span>
&nbsp;
&#46;&#46;&#46;
&nbsp;
<span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&gt;</span> <span style="color&#58; #000000; font-weight&#58; bold;">202</span> ice
   <span style="color&#58; #800000; font-weight&#58; bold;">pic&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">105</span>  <span style="color&#58; #800000; font-weight&#58; bold;">state&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">15</span>  <span style="color&#58; #800000; font-weight&#58; bold;">wait&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span>  <span style="color&#58; #800000; font-weight&#58; bold;">next&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">184</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvx&#58;</span> -<span style="color&#58; #000000; font-weight&#58; bold;">4</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvy&#58;</span> -<span style="color&#58; #000000; font-weight&#58; bold;">3</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvz&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">centerx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">39</span>  <span style="color&#58; #800000; font-weight&#58; bold;">centery&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>  <span style="color&#58; #800000; font-weight&#58; bold;">hit&#95;a&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">hit&#95;d&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">hit&#95;j&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span>  <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">18</span>  <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">44</span>  <span style="color&#58; #800000; font-weight&#58; bold;">weaponact&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">20</span>  <span style="color&#58; #800000; font-weight&#58; bold;">attacking&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">cover&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvy&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvz&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span> 
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#95;end&#58;</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">8</span>  <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">6</span>  <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">67</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">73</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#95;end&#58;</span>
<span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&#95;end&gt;</span></pre></code></div></div>
		</td></tr></table><br />
<br />
In this example, I've added hit_j: 203 to frames 184/190, meaning instead of flipping you can set yourself on fire. You can add an mp cost if you so desired.<br />
<br />
If you try to use hit_j into frame 100/108, you'll notice that you would lose the default trajectory of the flip that you can set in the stats at the top of each character's data, but that's a minor problem since the goal in the first place is to change the flip.<br />
<br />
Finally, you can use frame 184/190 for burning frames to add a potential 3rd/4th frame for burning as well! Feel free to experiment with this.<br />
<br />
That'd be all, enjoy this new tech!<br />
<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">EDIT:</span></span></span><br />
There is just one tiny little problem with using the hit_j custom flip.<br />
You can now flip out of Henry's D^J flute! XD]]></description>
			<content:encoded><![CDATA[In LF2, being able to flip from frame 182 and frame 188 is a hardcoded default input, even if you changed the state from 12 to something else.<br />
Furthermore, if you tried to use a custom frame with state 12, you'd find that the falling animation would no longer be trajectory-sensitive.<br />
<br />
Well, I've found a way to remove flipping from an LF2 character for good, and also allow you to make a custom flip with hit_j that actually costs MP to use.<br />
<br />
The trick is to set frame 182/188's wait from 3 to 0, and then change their next from 0 to 184/190 respectively.<br />
Now, it'd look consistent in regular play, but you'd find that if you did F2 pausing, you'd see the character appear to glitch graphically, as seen here:<br />
<img src="https://cdn.discordapp.com/attachments/257435658333716480/503971767035887617/noflipping.gif" alt="[Image: noflipping.gif]" class="mycode_img" /><br />
The reason why I used frame 184/190 is because they happen to be unused falling frames, yet they are trajectory-sensitive. So even if you next into 184/190, the game will frantically try to bring you back to frame 182/188, only to immediately next back into 184/190.(in the gif, I used frame 183/189 instead)<br />
<br />
To fix that, we'll make frame 184/190 identical to 182/188.<br />
<br />
You will also need to fix the freezing frame 202 to use next: 181(or 184 if you prefer) instead of next: 182, otherwise you'd still be able to instantly flip as soon as you thaw from being frozen for too long without getting hit.<br />
<br />
The data would look like this:<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;DC-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="dc" style="font-family&#58;monospace;"><span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&gt;</span> <span style="color&#58; #000000; font-weight&#58; bold;">182</span> falling
   <span style="color&#58; #800000; font-weight&#58; bold;">pic&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">32</span>  <span style="color&#58; #800000; font-weight&#58; bold;">state&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">12</span>  <span style="color&#58; #800000; font-weight&#58; bold;">wait&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">next&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">184</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvy&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvz&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">centerx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">39</span>  <span style="color&#58; #800000; font-weight&#58; bold;">centery&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>  <span style="color&#58; #800000; font-weight&#58; bold;">hit&#95;a&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">hit&#95;d&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">hit&#95;j&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span>  <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">38</span>  <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">43</span>  <span style="color&#58; #800000; font-weight&#58; bold;">weaponact&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">21</span>  <span style="color&#58; #800000; font-weight&#58; bold;">attacking&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">cover&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvy&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvz&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span> 
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#95;end&#58;</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">itr&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">4</span>  <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">13</span>  <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">18</span>  <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">46</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">26</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">2</span>  <span style="color&#58; #800000; font-weight&#58; bold;">fall&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">70</span>  <span style="color&#58; #800000; font-weight&#58; bold;">vrest&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">20</span>  <span style="color&#58; #800000; font-weight&#58; bold;">bdefend&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">10</span>  <span style="color&#58; #800000; font-weight&#58; bold;">injury&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">30</span>  
   <span style="color&#58; #008040; font-weight&#58; bold;">itr&#95;end&#58;</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">27</span>  <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">22</span>  <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">20</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">18</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#95;end&#58;</span>
<span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&#95;end&gt;</span>
&#46;&#46;&#46;
<span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&gt;</span> <span style="color&#58; #000000; font-weight&#58; bold;">184</span> falling
   <span style="color&#58; #800000; font-weight&#58; bold;">pic&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">32</span>  <span style="color&#58; #800000; font-weight&#58; bold;">state&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">12</span>  <span style="color&#58; #800000; font-weight&#58; bold;">wait&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">3</span>  <span style="color&#58; #800000; font-weight&#58; bold;">next&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvy&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvz&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">centerx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">39</span>  <span style="color&#58; #800000; font-weight&#58; bold;">centery&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>  <span style="color&#58; #800000; font-weight&#58; bold;">hit&#95;a&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">hit&#95;d&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">hit&#95;j&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">203</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span>  <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">38</span>  <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">43</span>  <span style="color&#58; #800000; font-weight&#58; bold;">weaponact&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">21</span>  <span style="color&#58; #800000; font-weight&#58; bold;">attacking&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">cover&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvy&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvz&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span> 
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#95;end&#58;</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">itr&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">4</span>  <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">13</span>  <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">18</span>  <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">46</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">26</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">2</span>  <span style="color&#58; #800000; font-weight&#58; bold;">fall&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">70</span>  <span style="color&#58; #800000; font-weight&#58; bold;">vrest&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">20</span>  <span style="color&#58; #800000; font-weight&#58; bold;">bdefend&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">10</span>  <span style="color&#58; #800000; font-weight&#58; bold;">injury&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">30</span>  
   <span style="color&#58; #008040; font-weight&#58; bold;">itr&#95;end&#58;</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">27</span>  <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">22</span>  <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">20</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">18</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#95;end&#58;</span>
<span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&#95;end&gt;</span>
&nbsp;
&#46;&#46;&#46;
&nbsp;
<span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&gt;</span> <span style="color&#58; #000000; font-weight&#58; bold;">188</span> falling
   <span style="color&#58; #800000; font-weight&#58; bold;">pic&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">42</span>  <span style="color&#58; #800000; font-weight&#58; bold;">state&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">12</span>  <span style="color&#58; #800000; font-weight&#58; bold;">wait&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">next&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">190</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvy&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvz&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">centerx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">39</span>  <span style="color&#58; #800000; font-weight&#58; bold;">centery&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>  <span style="color&#58; #800000; font-weight&#58; bold;">hit&#95;a&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">hit&#95;d&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">hit&#95;j&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span>  <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">29</span>  <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">35</span>  <span style="color&#58; #800000; font-weight&#58; bold;">weaponact&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">22</span>  <span style="color&#58; #800000; font-weight&#58; bold;">attacking&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">cover&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvy&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvz&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span> 
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#95;end&#58;</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">itr&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">4</span>  <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">14</span>  <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">29</span>  <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">58</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">23</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">2</span>  <span style="color&#58; #800000; font-weight&#58; bold;">fall&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">70</span>  <span style="color&#58; #800000; font-weight&#58; bold;">vrest&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">20</span>  <span style="color&#58; #800000; font-weight&#58; bold;">bdefend&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">10</span>  <span style="color&#58; #800000; font-weight&#58; bold;">injury&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">30</span>  
   <span style="color&#58; #008040; font-weight&#58; bold;">itr&#95;end&#58;</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">30</span>  <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">31</span>  <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">24</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">21</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#95;end&#58;</span>
<span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&#95;end&gt;</span>
&#46;&#46;&#46;
<span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&gt;</span> <span style="color&#58; #000000; font-weight&#58; bold;">190</span> falling
   <span style="color&#58; #800000; font-weight&#58; bold;">pic&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">42</span>  <span style="color&#58; #800000; font-weight&#58; bold;">state&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">12</span>  <span style="color&#58; #800000; font-weight&#58; bold;">wait&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">3</span>  <span style="color&#58; #800000; font-weight&#58; bold;">next&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvy&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvz&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">centerx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">39</span>  <span style="color&#58; #800000; font-weight&#58; bold;">centery&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>  <span style="color&#58; #800000; font-weight&#58; bold;">hit&#95;a&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">hit&#95;d&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">hit&#95;j&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">203</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span>  <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">29</span>  <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">35</span>  <span style="color&#58; #800000; font-weight&#58; bold;">weaponact&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">22</span>  <span style="color&#58; #800000; font-weight&#58; bold;">attacking&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">cover&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvy&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvz&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span> 
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#95;end&#58;</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">itr&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">4</span>  <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">14</span>  <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">29</span>  <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">58</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">23</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">2</span>  <span style="color&#58; #800000; font-weight&#58; bold;">fall&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">70</span>  <span style="color&#58; #800000; font-weight&#58; bold;">vrest&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">20</span>  <span style="color&#58; #800000; font-weight&#58; bold;">bdefend&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">10</span>  <span style="color&#58; #800000; font-weight&#58; bold;">injury&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">30</span>  
   <span style="color&#58; #008040; font-weight&#58; bold;">itr&#95;end&#58;</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">30</span>  <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">31</span>  <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">24</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">21</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#95;end&#58;</span>
<span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&#95;end&gt;</span>
&nbsp;
&#46;&#46;&#46;
&nbsp;
<span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&gt;</span> <span style="color&#58; #000000; font-weight&#58; bold;">202</span> ice
   <span style="color&#58; #800000; font-weight&#58; bold;">pic&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">105</span>  <span style="color&#58; #800000; font-weight&#58; bold;">state&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">15</span>  <span style="color&#58; #800000; font-weight&#58; bold;">wait&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span>  <span style="color&#58; #800000; font-weight&#58; bold;">next&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">184</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvx&#58;</span> -<span style="color&#58; #000000; font-weight&#58; bold;">4</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvy&#58;</span> -<span style="color&#58; #000000; font-weight&#58; bold;">3</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvz&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">centerx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">39</span>  <span style="color&#58; #800000; font-weight&#58; bold;">centery&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>  <span style="color&#58; #800000; font-weight&#58; bold;">hit&#95;a&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">hit&#95;d&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">hit&#95;j&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span>  <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">18</span>  <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">44</span>  <span style="color&#58; #800000; font-weight&#58; bold;">weaponact&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">20</span>  <span style="color&#58; #800000; font-weight&#58; bold;">attacking&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">cover&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvy&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">dvz&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span> 
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#95;end&#58;</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span>  <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">8</span>  <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">6</span>  <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">67</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">73</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#95;end&#58;</span>
<span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&#95;end&gt;</span></pre></code></div></div>
		</td></tr></table><br />
<br />
In this example, I've added hit_j: 203 to frames 184/190, meaning instead of flipping you can set yourself on fire. You can add an mp cost if you so desired.<br />
<br />
If you try to use hit_j into frame 100/108, you'll notice that you would lose the default trajectory of the flip that you can set in the stats at the top of each character's data, but that's a minor problem since the goal in the first place is to change the flip.<br />
<br />
Finally, you can use frame 184/190 for burning frames to add a potential 3rd/4th frame for burning as well! Feel free to experiment with this.<br />
<br />
That'd be all, enjoy this new tech!<br />
<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">EDIT:</span></span></span><br />
There is just one tiny little problem with using the hit_j custom flip.<br />
You can now flip out of Henry's D^J flute! XD]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[State machines and itr (Interaction) Studies in LF2]]></title>
			<link>https://lf-empire.de/forum/showthread.php?tid=10733</link>
			<pubDate>Sat, 26 Aug 2017 07:10:39 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://lf-empire.de/forum/member.php?action=profile&uid=4488">rewlf2</a>]]></dc:creator>
			<guid isPermaLink="false">https://lf-empire.de/forum/showthread.php?tid=10733</guid>
			<description><![CDATA[This essay is aimed to provide a detailed explanation regarding how state and itr parameters take effect inside LF2.<br />
<br />
This will expand without prior notice.<br />
<br />
<span style="font-size: x-large;" class="mycode_size">Before you read on</span><br />
This essay is a collection of studies which has much deeper knowledge compared to what is hosted on LF-empire site DC tutorial.<br />
This includes research results of <span style="font-style: italic;" class="mycode_i"><a href="http://www.lf-empire.de/forum/showthread.php?tid=10715" target="_blank" rel="noopener" class="mycode_url">Managing playable type: 3, 5 characters</a></span>, which is highly abstract.<br />
The essay will frequently use terms regarding state machines, and will have a sick amount of pragmatic (and possibly incomprehensible) code and psuedocode.<br />
<br />
I would use code similar to this:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>frame XXX<br />
<br />
if (some condition)<br />
  do something<br />
  do something<br />
else<br />
  do something else<br />
<br />
frame XXX_end</code></div></div><br />
Although a player character and non-player character are designed to be type: 0, there will be a lot of facts which are tested by using non-type: 0 characters.<br />
Because of that there are a lot of possibly unwanted information but I will try to show the final results clearly.<br />
<br />
<span style="font-size: x-large;" class="mycode_size">Human States</span><br />
<br />
<span style="font-size: large;" class="mycode_size">State: 0</span><br />
<br />
The standing state.<br />
<br />
If a character's hit_a parameter is 0, it will run the following check.<br />
If hit_a isn't 0, the parameter will override the whole check. (I assume later examples will also override unless specified)<br />
<br />
If the controlling player (including computer, I assume laters samples include computers unless specified) presses A, the system will check if the character is holding a weapon.<br />
<br />
If he is holding a weapon, he has 50% chance to go to frame 20 and 50% chance to go to frame 25.<br />
If he holds no weapon, he has 50% chance to go to frame 60 and 50% chance to go to frame 65.<br />
<br />
I will explain weapon usage and super punch in details later.<br />
<br />
If a character's hit_j parameter is 0, he will go to frame 210 when J is pressed. Otherwise the parameter overrides.<br />
<br />
If a character's hit_d parameter is 0, he will go to frame 110 when D is pressed. Otherwise the parameter overrides.<br />
<br />
If direction key is pressed, character will go to one of frames 5-8, but the initial frame it goes to is neither random nor fixed.<br />
<br />
However, if both of these happen (Left and right are both or neither pressed) (up and down are both or neither pressed), the direction keys are cancelled.<br />
This can be represented by logic condition (up XNOR dn) &amp; (lt XNOR rt)<br />
<br />
A character (pragmatically, any object including weapon and projectile) has a hidden "walking counter" that counts from 0 to 5 whenever a tick has begun when the character is in state: 1.<br />
The counter starts at 0 when the character is spawned.<br />
The specific frame when a character goes to when he moves from state: 0 is:<br />
<br />
C=0 -&gt; Frame 5<br />
C=1 -&gt; Frame 6<br />
C=2 -&gt; Frame 7<br />
C=3 -&gt; Frame 8<br />
C=4 -&gt; Frame 7<br />
C=5 -&gt; Frame 6<br />
<br />
The period of a tick is equal to (walking_frame_rate+1) tu, but exe will crash if walking_frame_rate is set to 0.<br />
<br />
There is bad code hidden in lf2 that causes a simultaneous key input of JA and DA to go to frame 210 or 110 respectively, <a href="http://y2f.heliohost.org/index.php?current=Double%20Key%20Inputs.html" target="_blank" rel="noopener" class="mycode_url">listed by Yinyin here</a>.<br />
<br />
If no button is pressed, a hidden standing counter will be incremented. Whenever this character leaves a frame with state: 0, this counter is reset to 0. The counter similar to walking counter except its highest possible number is equal to total tu of walking frames.<br />
For example, if a character has standing frames with wait 3,4,5,9, the counter can go to maximum of (3+4+5+9-4) = 17tu.<br />
Which standing frame the character goes to is determined by the counter.<br />
<br />
<div class="tborder spoiler"><div class="spoiler_header">State: 0 machine <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
I could add this pile of bad code in the beginning to simulate double input:<br />
<span style="font-weight: bold;" class="mycode_b">This pile is NOT the actual thing and DO NOT TRY TO REPLICATE bad code</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>if (buttonJ &amp;&amp; buttonA)<br />
  goto 210<br />
if (buttonD &amp;&amp; buttonA)<br />
  goto 110<br />
<br />
...<br />
<br />
  </code></div></div><br />
Actual psuedocode<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>switch (button)<br />
  case A:<br />
    if (hit_a != 0)<br />
      goto hit_a<br />
    else if (hold_light_weapon)<br />
      if (rand(X) &gt; X/2)<br />
        goto 20<br />
      else<br />
        goto 25<br />
    else<br />
      if (rand(X) &gt; X/2)<br />
        goto 60<br />
      else<br />
        goto 65<br />
  case J:<br />
    if (hit_j != 0)<br />
      goto hit_j<br />
    else<br />
      goto 210<br />
  case D:<br />
    if (hit_d != 0)<br />
      goto hit_d<br />
    else<br />
      goto 110<br />
  case up<br />
  case dn<br />
  case lt<br />
  case rt:<br />
    if ((up XNOR dn) &amp; (lt XNOR rt))<br />
      switch (walking_counter)<br />
        case 0:<br />
          walking_counter++<br />
          walking_counter %= 6<br />
          /* %= takes the left variable and modulus it by the right variable, then writes back to left variable space */<br />
          goto 5<br />
        case 1<br />
        case 5:<br />
          walking_counter++<br />
          walking_counter %= 6<br />
          goto 6<br />
        case 2<br />
        case 4:<br />
          walking_counter++<br />
          walking_counter %= 6<br />
          goto 7<br />
        case 3:<br />
          walking_counter++<br />
          walking_counter %= 6<br />
          goto 8<br />
  case NULL:<br />
  // This implies no button is pressed<br />
    standing_counter++<br />
    standing_counter %= max_standing_counter<br />
    int j = 0;<br />
    int new_standing_frame = -1<br />
    bool standing_determined =  false<br />
    for (int i=0; i&lt;number_of_standing_frames &amp;&amp; new_standing_frame = -1; i++)<br />
      j += tu of standing_frame_i<br />
      if (standing_counter &lt; j)<br />
        new_standing_frame = i<br />
      end if<br />
    end for<br />
<br />
end switch</code></div></div></div></div>
Picking up a weapon is NOT related to state: 0.<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 1</span><br />
The walking state, it acts very similar to state: 0 (there are some misconception regarding this state though)<br />
<br />
It acts identically as state: 0 regarding A, J and D buttons,<br />
<br />
If direction key is held, it will determine if walking should be continued.<br />
If direction key is released, although the character will go to standing, there is a hidden running initiation counter that records the last left/right key pressed and its initial press time.<br />
If the same direction key is pressed quickly after the last key press, it will trigger running.<br />
<br />
Also notice a hit_x tag leading to running frame grants the character automatic running.<br />
<br />
<div class="tborder spoiler"><div class="spoiler_header">State: 1 machine <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>switch (button)<br />
  case A:<br />
    ...<br />
  case J:<br />
    ...<br />
  case D:<br />
    ...<br />
  case up<br />
  case dn<br />
  case lt<br />
  case rt:<br />
    if ((buttonLt &amp;&amp; last_buttonLt_time &lt; small_number &amp;&amp; last_run_dir = lt) || (buttonRt &amp;&amp; last_buttonRt_time &lt; small_number &amp;&amp;  last_run_dir = rt))<br />
    goto 8<br />
    // Running frames are less detailed, so a rough estimate on initial frame is shown<br />
    else<br />
      if ((up XNOR dn) &amp; (lt XNOR rt))<br />
      ...<br />
  case NULL:<br />
     goto 0<br />
end switch</code></div></div></div></div>
Grabbing a stunned person is NOT related to state: 1.<br />
Picking up a weapon is NOT related to state: 1.<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 2</span><br />
The running state, this also has a hidden running timer which maximum number equals to 3. It is very similar to walking counter except with 4 transitions:<br />
<br />
C=0 -&gt; Frame 9<br />
C=1 -&gt; Frame 10<br />
C=2 -&gt; Frame 11<br />
C=3 -&gt; Frame 10<br />
<br />
If hit_d parameter is 0, character will go to frame 102 (rolling) when D is pressed.<br />
<br />
If hit_j parameter is 0, character will go to frame 213 (forward dash) when J is pressed.<br />
<br />
If hit_a parameter is 0, character will check if he holds a weapon when A is pressed.<br />
If he holds weapon he goes to frame 35 (run_weapon_attack)<br />
If he doesn't hold, he goes to frame 85 (run_attack)<br />
<br />
If an opposite direction key against his running direction is pressed, he will go to frame 218 (stop_running)<br />
<br />
hit_XX are disabled if a character is holding a heavy weapon via itr kind 2, state: 2 itself doesn't disable hit_XX. For details go the section for itr kind 2.<br />
<br />
<div class="tborder spoiler"><div class="spoiler_header">State: 2 machine <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>switch (button)<br />
  case A:<br />
    if (hit_a != 0)<br />
      goto hit_a<br />
    else if (hold_light_weapon)<br />
      goto 35<br />
    else<br />
      goto 85<br />
  case J:<br />
    if (hit_j != 0)<br />
      goto hit_j<br />
    else<br />
      goto 213<br />
  case D:<br />
    if (hit_d != 0)<br />
      goto hit_d<br />
    else<br />
      goto 102<br />
  case lt<br />
  case rt:<br />
    if ((facing == rt &amp;&amp; button == lt) || (facing == lt &amp;&amp; button == rt))<br />
      goto 218<br />
  case NULL:<br />
    switch (running_counter)<br />
      case 0:<br />
        running_counter++<br />
        running_counter %= 4<br />
        goto 9<br />
      case 1<br />
      case 3:<br />
        running_counter++<br />
        running_counter %= 4<br />
        goto 10<br />
      case 2:<br />
        walking_counter++<br />
        walking_counter %= 4<br />
        goto 11<br />
    end switch<br />
end switch</code></div></div></div></div>
<span style="font-size: large;" class="mycode_size">State: 3</span><br />
<br />
State 3 is the "Attack" state, which has NO state machine inserted into it.<br />
It is very similar to State 15 except State 15 does not provoke defense on computer characters.<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 4</span><br />
<br />
The "Jump state" is an aerial state that takes some well-known and some hidden properties.<br />
<br />
If hit_a parameter is 0, character will check if he holds a weapon when A is pressed.<br />
If he holds weapon he goes to frame 30 (jump_weapon_attack)<br />
If he doesn't hold, he goes to frame 80 (jump_attack)<br />
It does not work when character is on ground.<br />
<br />
If an opposite direction key to what he's facing is pressed, he changes direction.<br />
It does not work when character is on ground.<br />
<br />
There's no J and D state machines here, but a hidden issue that if a character with state: 4 gains velocity in either direction, he will change into falling frame.<br />
This can be presented by the dazed Louis bug, where Louis tried to jump but his armor taking a hit will render him fall to ground instead.<br />
<br />
Landing in a frame with state: 4 does not mean character will go to frame 215. Frame 212 is actual cause, that regardless of its state will result in going to 215.<br />
<br />
<div class="tborder spoiler"><div class="spoiler_header">State: 4 machine <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>switch (button)<br />
  case A:<br />
    if (hit_a != 0)<br />
      goto hit_a<br />
    else if (hold_light_weapon)<br />
      goto 30<br />
    else<br />
      goto 80<br />
  case lt<br />
  case rt:<br />
    if ((facing == rt &amp;&amp; button == lt) || (facing == lt &amp;&amp; button == rt))<br />
      change_facing<br />
end switch</code></div></div></div></div>
<span style="font-size: large;" class="mycode_size">State: 5</span><br />
<br />
The dashing state uses y-axis-velocity, direction control and initial direction to interchange between 4 frames, namely 213, 214, 216 and 217.<br />
The 4 frames represent the following:<br />
213: Forward dash 1<br />
214: Forward dash 2<br />
216: Back-facing dash 1<br />
217: Back-facing dash 2<br />
<br />
If a character is in frame 213, pressing opposite direction will go to 216, vice versa.<br />
If he is in frame 214, pressing opposite direction will go to 217, vice versa.<br />
If he changes into frame 213 or 216, there's no hidden cooldown and frame countdown is refreshed.<br />
<br />
If hit_a parameter is 0 and character is in frame 213 or 216, character will check if he holds a weapon when A is pressed.<br />
If he holds weapon he goes to frame 40 (dash_weapon_attack)<br />
If he doesn't hold, he goes to frame 90 (dash_attack)<br />
<br />
Henry and Hunter can use dash backward shoot because there is hit_a: 81 written on frame 214 and 217.<br />
<br />
<div class="tborder spoiler"><div class="spoiler_header">State: 5 machine <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>switch (button)<br />
  case A:<br />
    if (hit_a != 0)<br />
      goto hit_a<br />
    else if (hold_light_weapon)<br />
      goto 40<br />
    else<br />
      goto 90<br />
  case lt<br />
  case rt:<br />
    if ((facing == rt &amp;&amp; button == lt) || (facing == lt &amp;&amp; button == rt))<br />
      change_facing<br />
end switch<br />
<br />
if (frame == 216 &amp;&amp; new_facing == initial_facing)<br />
  goto 213<br />
else if (frame == 213 &amp;&amp; new_facing != initial_facing)<br />
  goto 216</code></div></div></div></div>
<br />
<span style="font-size: large;" class="mycode_size">State: 6</span><br />
<br />
Rolling/Flipping State: 6 is identical to state: 15, has no effect on computer behavior and has NO state machines in it.<br />
<br />
When a player is rolling he can press A to pick a weapon, however it is NOT caused by state: 6, but itr kind: 7. <br />
<br />
If a character in state: 6 lands from air, he goes to frame 215. Character in frame 212 landing will also go to frame 215.<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 7</span><br />
<br />
State 7, the defending state is a well-known state for developing special characters.<br />
Apart from its defense system which is well covered by others, there are something regarding hit_x keys about state: 7.<br />
<br />
If a character is in state 7 and frame 110, and takes a blow that doesn't break his defense, he will go to frame 111.<br />
<br />
Taking a blow that doesn't break defense outside frame 100 won't change frame.<br />
<br />
Breaking defense makes character go to 112, but if character is in air or grabbed into state: 7 frame, his state: 7 frame cannot be broken.<br />
<br />
Nonetheless an attack with bdefend &gt;60 can negate state: 7.<br />
<br />
If a character in frame 110 (but not necessary in state: 7), he can change his direction if he presses opposite direction key as his current facing.<br />
This only affects frame 110.<br />
<br />
<div class="tborder spoiler"><div class="spoiler_header">frame 110 machine <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>switch (button)<br />
  case lt<br />
  case rt:<br />
    if (((facing == rt &amp;&amp; button == lt) || (facing == lt &amp;&amp; button == rt)) &amp;&amp; self_frame == 110)<br />
      change_facing<br />
end switch</code></div></div></div></div><hr class="mycode_hr" />
<span style="font-size: large;" class="mycode_size">State: 8</span><br />
<br />
Broken defend State: 8 is identical to state: 15, has no effect on computer behavior and has NO state machines in it.<br />
<br />
When a player is in broken_defend frames, hostile character pressing A will go to frame 70 (super_punch), but it is not caused by state: 8 but itr kind: 6 emitted by the frames.<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 9</span><br />
<br />
Catching, State 9 has no innate state machine.<br />
<br />
The catching properties is done by cpoint parameters.<br />
<br />
In an experiment, putting state: 0 on frame 121 overrides all cpoint properties, so there's little need for a separate state machine on state 9.<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 10</span><br />
<br />
Caught, State 10 has no innate state machine.<br />
<br />
Object from any team can interact with an object in state: 10.<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 11</span><br />
<br />
Injured, State 11 has no innate state machine.<br />
<br />
Knight and Julian lose innate armor in state 8, 10, 11, 16,<br />
Louis's armor is only effective in frame 0-19 or state: 4, 5 frames.<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 12</span><br />
<br />
Falling, State 12 has a state machine when the object is also a type: 0.<br />
Any non-character with state: 12 frames are not affected.<br />
<br />
The state machine is similar to dash system, using y-axis velocity and facing direction to display falling animation.<br />
<br />
Any characters being sent to falling frame will either start in 180 or 186.<br />
He will immediately go to frame the machine indicated after 1tu.<br />
The frame which the character will go to is as follows:<br />
<br />
Frame 180/186 = velocity_y-8 or lower<br />
Frame 181/187 = velocity_y&gt;-8<br />
Frame 182/188 = velocity_y&gt;0 (can flip)<br />
Frame 183/189 = velocity_y&gt;8<br />
Frame 184/190 = (apparently unused according to rewlf2)<br />
Frame 185/191 = (bounce)<br />
Bounce happens when xspeed is &gt;10 or yspeed &gt;1. The bounce itself has a cap on its speed.<br />
<br />
If someone has a large negative yspeed, he will stay in frame 180 for some time before velocity_y exceeds -8.<br />
<br />
Putting a dvx tag in falling will not change facing direction of character, but dvy tag will change its frame because y-axis velocity is changed.<br />
<br />
Character hitting ground will be set to a fixed x and y-axis velocity which again is affected by gravity, and goes to frame 185 or 191 (forward or backward)<br />
<br />
An object with state: 12 is immune to any attack that has less than 41 fall, and will automatically drop weapon, like the effect of wpoint kind 3.<br />
<br />
<div class="tborder spoiler"><div class="spoiler_header">State: 12 machine <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>if (self_frame &gt;=180 &amp;&amp; self_frame &lt;= 191 &amp;&amp; self_type == 0)<br />
<br />
  if (position_y &lt;=0)<br />
    velocity_y = some_negative_constant<br />
    if (facing)<br />
      velocity_x = N<br />
      goto 185<br />
    else<br />
      velocity_x = -N<br />
      goto 191<br />
<br />
  if (facing)<br />
    if (velocity_y &lt; -10)<br />
      goto 180<br />
    else if (velocity_y &lt; 0)<br />
      goto 181<br />
    else if (velocity_y &lt; 6)<br />
      goto 182<br />
    else<br />
      goto 183<br />
  else<br />
    if (velocity_y &lt; -10)<br />
      goto 186<br />
    else if (velocity_y &lt; 0)<br />
      goto 187<br />
    else if (velocity_y &lt; 6)<br />
      goto 188<br />
    else<br />
      goto 189</code></div></div></div></div>
Flipping function in frame 183 and 188 are independent of state and type. I once stumbled with a glitch that allowed a type: 3 character to go to frame 108 when she's in frame 188. It appears 183 and 188 are separately hardcoded to allow flipping.<br />
<br />
<div class="tborder spoiler"><div class="spoiler_header">Flipping machine <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>if (self_frame ==183)<br />
  switch (button)<br />
    case J:<br />
      goto 100<br />
else if (self_frame ==188)<br />
  switch (button)<br />
    case J:<br />
      goto 108<br />
end switch<br />
  </code></div></div></div></div>
<span style="font-size: large;" class="mycode_size">State: 13</span><br />
<br />
Ice, State: 13 has no innate state machine, although it alters the reaction frame when attacked by an itr.<br />
<br />
<a href="http://lf-empire.de/lf2-empire/data-changing/reference-pages/182-states?showall=&amp;start=14" target="_blank" rel="noopener" class="mycode_url">A detailed explanation of state: 13 is here.</a><br />
<br />
There also seems to be a threshold for ice characters to not break if he lands on ground with too small x-axis and y-axis velocity.<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 14</span><br />
<br />
Lying, State: 14 has a condition-based state machine which either grants the character blinking status after he leaves the frame, gives a retreating warning to computer characters, or loops the frame every tu if the character has no current health.<br />
<br />
The computer-warning part is not explained here but the state machine is as follows:<br />
<br />
<div class="tborder spoiler"><div class="spoiler_header">State: 14 machine <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>if (self_health &gt;0)<br />
  emit_warning_to_hostile<br />
  // Counting down the frame normally won't be written here, should be elsewhere<br />
  goto same_frame<br />
  </code></div></div></div></div>
Note that if a character has 0 health is revived by F7, the lying frame countdown will start at when F7 is pressed.<br />
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 15</span><br />
<br />
Normal action, State 15 has no innate state machine.<br />
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 16</span><br />
<br />
Stunned, State 16 has no innate state machine.<br />
<br />
Only a character with state: 16 can interact with a hostile's itr kind: 1. The hostile will perform a grab if hostile is pressing a direction key and itr collides with state: 16 character's bdy.<br />
<br />
A stunned character can trigger a super_punch for the hostile, but it is caused by itr kind: 6.<br />
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 17</span><br />
<br />
Drinking, State 17 has no innate state machine.<br />
<br />
Frame 55-58 responsible for drinking action has NO state machine, if a character presses D in these frames, they stop drinking because there are hit_d: 999 in these frames.<br />
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 18</span><br />
<br />
The fire state uses y-axis-velocity but has no direction control.<br />
There are 4 frames representing the following:<br />
203: Upward fire 1<br />
204: Upward fire 2<br />
205: Downward fire 1<br />
206: Downward fire 2<br />
<br />
Changing frame 203-206 to use state: 15 disables the state machine.<br />
<br />
When a type: 0 character is in state: 18 and in frame 203-206, the next frame is determined by current y-axis speed.<br />
<br />
If character is going up, next frame will be 203/204, otherwise will be 205/206<br />
The exact frames are not confirmed and it is unknown if non-type: 0 share this property.<br />
<br />
A state: 18 character landing will always be directed to frame 185 (forward bouncing)<br />
<br />
state: 18 characters are immune to itr held by state: 18, 19 objects and itr with effect 20.<br />
<br />
state: 18 characters can hit projectiles (example: soul bomb's explosion and firen's inferno), itr effect: 20 doesn't hit projectiles though.<br />
<br />
<div class="tborder spoiler"><div class="spoiler_header">State: 18 machine <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>if (velocity_y &lt; 0 &amp;&amp; (self_frame == 205 || self_frame == 206) &amp;&amp; self_state == 18)<br />
  goto 203<br />
else if (velocity_y &gt; 0 &amp;&amp; (self_frame == 203 || self_frame == 204) &amp;&amp; self_state == 18)<br />
  goto 205</code></div></div></div></div>
Note that state machine doesn't change frames if characters is rising in frame 203/204 or falling in frame 205/206<br />
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 19</span><br />
<br />
Firerun, State 19 is a state that allows a z-axis movement based on running_speedz, generates fire smoke and be immune to certain fire attacks. There is no state machine on this though.<br />
<br />
state: 19 characters are immune to itr held by state: 18 objects and itr with effect 20.<br />
<br />
State: 19 characters attacking state: 3000 projectiles will change their frame to 20 (hit) not 30 (rebounding)<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 100</span><br />
<br />
Special landing, State 100 changes the mechanism on landing frames, character must be directed to frame 94 if he is landing.<br />
<br />
There is no state machine <span style="font-style: italic;" class="mycode_i">added</span>, just altered.<br />
<br />
<div class="tborder spoiler"><div class="spoiler_header">State: 100 machine <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>if (position_y &gt; 0 &amp;&amp; last_position_y &lt;= 0 &amp;&amp; self_state == 100)<br />
  goto 94<br />
  ...</code></div></div></div></div>
<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 301, 400, 401, 1700</span><br />
<br />
State 301 is a state that allows a z-axis movement,<br />
400 causes character to teleport to ~120 pixels in front of nearest enemy,<br />
401 causes character to teleport to ~60 pixels in front of furthest ally,<br />
<br />
the first frame of state: 1700 adds 100 "flashing heal" points that is the effect of itr kind: 8, which causes the character to heal up to 100 HP or the difference between red and brown HP, whichever the lower.<br />
<br />
Multiple state: 1700 frames do not stack flashing HP, but will set flashing HP to 100. In effect of state: 1700 frame the bar flashes but flashing HP does not start restoring. Only regular restoration occurs.<br />
<br />
Flashing HP shares display with healing from Jan's Angel but have independent counter. When both of them are in effect the HP bar will restore HPs with both the rate, but will a distinct interval difference between the two restoration methods.<br />
<br />
There is no state machine on these though.<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 500, 501</span><br />
<br />
Rudolf's Transform should be better explained here:<br />
<a href="http://lf-empire.de/en/lf2-empire/data-changing/advanced-dc/31-advanced-dc-type-0/228-rudolfs-transform-attack" target="_blank" rel="noopener" class="mycode_url">Rudolf's transform attack</a><br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 8XXX</span><br />
<br />
Hostage transform, State: 8XXX (8000-8999) will cause character to change into the id: XXX.<br />
This transformation will cause the character to go to frame 0 when id is changed.<br />
The character will try to use frame number with +140 offset.<br />
<br />
Transforming into Knight will try to use +140 offset sprites which normally will glitch display.<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 9995</span><br />
<br />
LouisEX transform, State: 9995 will cause character to change into the id: 50.<br />
This transformation will cause the character to go to frame 0 when id is changed.<br />
This will not give an offset on frame number<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 9996+</span><br />
<br />
9996 generates a set of LouisEX's armor<br />
9997 causes the object to take a message property.<br />
9998 deletes object<br />
9999 functions exactly like 15<br />
<br />
None of these probably ever needs state machine.<br />
<br />
<br />
<br />
<span style="font-size: x-large;" class="mycode_size">Weapon states</span><br />
<br />
<span style="font-size: large;" class="mycode_size">State: 1000</span><br />
<br />
Light weapon fly freely in sky in this state.<br />
Whether it will damage others is dependent on if this frame has an itr.<br />
<br />
Light weapons in original LF2 have no itr in any state: 1000 frames.<br />
<br />
Baseball, milk and beer will not go to frame 0-15 (which have state: 1000) even if they are hit by itr with less than 60 fall.<br />
<br />
Others light weapons will go to frame 0-15, which frame it goes to is random.<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 1001</span><br />
<br />
Held state.<br />
The weapon frame number and action is controlled by the object having wpoint interaction over it.<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 1002</span><br />
<br />
Weapon thrown in this state.<br />
This is typically directed by a wpoint throw,<br />
but milk, beer and baseball will go to thrown frames even when hit by low fall frames.<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 1003</span><br />
<br />
Weapon just on ground.<br />
Studies on non-type: 0 characters revealed if a character with weapon type drops to ground, he will go to frame 20, 21 (heavy object) or 70, 60 (light objects).<br />
<br />
Therefore state: 1003 does not have state engine, the ground collision is determined by type of object.<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 1004</span><br />
<br />
Weapon on ground.<br />
Object in this state can have a bdy that interacts with itr kind: 2 of the character, the character links the object via wpoint.<br />
<br />
1004 will cause picking character to go to picking_light frame.<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 2000</span><br />
<br />
Heavy weapon fly freely in sky in this state.<br />
Whether it will damage others is dependent on if this frame has an itr.<br />
<br />
Heavy weapons in original LF2 have itr in state: 2000 frames, thus the random stones hitting unlucky characters.<br />
<br />
If a heavy weapon is hit by itr with fall: 70+, it will change its frame to 0-5 in random.<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 2001</span><br />
<br />
Held state.<br />
The weapon frame number and action is controlled by the object having wpoint interaction over it.<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 2004</span><br />
<br />
Weapon on ground.<br />
Object in this state can have a bdy that interacts with itr kind: 2 of the character, the character links the object via wpoint.<br />
<br />
2004 will cause picking character to go to picking_heavy frame.<br />
<br />
A study revealed hit_d, hit_j and hit_a of which picking_heavy will lead to will be inherited exactly for the picking_heavy frame.<br />
<br />
If picking_heavy has next: 999 and frame 0 has hit_d: 99, when picking a heavy weapon and immediately pressing D, character will go to frame 99 but is incapable to use and commands inscribed in frame 99 (and following frames). Afterwards character goes back to heavy_walking.<br />
<br />
To fix it, set frame 117 to have next: 12 (heavy_walking)<br />
<br />
<br />
<br />
<span style="font-size: x-large;" class="mycode_size">Projectile states</span><br />
<br />
<a href="http://lf-empire.de/lf2-empire/data-changing/reference-pages/182-states?showall=&amp;start=29" target="_blank" rel="noopener" class="mycode_url">States - State 300X - Ball States</a><br />
<hr class="mycode_hr" />
<span style="font-size: x-large;" class="mycode_size">itr (interaction)</span><br />
<br />
<span style="font-size: large;" class="mycode_size">Kind: 0</span><br />
The most common interaction, this will cause the following effects:<br />
<br />
If the itr is held by type: 0 (Character), 2 (Heavy weapon), 5 (Etc),<br />
Attacker will suffer from hitlag but will not change frame.<br />
<br />
If the itr is held by id: 201/202 (Henry's arrow or Rudolf's dart) and it hits a type: 5 object, it will not change frame. (As per saving hostage with arrows and darts)<br />
<br />
If the itr is held by type: 1(light weapon), 4(baseball), 6(drink),<br />
Attacker will go to frame 0-15 in random<br />
<br />
If the itr is held by type: 3(projectile), it checks for defender's state.<br />
You can see <a href="http://lf-empire.de/lf2-empire/data-changing/reference-pages/182-states?showall=&amp;start=29" target="_blank" rel="noopener" class="mycode_url">States - State 300X - Ball States</a> for details.<br />
<br />
If a defender is type: 3 but is of state 0-15, it is found if defender is hit it will go to frame 20 or 30, depending on type of attacker. If attacker is type: 3 but is of state: 0-15, attacker will suffer from hitshake but will not change frame and will not suffer from hitlag.<br />
<br />
<div class="tborder spoiler"><div class="spoiler_header">State machine before Projectile part <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>switch (self_type)<br />
  case 0<br />
  case 2<br />
  case 5:<br />
    hitlag_function<br />
  case 1:<br />
    if (self_id == 201 || self_id == 202 || target_type == 5)<br />
      hitlag_function<br />
  case 1<br />
  case 4<br />
  case 6:<br />
    goto rand(16)<br />
  case 3:<br />
     ...<br />
end switch</code></div></div></div></div>
<span style="font-size: large;" class="mycode_size">Understanding catching and weapon itrs</span><br />
<br />
Interactions regarding weapons and catching are different in how they are activated.<br />
Allow me to introduce a term: Key-augmented input.<br />
<br />
A lot of itr use Key-augmented input,<br />
<br />
for instance, you might think itr kind: 2 on punch frames are used to pick up weapons.<br />
The truth is even if a frame has itr kind: 2, if the character does not press A in the frame, he will never pick up a weapon. It can be easily shown if you try to add itr kind: 2 into jump frames. By quickly pressing J+A you can cancel your jump and pick a weapon.<br />
<br />
To give an input to a non-type 0 character is tricky for human and extremely difficult for computer, the latter caused of AI glitching whenever a character transforms from type: 0 to another type.<br />
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">Kind: 1</span><br />
<br />
itr kind: 1 can only be activated if character presses direction key, his itr is overlapping with bdy of a hostile character with state: 16, and pressed direction key matches the x-axis displacement direction between attacker and victim:<br />
Ppressing right when victim is at right side of character will grab him, moving away from enemy or up or down will not cause itr kind: 1 to trigger. Moving Up/Down AND towards enemy triggers itr kind: 1.<br />
<br />
It then acts identical to what itr kind: 3 does.<br />
<br />
Therefore, putting an enemy into DOP will not immediately cause your character to grab him, you can move out, press A to trigger super_punch or move towards him to grab.<br />
<br />
It is proven no matter the type of character of attacker and victim, attacker can still catch victim. There's a rigid restriction on bdy of victim would be prone to any incoming attacks though.<br />
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">Kind: 2</span><br />
<br />
itr kind: 2 is an augmented weapon-picking interaction. Character must be pressing A key and the itr overlapping with bdy of an object with state 1004 or 2004 to pick a weapon. Character will go to frame 115 if picking state 1004 or frame 116 for state 2004.<br />
<br />
Normal punches have itr kind: 2 incorporated in their initial frames, automatically triggering the picking actions.<br />
<br />
hit_XX are disabled if a character is holding a heavy weapon via itr kind 2, state: 2 itself doesn't disable hit_XX.<br />
<br />
The full list of hit_XX commands:<br />
hit_Fa: -- D&gt;A<br />
hit_Fj: -- D&gt;J<br />
hit_Da: -- DvA<br />
hit_Dj: -- DvJ<br />
hit_Ua: -- D^A<br />
hit_Uj: -- D^J<br />
hit_ja: -- DJA<br />
<br />
<span style="font-size: large;" class="mycode_size">Kind: 3</span><br />
<br />
itr kind: 3 is an aggressive grab that activates whenever itr collides with bdy of type: 0 character.<br />
<br />
It's a stable alternative of itr kind: 1, even usable by uncontrolled objects including projectiles and any weapon, but cannot target anything outside type: 0.<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">Kind: 4</span><br />
<br />
itr kind: 4 acts as itr kind: 0 only if character is "thrown" into falling frames. Otherwise it will not be counted. Escaping from falling frames resets the flag that enables itr kind: 4.<br />
<br />
Escaping include being hit by fire or ice attack, flipping, or unusual means including being caught by an itr kind: 3 with fall: 70.  Anything leads character out of falling frames before dropping to ground will do. Being floated by flute (itr kind: 10) will deactivate itr kind: 4.<br />
<br />
When active, itr kind: 4 will hit objects in all teams.<br />
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">Kind: 5</span><br />
<br />
weapon attacks, implemented by itr kind: 5 is an overloaded itr that activates only if there is a character having a wpoint link with the weapon (simply speaking holding it) and character has attacking parameter equal to 1-4.<br />
<br />
The overload progress is as followed:<br />
All itr kind: 5 in a frame is loaded.<br />
attacking parameter determines which set of strength_list should be loaded.<br />
dvx, dvy, fall, vrest, arest, bdefend, injury and effect are read from weapon_strength_list in weapon .dat file<br />
<br />
<span style="font-weight: bold;" class="mycode_b">the fall value of active frame of weapon is recorded in another place</span><br />
itr kind: 5 is treated as itr kind: 0 and takes effect<br />
<br />
Apart from some wierd effects by putting weapon with effect: 4 and negative fall,<br />
itr kind: 5 has an unique effect on how it hits an enemy.<br />
<br />
I mentioned the fall in active frame is recorded, this value will determine if weapon can hit characters with state: 12 (which is immune to attacks under 41 fall)<br />
<br />
The fall in weapon_strength_list is the actual fall value given to victim.<br />
<br />
For instance, Sickle has fall: 70 in weapon_strength_list, but fall: 20 in on_hand frame. It will never hit anyone in state: 12, unless fall in itr kind: 5 frames are changed to 70.<br />
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">Kind: 6</span><br />
<br />
Any character that emits itr kind: 6 does not directly affect other characters, but if other character has an bdy that collides an itr kind: 6 box and is in state 0 or 1, doesn't hold weapon and has next: 0, pressing A will trigger frame 70 (super_punch) instead of 60 or 65.<br />
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">Kind: 7</span><br />
<br />
Itr kind: 7 is similar to itr kind: 2 except character does not go to picking_light frame, and only light weapons (state 1004) can be picked.<br />
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">Kind: 8</span><br />
<br />
Itr kind: 8 only triggers when itr box collides with a bdy of type: 0.<br />
It will set "flashing HP" of the victim character by amount of injury (victim heal for that amount over time)<br />
The attacker will teleport to the same x and z-axis position of victim and go to frame indicated by dvx value of itr.<br />
<br />
Itr kind: 8 will attack (heal) character of any team.<br />
<br />
Flashing HP of itr kind: 8 and state: 1700 won't stack with each other.<br />
<br />
An itr kind: 8 with injury NOT 100 HP, regardless of if the amount is less then current flashing HP amount, will set flashing HP value to new amount. If you are trying to use itr kind: 8 with injury: 0 tag to make some triggered moves, this will kill off flashing HP of detected character!<br />
<br />
<span style="font-size: large;" class="mycode_size">Kind: 9</span><br />
<br />
Itr kind: 9 will cause all type: 3 objects to join attacker's side and make them go frame 30.<br />
This itr when hitting a bdy of type: 0, will deplete all its health (red HP reduced to zero).<br />
STM had test showing that health of object is actually "set" to zero, therefore if an character has negative health hits someone with itr kind: 9, his health is increased although unseen.<br />
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">Kind: 10</span><br />
<br />
Itr kind: 10 is Flute (Sonata of Death) which puts type: 0characters into a floating state that looks like falling frames but has a consistent damage and dropping ground damage. The exact falling frame is dependent on y-axis velocity of victim.<br />
<br />
Weapons also are pushed upwards but do not suffer damage as type: 0 do.<br />
<br />
Type: 3 and 5 are immune to this.<br />
<br />
In floating state, victim is always facing the front side until victim is no longer pushed by itr kind: 10/11 and is hit from the back.<br />
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">Kind: 11</span><br />
<br />
Itr kind: 11 is an assisting flute that only takes effect if victim is already in float state.<br />
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">Kind: 14</span><br />
<br />
Itr kind: 14 is a blocking itr that disallows any object with bdy to move towards the itr area.<br />
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">Kind: 15</span><br />
<br />
Itr kind: 15 is a wind itr that sucks objects except type: 3 and 5. Character will continue his actions until return to standby state, and system will treat character as in-air and direct him to frame 212.<br />
<br />
Weapons will go to on_sky (possibly throwing) frames, but will not further reset frames until it has been hit or drops ground.<br />
<br />
If a baseball or drink is already in effect of state: 15, and its itr took effect earlier, its itr will not occur again (precisely the object stays in in_sky frames) until a different itr affects it.<br />
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">Kind: 16</span><br />
<br />
Itr kind: 16 is a wind itr that sucks weapons and causes a freezing effect to type: 0 without determining bdefend values. There is also no hitlag regarding itr kind: 16.]]></description>
			<content:encoded><![CDATA[This essay is aimed to provide a detailed explanation regarding how state and itr parameters take effect inside LF2.<br />
<br />
This will expand without prior notice.<br />
<br />
<span style="font-size: x-large;" class="mycode_size">Before you read on</span><br />
This essay is a collection of studies which has much deeper knowledge compared to what is hosted on LF-empire site DC tutorial.<br />
This includes research results of <span style="font-style: italic;" class="mycode_i"><a href="http://www.lf-empire.de/forum/showthread.php?tid=10715" target="_blank" rel="noopener" class="mycode_url">Managing playable type: 3, 5 characters</a></span>, which is highly abstract.<br />
The essay will frequently use terms regarding state machines, and will have a sick amount of pragmatic (and possibly incomprehensible) code and psuedocode.<br />
<br />
I would use code similar to this:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>frame XXX<br />
<br />
if (some condition)<br />
  do something<br />
  do something<br />
else<br />
  do something else<br />
<br />
frame XXX_end</code></div></div><br />
Although a player character and non-player character are designed to be type: 0, there will be a lot of facts which are tested by using non-type: 0 characters.<br />
Because of that there are a lot of possibly unwanted information but I will try to show the final results clearly.<br />
<br />
<span style="font-size: x-large;" class="mycode_size">Human States</span><br />
<br />
<span style="font-size: large;" class="mycode_size">State: 0</span><br />
<br />
The standing state.<br />
<br />
If a character's hit_a parameter is 0, it will run the following check.<br />
If hit_a isn't 0, the parameter will override the whole check. (I assume later examples will also override unless specified)<br />
<br />
If the controlling player (including computer, I assume laters samples include computers unless specified) presses A, the system will check if the character is holding a weapon.<br />
<br />
If he is holding a weapon, he has 50% chance to go to frame 20 and 50% chance to go to frame 25.<br />
If he holds no weapon, he has 50% chance to go to frame 60 and 50% chance to go to frame 65.<br />
<br />
I will explain weapon usage and super punch in details later.<br />
<br />
If a character's hit_j parameter is 0, he will go to frame 210 when J is pressed. Otherwise the parameter overrides.<br />
<br />
If a character's hit_d parameter is 0, he will go to frame 110 when D is pressed. Otherwise the parameter overrides.<br />
<br />
If direction key is pressed, character will go to one of frames 5-8, but the initial frame it goes to is neither random nor fixed.<br />
<br />
However, if both of these happen (Left and right are both or neither pressed) (up and down are both or neither pressed), the direction keys are cancelled.<br />
This can be represented by logic condition (up XNOR dn) &amp; (lt XNOR rt)<br />
<br />
A character (pragmatically, any object including weapon and projectile) has a hidden "walking counter" that counts from 0 to 5 whenever a tick has begun when the character is in state: 1.<br />
The counter starts at 0 when the character is spawned.<br />
The specific frame when a character goes to when he moves from state: 0 is:<br />
<br />
C=0 -&gt; Frame 5<br />
C=1 -&gt; Frame 6<br />
C=2 -&gt; Frame 7<br />
C=3 -&gt; Frame 8<br />
C=4 -&gt; Frame 7<br />
C=5 -&gt; Frame 6<br />
<br />
The period of a tick is equal to (walking_frame_rate+1) tu, but exe will crash if walking_frame_rate is set to 0.<br />
<br />
There is bad code hidden in lf2 that causes a simultaneous key input of JA and DA to go to frame 210 or 110 respectively, <a href="http://y2f.heliohost.org/index.php?current=Double%20Key%20Inputs.html" target="_blank" rel="noopener" class="mycode_url">listed by Yinyin here</a>.<br />
<br />
If no button is pressed, a hidden standing counter will be incremented. Whenever this character leaves a frame with state: 0, this counter is reset to 0. The counter similar to walking counter except its highest possible number is equal to total tu of walking frames.<br />
For example, if a character has standing frames with wait 3,4,5,9, the counter can go to maximum of (3+4+5+9-4) = 17tu.<br />
Which standing frame the character goes to is determined by the counter.<br />
<br />
<div class="tborder spoiler"><div class="spoiler_header">State: 0 machine <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
I could add this pile of bad code in the beginning to simulate double input:<br />
<span style="font-weight: bold;" class="mycode_b">This pile is NOT the actual thing and DO NOT TRY TO REPLICATE bad code</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>if (buttonJ &amp;&amp; buttonA)<br />
  goto 210<br />
if (buttonD &amp;&amp; buttonA)<br />
  goto 110<br />
<br />
...<br />
<br />
  </code></div></div><br />
Actual psuedocode<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>switch (button)<br />
  case A:<br />
    if (hit_a != 0)<br />
      goto hit_a<br />
    else if (hold_light_weapon)<br />
      if (rand(X) &gt; X/2)<br />
        goto 20<br />
      else<br />
        goto 25<br />
    else<br />
      if (rand(X) &gt; X/2)<br />
        goto 60<br />
      else<br />
        goto 65<br />
  case J:<br />
    if (hit_j != 0)<br />
      goto hit_j<br />
    else<br />
      goto 210<br />
  case D:<br />
    if (hit_d != 0)<br />
      goto hit_d<br />
    else<br />
      goto 110<br />
  case up<br />
  case dn<br />
  case lt<br />
  case rt:<br />
    if ((up XNOR dn) &amp; (lt XNOR rt))<br />
      switch (walking_counter)<br />
        case 0:<br />
          walking_counter++<br />
          walking_counter %= 6<br />
          /* %= takes the left variable and modulus it by the right variable, then writes back to left variable space */<br />
          goto 5<br />
        case 1<br />
        case 5:<br />
          walking_counter++<br />
          walking_counter %= 6<br />
          goto 6<br />
        case 2<br />
        case 4:<br />
          walking_counter++<br />
          walking_counter %= 6<br />
          goto 7<br />
        case 3:<br />
          walking_counter++<br />
          walking_counter %= 6<br />
          goto 8<br />
  case NULL:<br />
  // This implies no button is pressed<br />
    standing_counter++<br />
    standing_counter %= max_standing_counter<br />
    int j = 0;<br />
    int new_standing_frame = -1<br />
    bool standing_determined =  false<br />
    for (int i=0; i&lt;number_of_standing_frames &amp;&amp; new_standing_frame = -1; i++)<br />
      j += tu of standing_frame_i<br />
      if (standing_counter &lt; j)<br />
        new_standing_frame = i<br />
      end if<br />
    end for<br />
<br />
end switch</code></div></div></div></div>
Picking up a weapon is NOT related to state: 0.<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 1</span><br />
The walking state, it acts very similar to state: 0 (there are some misconception regarding this state though)<br />
<br />
It acts identically as state: 0 regarding A, J and D buttons,<br />
<br />
If direction key is held, it will determine if walking should be continued.<br />
If direction key is released, although the character will go to standing, there is a hidden running initiation counter that records the last left/right key pressed and its initial press time.<br />
If the same direction key is pressed quickly after the last key press, it will trigger running.<br />
<br />
Also notice a hit_x tag leading to running frame grants the character automatic running.<br />
<br />
<div class="tborder spoiler"><div class="spoiler_header">State: 1 machine <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>switch (button)<br />
  case A:<br />
    ...<br />
  case J:<br />
    ...<br />
  case D:<br />
    ...<br />
  case up<br />
  case dn<br />
  case lt<br />
  case rt:<br />
    if ((buttonLt &amp;&amp; last_buttonLt_time &lt; small_number &amp;&amp; last_run_dir = lt) || (buttonRt &amp;&amp; last_buttonRt_time &lt; small_number &amp;&amp;  last_run_dir = rt))<br />
    goto 8<br />
    // Running frames are less detailed, so a rough estimate on initial frame is shown<br />
    else<br />
      if ((up XNOR dn) &amp; (lt XNOR rt))<br />
      ...<br />
  case NULL:<br />
     goto 0<br />
end switch</code></div></div></div></div>
Grabbing a stunned person is NOT related to state: 1.<br />
Picking up a weapon is NOT related to state: 1.<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 2</span><br />
The running state, this also has a hidden running timer which maximum number equals to 3. It is very similar to walking counter except with 4 transitions:<br />
<br />
C=0 -&gt; Frame 9<br />
C=1 -&gt; Frame 10<br />
C=2 -&gt; Frame 11<br />
C=3 -&gt; Frame 10<br />
<br />
If hit_d parameter is 0, character will go to frame 102 (rolling) when D is pressed.<br />
<br />
If hit_j parameter is 0, character will go to frame 213 (forward dash) when J is pressed.<br />
<br />
If hit_a parameter is 0, character will check if he holds a weapon when A is pressed.<br />
If he holds weapon he goes to frame 35 (run_weapon_attack)<br />
If he doesn't hold, he goes to frame 85 (run_attack)<br />
<br />
If an opposite direction key against his running direction is pressed, he will go to frame 218 (stop_running)<br />
<br />
hit_XX are disabled if a character is holding a heavy weapon via itr kind 2, state: 2 itself doesn't disable hit_XX. For details go the section for itr kind 2.<br />
<br />
<div class="tborder spoiler"><div class="spoiler_header">State: 2 machine <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>switch (button)<br />
  case A:<br />
    if (hit_a != 0)<br />
      goto hit_a<br />
    else if (hold_light_weapon)<br />
      goto 35<br />
    else<br />
      goto 85<br />
  case J:<br />
    if (hit_j != 0)<br />
      goto hit_j<br />
    else<br />
      goto 213<br />
  case D:<br />
    if (hit_d != 0)<br />
      goto hit_d<br />
    else<br />
      goto 102<br />
  case lt<br />
  case rt:<br />
    if ((facing == rt &amp;&amp; button == lt) || (facing == lt &amp;&amp; button == rt))<br />
      goto 218<br />
  case NULL:<br />
    switch (running_counter)<br />
      case 0:<br />
        running_counter++<br />
        running_counter %= 4<br />
        goto 9<br />
      case 1<br />
      case 3:<br />
        running_counter++<br />
        running_counter %= 4<br />
        goto 10<br />
      case 2:<br />
        walking_counter++<br />
        walking_counter %= 4<br />
        goto 11<br />
    end switch<br />
end switch</code></div></div></div></div>
<span style="font-size: large;" class="mycode_size">State: 3</span><br />
<br />
State 3 is the "Attack" state, which has NO state machine inserted into it.<br />
It is very similar to State 15 except State 15 does not provoke defense on computer characters.<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 4</span><br />
<br />
The "Jump state" is an aerial state that takes some well-known and some hidden properties.<br />
<br />
If hit_a parameter is 0, character will check if he holds a weapon when A is pressed.<br />
If he holds weapon he goes to frame 30 (jump_weapon_attack)<br />
If he doesn't hold, he goes to frame 80 (jump_attack)<br />
It does not work when character is on ground.<br />
<br />
If an opposite direction key to what he's facing is pressed, he changes direction.<br />
It does not work when character is on ground.<br />
<br />
There's no J and D state machines here, but a hidden issue that if a character with state: 4 gains velocity in either direction, he will change into falling frame.<br />
This can be presented by the dazed Louis bug, where Louis tried to jump but his armor taking a hit will render him fall to ground instead.<br />
<br />
Landing in a frame with state: 4 does not mean character will go to frame 215. Frame 212 is actual cause, that regardless of its state will result in going to 215.<br />
<br />
<div class="tborder spoiler"><div class="spoiler_header">State: 4 machine <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>switch (button)<br />
  case A:<br />
    if (hit_a != 0)<br />
      goto hit_a<br />
    else if (hold_light_weapon)<br />
      goto 30<br />
    else<br />
      goto 80<br />
  case lt<br />
  case rt:<br />
    if ((facing == rt &amp;&amp; button == lt) || (facing == lt &amp;&amp; button == rt))<br />
      change_facing<br />
end switch</code></div></div></div></div>
<span style="font-size: large;" class="mycode_size">State: 5</span><br />
<br />
The dashing state uses y-axis-velocity, direction control and initial direction to interchange between 4 frames, namely 213, 214, 216 and 217.<br />
The 4 frames represent the following:<br />
213: Forward dash 1<br />
214: Forward dash 2<br />
216: Back-facing dash 1<br />
217: Back-facing dash 2<br />
<br />
If a character is in frame 213, pressing opposite direction will go to 216, vice versa.<br />
If he is in frame 214, pressing opposite direction will go to 217, vice versa.<br />
If he changes into frame 213 or 216, there's no hidden cooldown and frame countdown is refreshed.<br />
<br />
If hit_a parameter is 0 and character is in frame 213 or 216, character will check if he holds a weapon when A is pressed.<br />
If he holds weapon he goes to frame 40 (dash_weapon_attack)<br />
If he doesn't hold, he goes to frame 90 (dash_attack)<br />
<br />
Henry and Hunter can use dash backward shoot because there is hit_a: 81 written on frame 214 and 217.<br />
<br />
<div class="tborder spoiler"><div class="spoiler_header">State: 5 machine <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>switch (button)<br />
  case A:<br />
    if (hit_a != 0)<br />
      goto hit_a<br />
    else if (hold_light_weapon)<br />
      goto 40<br />
    else<br />
      goto 90<br />
  case lt<br />
  case rt:<br />
    if ((facing == rt &amp;&amp; button == lt) || (facing == lt &amp;&amp; button == rt))<br />
      change_facing<br />
end switch<br />
<br />
if (frame == 216 &amp;&amp; new_facing == initial_facing)<br />
  goto 213<br />
else if (frame == 213 &amp;&amp; new_facing != initial_facing)<br />
  goto 216</code></div></div></div></div>
<br />
<span style="font-size: large;" class="mycode_size">State: 6</span><br />
<br />
Rolling/Flipping State: 6 is identical to state: 15, has no effect on computer behavior and has NO state machines in it.<br />
<br />
When a player is rolling he can press A to pick a weapon, however it is NOT caused by state: 6, but itr kind: 7. <br />
<br />
If a character in state: 6 lands from air, he goes to frame 215. Character in frame 212 landing will also go to frame 215.<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 7</span><br />
<br />
State 7, the defending state is a well-known state for developing special characters.<br />
Apart from its defense system which is well covered by others, there are something regarding hit_x keys about state: 7.<br />
<br />
If a character is in state 7 and frame 110, and takes a blow that doesn't break his defense, he will go to frame 111.<br />
<br />
Taking a blow that doesn't break defense outside frame 100 won't change frame.<br />
<br />
Breaking defense makes character go to 112, but if character is in air or grabbed into state: 7 frame, his state: 7 frame cannot be broken.<br />
<br />
Nonetheless an attack with bdefend &gt;60 can negate state: 7.<br />
<br />
If a character in frame 110 (but not necessary in state: 7), he can change his direction if he presses opposite direction key as his current facing.<br />
This only affects frame 110.<br />
<br />
<div class="tborder spoiler"><div class="spoiler_header">frame 110 machine <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>switch (button)<br />
  case lt<br />
  case rt:<br />
    if (((facing == rt &amp;&amp; button == lt) || (facing == lt &amp;&amp; button == rt)) &amp;&amp; self_frame == 110)<br />
      change_facing<br />
end switch</code></div></div></div></div><hr class="mycode_hr" />
<span style="font-size: large;" class="mycode_size">State: 8</span><br />
<br />
Broken defend State: 8 is identical to state: 15, has no effect on computer behavior and has NO state machines in it.<br />
<br />
When a player is in broken_defend frames, hostile character pressing A will go to frame 70 (super_punch), but it is not caused by state: 8 but itr kind: 6 emitted by the frames.<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 9</span><br />
<br />
Catching, State 9 has no innate state machine.<br />
<br />
The catching properties is done by cpoint parameters.<br />
<br />
In an experiment, putting state: 0 on frame 121 overrides all cpoint properties, so there's little need for a separate state machine on state 9.<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 10</span><br />
<br />
Caught, State 10 has no innate state machine.<br />
<br />
Object from any team can interact with an object in state: 10.<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 11</span><br />
<br />
Injured, State 11 has no innate state machine.<br />
<br />
Knight and Julian lose innate armor in state 8, 10, 11, 16,<br />
Louis's armor is only effective in frame 0-19 or state: 4, 5 frames.<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 12</span><br />
<br />
Falling, State 12 has a state machine when the object is also a type: 0.<br />
Any non-character with state: 12 frames are not affected.<br />
<br />
The state machine is similar to dash system, using y-axis velocity and facing direction to display falling animation.<br />
<br />
Any characters being sent to falling frame will either start in 180 or 186.<br />
He will immediately go to frame the machine indicated after 1tu.<br />
The frame which the character will go to is as follows:<br />
<br />
Frame 180/186 = velocity_y-8 or lower<br />
Frame 181/187 = velocity_y&gt;-8<br />
Frame 182/188 = velocity_y&gt;0 (can flip)<br />
Frame 183/189 = velocity_y&gt;8<br />
Frame 184/190 = (apparently unused according to rewlf2)<br />
Frame 185/191 = (bounce)<br />
Bounce happens when xspeed is &gt;10 or yspeed &gt;1. The bounce itself has a cap on its speed.<br />
<br />
If someone has a large negative yspeed, he will stay in frame 180 for some time before velocity_y exceeds -8.<br />
<br />
Putting a dvx tag in falling will not change facing direction of character, but dvy tag will change its frame because y-axis velocity is changed.<br />
<br />
Character hitting ground will be set to a fixed x and y-axis velocity which again is affected by gravity, and goes to frame 185 or 191 (forward or backward)<br />
<br />
An object with state: 12 is immune to any attack that has less than 41 fall, and will automatically drop weapon, like the effect of wpoint kind 3.<br />
<br />
<div class="tborder spoiler"><div class="spoiler_header">State: 12 machine <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>if (self_frame &gt;=180 &amp;&amp; self_frame &lt;= 191 &amp;&amp; self_type == 0)<br />
<br />
  if (position_y &lt;=0)<br />
    velocity_y = some_negative_constant<br />
    if (facing)<br />
      velocity_x = N<br />
      goto 185<br />
    else<br />
      velocity_x = -N<br />
      goto 191<br />
<br />
  if (facing)<br />
    if (velocity_y &lt; -10)<br />
      goto 180<br />
    else if (velocity_y &lt; 0)<br />
      goto 181<br />
    else if (velocity_y &lt; 6)<br />
      goto 182<br />
    else<br />
      goto 183<br />
  else<br />
    if (velocity_y &lt; -10)<br />
      goto 186<br />
    else if (velocity_y &lt; 0)<br />
      goto 187<br />
    else if (velocity_y &lt; 6)<br />
      goto 188<br />
    else<br />
      goto 189</code></div></div></div></div>
Flipping function in frame 183 and 188 are independent of state and type. I once stumbled with a glitch that allowed a type: 3 character to go to frame 108 when she's in frame 188. It appears 183 and 188 are separately hardcoded to allow flipping.<br />
<br />
<div class="tborder spoiler"><div class="spoiler_header">Flipping machine <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>if (self_frame ==183)<br />
  switch (button)<br />
    case J:<br />
      goto 100<br />
else if (self_frame ==188)<br />
  switch (button)<br />
    case J:<br />
      goto 108<br />
end switch<br />
  </code></div></div></div></div>
<span style="font-size: large;" class="mycode_size">State: 13</span><br />
<br />
Ice, State: 13 has no innate state machine, although it alters the reaction frame when attacked by an itr.<br />
<br />
<a href="http://lf-empire.de/lf2-empire/data-changing/reference-pages/182-states?showall=&amp;start=14" target="_blank" rel="noopener" class="mycode_url">A detailed explanation of state: 13 is here.</a><br />
<br />
There also seems to be a threshold for ice characters to not break if he lands on ground with too small x-axis and y-axis velocity.<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 14</span><br />
<br />
Lying, State: 14 has a condition-based state machine which either grants the character blinking status after he leaves the frame, gives a retreating warning to computer characters, or loops the frame every tu if the character has no current health.<br />
<br />
The computer-warning part is not explained here but the state machine is as follows:<br />
<br />
<div class="tborder spoiler"><div class="spoiler_header">State: 14 machine <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>if (self_health &gt;0)<br />
  emit_warning_to_hostile<br />
  // Counting down the frame normally won't be written here, should be elsewhere<br />
  goto same_frame<br />
  </code></div></div></div></div>
Note that if a character has 0 health is revived by F7, the lying frame countdown will start at when F7 is pressed.<br />
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 15</span><br />
<br />
Normal action, State 15 has no innate state machine.<br />
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 16</span><br />
<br />
Stunned, State 16 has no innate state machine.<br />
<br />
Only a character with state: 16 can interact with a hostile's itr kind: 1. The hostile will perform a grab if hostile is pressing a direction key and itr collides with state: 16 character's bdy.<br />
<br />
A stunned character can trigger a super_punch for the hostile, but it is caused by itr kind: 6.<br />
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 17</span><br />
<br />
Drinking, State 17 has no innate state machine.<br />
<br />
Frame 55-58 responsible for drinking action has NO state machine, if a character presses D in these frames, they stop drinking because there are hit_d: 999 in these frames.<br />
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 18</span><br />
<br />
The fire state uses y-axis-velocity but has no direction control.<br />
There are 4 frames representing the following:<br />
203: Upward fire 1<br />
204: Upward fire 2<br />
205: Downward fire 1<br />
206: Downward fire 2<br />
<br />
Changing frame 203-206 to use state: 15 disables the state machine.<br />
<br />
When a type: 0 character is in state: 18 and in frame 203-206, the next frame is determined by current y-axis speed.<br />
<br />
If character is going up, next frame will be 203/204, otherwise will be 205/206<br />
The exact frames are not confirmed and it is unknown if non-type: 0 share this property.<br />
<br />
A state: 18 character landing will always be directed to frame 185 (forward bouncing)<br />
<br />
state: 18 characters are immune to itr held by state: 18, 19 objects and itr with effect 20.<br />
<br />
state: 18 characters can hit projectiles (example: soul bomb's explosion and firen's inferno), itr effect: 20 doesn't hit projectiles though.<br />
<br />
<div class="tborder spoiler"><div class="spoiler_header">State: 18 machine <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>if (velocity_y &lt; 0 &amp;&amp; (self_frame == 205 || self_frame == 206) &amp;&amp; self_state == 18)<br />
  goto 203<br />
else if (velocity_y &gt; 0 &amp;&amp; (self_frame == 203 || self_frame == 204) &amp;&amp; self_state == 18)<br />
  goto 205</code></div></div></div></div>
Note that state machine doesn't change frames if characters is rising in frame 203/204 or falling in frame 205/206<br />
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 19</span><br />
<br />
Firerun, State 19 is a state that allows a z-axis movement based on running_speedz, generates fire smoke and be immune to certain fire attacks. There is no state machine on this though.<br />
<br />
state: 19 characters are immune to itr held by state: 18 objects and itr with effect 20.<br />
<br />
State: 19 characters attacking state: 3000 projectiles will change their frame to 20 (hit) not 30 (rebounding)<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 100</span><br />
<br />
Special landing, State 100 changes the mechanism on landing frames, character must be directed to frame 94 if he is landing.<br />
<br />
There is no state machine <span style="font-style: italic;" class="mycode_i">added</span>, just altered.<br />
<br />
<div class="tborder spoiler"><div class="spoiler_header">State: 100 machine <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>if (position_y &gt; 0 &amp;&amp; last_position_y &lt;= 0 &amp;&amp; self_state == 100)<br />
  goto 94<br />
  ...</code></div></div></div></div>
<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 301, 400, 401, 1700</span><br />
<br />
State 301 is a state that allows a z-axis movement,<br />
400 causes character to teleport to ~120 pixels in front of nearest enemy,<br />
401 causes character to teleport to ~60 pixels in front of furthest ally,<br />
<br />
the first frame of state: 1700 adds 100 "flashing heal" points that is the effect of itr kind: 8, which causes the character to heal up to 100 HP or the difference between red and brown HP, whichever the lower.<br />
<br />
Multiple state: 1700 frames do not stack flashing HP, but will set flashing HP to 100. In effect of state: 1700 frame the bar flashes but flashing HP does not start restoring. Only regular restoration occurs.<br />
<br />
Flashing HP shares display with healing from Jan's Angel but have independent counter. When both of them are in effect the HP bar will restore HPs with both the rate, but will a distinct interval difference between the two restoration methods.<br />
<br />
There is no state machine on these though.<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 500, 501</span><br />
<br />
Rudolf's Transform should be better explained here:<br />
<a href="http://lf-empire.de/en/lf2-empire/data-changing/advanced-dc/31-advanced-dc-type-0/228-rudolfs-transform-attack" target="_blank" rel="noopener" class="mycode_url">Rudolf's transform attack</a><br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 8XXX</span><br />
<br />
Hostage transform, State: 8XXX (8000-8999) will cause character to change into the id: XXX.<br />
This transformation will cause the character to go to frame 0 when id is changed.<br />
The character will try to use frame number with +140 offset.<br />
<br />
Transforming into Knight will try to use +140 offset sprites which normally will glitch display.<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 9995</span><br />
<br />
LouisEX transform, State: 9995 will cause character to change into the id: 50.<br />
This transformation will cause the character to go to frame 0 when id is changed.<br />
This will not give an offset on frame number<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 9996+</span><br />
<br />
9996 generates a set of LouisEX's armor<br />
9997 causes the object to take a message property.<br />
9998 deletes object<br />
9999 functions exactly like 15<br />
<br />
None of these probably ever needs state machine.<br />
<br />
<br />
<br />
<span style="font-size: x-large;" class="mycode_size">Weapon states</span><br />
<br />
<span style="font-size: large;" class="mycode_size">State: 1000</span><br />
<br />
Light weapon fly freely in sky in this state.<br />
Whether it will damage others is dependent on if this frame has an itr.<br />
<br />
Light weapons in original LF2 have no itr in any state: 1000 frames.<br />
<br />
Baseball, milk and beer will not go to frame 0-15 (which have state: 1000) even if they are hit by itr with less than 60 fall.<br />
<br />
Others light weapons will go to frame 0-15, which frame it goes to is random.<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 1001</span><br />
<br />
Held state.<br />
The weapon frame number and action is controlled by the object having wpoint interaction over it.<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 1002</span><br />
<br />
Weapon thrown in this state.<br />
This is typically directed by a wpoint throw,<br />
but milk, beer and baseball will go to thrown frames even when hit by low fall frames.<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 1003</span><br />
<br />
Weapon just on ground.<br />
Studies on non-type: 0 characters revealed if a character with weapon type drops to ground, he will go to frame 20, 21 (heavy object) or 70, 60 (light objects).<br />
<br />
Therefore state: 1003 does not have state engine, the ground collision is determined by type of object.<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 1004</span><br />
<br />
Weapon on ground.<br />
Object in this state can have a bdy that interacts with itr kind: 2 of the character, the character links the object via wpoint.<br />
<br />
1004 will cause picking character to go to picking_light frame.<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 2000</span><br />
<br />
Heavy weapon fly freely in sky in this state.<br />
Whether it will damage others is dependent on if this frame has an itr.<br />
<br />
Heavy weapons in original LF2 have itr in state: 2000 frames, thus the random stones hitting unlucky characters.<br />
<br />
If a heavy weapon is hit by itr with fall: 70+, it will change its frame to 0-5 in random.<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 2001</span><br />
<br />
Held state.<br />
The weapon frame number and action is controlled by the object having wpoint interaction over it.<br />
<br />
<span style="font-size: large;" class="mycode_size">State: 2004</span><br />
<br />
Weapon on ground.<br />
Object in this state can have a bdy that interacts with itr kind: 2 of the character, the character links the object via wpoint.<br />
<br />
2004 will cause picking character to go to picking_heavy frame.<br />
<br />
A study revealed hit_d, hit_j and hit_a of which picking_heavy will lead to will be inherited exactly for the picking_heavy frame.<br />
<br />
If picking_heavy has next: 999 and frame 0 has hit_d: 99, when picking a heavy weapon and immediately pressing D, character will go to frame 99 but is incapable to use and commands inscribed in frame 99 (and following frames). Afterwards character goes back to heavy_walking.<br />
<br />
To fix it, set frame 117 to have next: 12 (heavy_walking)<br />
<br />
<br />
<br />
<span style="font-size: x-large;" class="mycode_size">Projectile states</span><br />
<br />
<a href="http://lf-empire.de/lf2-empire/data-changing/reference-pages/182-states?showall=&amp;start=29" target="_blank" rel="noopener" class="mycode_url">States - State 300X - Ball States</a><br />
<hr class="mycode_hr" />
<span style="font-size: x-large;" class="mycode_size">itr (interaction)</span><br />
<br />
<span style="font-size: large;" class="mycode_size">Kind: 0</span><br />
The most common interaction, this will cause the following effects:<br />
<br />
If the itr is held by type: 0 (Character), 2 (Heavy weapon), 5 (Etc),<br />
Attacker will suffer from hitlag but will not change frame.<br />
<br />
If the itr is held by id: 201/202 (Henry's arrow or Rudolf's dart) and it hits a type: 5 object, it will not change frame. (As per saving hostage with arrows and darts)<br />
<br />
If the itr is held by type: 1(light weapon), 4(baseball), 6(drink),<br />
Attacker will go to frame 0-15 in random<br />
<br />
If the itr is held by type: 3(projectile), it checks for defender's state.<br />
You can see <a href="http://lf-empire.de/lf2-empire/data-changing/reference-pages/182-states?showall=&amp;start=29" target="_blank" rel="noopener" class="mycode_url">States - State 300X - Ball States</a> for details.<br />
<br />
If a defender is type: 3 but is of state 0-15, it is found if defender is hit it will go to frame 20 or 30, depending on type of attacker. If attacker is type: 3 but is of state: 0-15, attacker will suffer from hitshake but will not change frame and will not suffer from hitlag.<br />
<br />
<div class="tborder spoiler"><div class="spoiler_header">State machine before Projectile part <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>switch (self_type)<br />
  case 0<br />
  case 2<br />
  case 5:<br />
    hitlag_function<br />
  case 1:<br />
    if (self_id == 201 || self_id == 202 || target_type == 5)<br />
      hitlag_function<br />
  case 1<br />
  case 4<br />
  case 6:<br />
    goto rand(16)<br />
  case 3:<br />
     ...<br />
end switch</code></div></div></div></div>
<span style="font-size: large;" class="mycode_size">Understanding catching and weapon itrs</span><br />
<br />
Interactions regarding weapons and catching are different in how they are activated.<br />
Allow me to introduce a term: Key-augmented input.<br />
<br />
A lot of itr use Key-augmented input,<br />
<br />
for instance, you might think itr kind: 2 on punch frames are used to pick up weapons.<br />
The truth is even if a frame has itr kind: 2, if the character does not press A in the frame, he will never pick up a weapon. It can be easily shown if you try to add itr kind: 2 into jump frames. By quickly pressing J+A you can cancel your jump and pick a weapon.<br />
<br />
To give an input to a non-type 0 character is tricky for human and extremely difficult for computer, the latter caused of AI glitching whenever a character transforms from type: 0 to another type.<br />
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">Kind: 1</span><br />
<br />
itr kind: 1 can only be activated if character presses direction key, his itr is overlapping with bdy of a hostile character with state: 16, and pressed direction key matches the x-axis displacement direction between attacker and victim:<br />
Ppressing right when victim is at right side of character will grab him, moving away from enemy or up or down will not cause itr kind: 1 to trigger. Moving Up/Down AND towards enemy triggers itr kind: 1.<br />
<br />
It then acts identical to what itr kind: 3 does.<br />
<br />
Therefore, putting an enemy into DOP will not immediately cause your character to grab him, you can move out, press A to trigger super_punch or move towards him to grab.<br />
<br />
It is proven no matter the type of character of attacker and victim, attacker can still catch victim. There's a rigid restriction on bdy of victim would be prone to any incoming attacks though.<br />
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">Kind: 2</span><br />
<br />
itr kind: 2 is an augmented weapon-picking interaction. Character must be pressing A key and the itr overlapping with bdy of an object with state 1004 or 2004 to pick a weapon. Character will go to frame 115 if picking state 1004 or frame 116 for state 2004.<br />
<br />
Normal punches have itr kind: 2 incorporated in their initial frames, automatically triggering the picking actions.<br />
<br />
hit_XX are disabled if a character is holding a heavy weapon via itr kind 2, state: 2 itself doesn't disable hit_XX.<br />
<br />
The full list of hit_XX commands:<br />
hit_Fa: -- D&gt;A<br />
hit_Fj: -- D&gt;J<br />
hit_Da: -- DvA<br />
hit_Dj: -- DvJ<br />
hit_Ua: -- D^A<br />
hit_Uj: -- D^J<br />
hit_ja: -- DJA<br />
<br />
<span style="font-size: large;" class="mycode_size">Kind: 3</span><br />
<br />
itr kind: 3 is an aggressive grab that activates whenever itr collides with bdy of type: 0 character.<br />
<br />
It's a stable alternative of itr kind: 1, even usable by uncontrolled objects including projectiles and any weapon, but cannot target anything outside type: 0.<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">Kind: 4</span><br />
<br />
itr kind: 4 acts as itr kind: 0 only if character is "thrown" into falling frames. Otherwise it will not be counted. Escaping from falling frames resets the flag that enables itr kind: 4.<br />
<br />
Escaping include being hit by fire or ice attack, flipping, or unusual means including being caught by an itr kind: 3 with fall: 70.  Anything leads character out of falling frames before dropping to ground will do. Being floated by flute (itr kind: 10) will deactivate itr kind: 4.<br />
<br />
When active, itr kind: 4 will hit objects in all teams.<br />
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">Kind: 5</span><br />
<br />
weapon attacks, implemented by itr kind: 5 is an overloaded itr that activates only if there is a character having a wpoint link with the weapon (simply speaking holding it) and character has attacking parameter equal to 1-4.<br />
<br />
The overload progress is as followed:<br />
All itr kind: 5 in a frame is loaded.<br />
attacking parameter determines which set of strength_list should be loaded.<br />
dvx, dvy, fall, vrest, arest, bdefend, injury and effect are read from weapon_strength_list in weapon .dat file<br />
<br />
<span style="font-weight: bold;" class="mycode_b">the fall value of active frame of weapon is recorded in another place</span><br />
itr kind: 5 is treated as itr kind: 0 and takes effect<br />
<br />
Apart from some wierd effects by putting weapon with effect: 4 and negative fall,<br />
itr kind: 5 has an unique effect on how it hits an enemy.<br />
<br />
I mentioned the fall in active frame is recorded, this value will determine if weapon can hit characters with state: 12 (which is immune to attacks under 41 fall)<br />
<br />
The fall in weapon_strength_list is the actual fall value given to victim.<br />
<br />
For instance, Sickle has fall: 70 in weapon_strength_list, but fall: 20 in on_hand frame. It will never hit anyone in state: 12, unless fall in itr kind: 5 frames are changed to 70.<br />
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">Kind: 6</span><br />
<br />
Any character that emits itr kind: 6 does not directly affect other characters, but if other character has an bdy that collides an itr kind: 6 box and is in state 0 or 1, doesn't hold weapon and has next: 0, pressing A will trigger frame 70 (super_punch) instead of 60 or 65.<br />
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">Kind: 7</span><br />
<br />
Itr kind: 7 is similar to itr kind: 2 except character does not go to picking_light frame, and only light weapons (state 1004) can be picked.<br />
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">Kind: 8</span><br />
<br />
Itr kind: 8 only triggers when itr box collides with a bdy of type: 0.<br />
It will set "flashing HP" of the victim character by amount of injury (victim heal for that amount over time)<br />
The attacker will teleport to the same x and z-axis position of victim and go to frame indicated by dvx value of itr.<br />
<br />
Itr kind: 8 will attack (heal) character of any team.<br />
<br />
Flashing HP of itr kind: 8 and state: 1700 won't stack with each other.<br />
<br />
An itr kind: 8 with injury NOT 100 HP, regardless of if the amount is less then current flashing HP amount, will set flashing HP value to new amount. If you are trying to use itr kind: 8 with injury: 0 tag to make some triggered moves, this will kill off flashing HP of detected character!<br />
<br />
<span style="font-size: large;" class="mycode_size">Kind: 9</span><br />
<br />
Itr kind: 9 will cause all type: 3 objects to join attacker's side and make them go frame 30.<br />
This itr when hitting a bdy of type: 0, will deplete all its health (red HP reduced to zero).<br />
STM had test showing that health of object is actually "set" to zero, therefore if an character has negative health hits someone with itr kind: 9, his health is increased although unseen.<br />
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">Kind: 10</span><br />
<br />
Itr kind: 10 is Flute (Sonata of Death) which puts type: 0characters into a floating state that looks like falling frames but has a consistent damage and dropping ground damage. The exact falling frame is dependent on y-axis velocity of victim.<br />
<br />
Weapons also are pushed upwards but do not suffer damage as type: 0 do.<br />
<br />
Type: 3 and 5 are immune to this.<br />
<br />
In floating state, victim is always facing the front side until victim is no longer pushed by itr kind: 10/11 and is hit from the back.<br />
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">Kind: 11</span><br />
<br />
Itr kind: 11 is an assisting flute that only takes effect if victim is already in float state.<br />
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">Kind: 14</span><br />
<br />
Itr kind: 14 is a blocking itr that disallows any object with bdy to move towards the itr area.<br />
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">Kind: 15</span><br />
<br />
Itr kind: 15 is a wind itr that sucks objects except type: 3 and 5. Character will continue his actions until return to standby state, and system will treat character as in-air and direct him to frame 212.<br />
<br />
Weapons will go to on_sky (possibly throwing) frames, but will not further reset frames until it has been hit or drops ground.<br />
<br />
If a baseball or drink is already in effect of state: 15, and its itr took effect earlier, its itr will not occur again (precisely the object stays in in_sky frames) until a different itr affects it.<br />
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">Kind: 16</span><br />
<br />
Itr kind: 16 is a wind itr that sucks weapons and causes a freezing effect to type: 0 without determining bdefend values. There is also no hitlag regarding itr kind: 16.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Knight - using 3 spritesheets!]]></title>
			<link>https://lf-empire.de/forum/showthread.php?tid=10726</link>
			<pubDate>Wed, 09 Aug 2017 11:36:04 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://lf-empire.de/forum/member.php?action=profile&uid=7">STM1993</a>]]></dc:creator>
			<guid isPermaLink="false">https://lf-empire.de/forum/showthread.php?tid=10726</guid>
			<description><![CDATA[Knight has always been a troublesome character DC-wise. He is hardcoded to use +114 to pic for his _b sprite, but using state 8037 just results in the Knight appearing messed up because it still uses +140 to pic. Either you make him look good in Battle, or able to work with state 8xxx.<br />
<img src="https://i.imgur.com/tKZ7MPg.png" alt="[Image: tKZ7MPg.png]" class="mycode_img" /><br />
NO LONGER SHALL THIS TROUBLE YOU! Introducing the data &amp; sprite edit template for the Knight that allows you to have the best of both worlds!<br />
<br />
Just to give an idea of how its done:<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;DC-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="dc" style="font-family&#58;monospace;"><span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">0</span>-<span style="color&#58; #000000; font-weight&#58; bold;">25</span><span class="br0">&#41;</span>&#58;    sprite\knight\knight&#95;0&#46;bmp     <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span>  <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">13</span>  <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">4</span>   <span style="color&#58; #777777;">#1  unused 26-51</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">52</span>-<span style="color&#58; #000000; font-weight&#58; bold;">77</span><span class="br0">&#41;</span>&#58;   sprite\knight\knight&#95;1&#46;bmp     <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span>  <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">13</span>  <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">4</span>   <span style="color&#58; #777777;">#2  unused 78-103</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">104</span>-<span style="color&#58; #000000; font-weight&#58; bold;">108</span><span class="br0">&#41;</span>&#58; sprite\knight\knight&#95;2&#46;bmp     <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span>  <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">5</span>   <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">2</span>   <span style="color&#58; #777777;">#3  unused 109-113</span>
   <span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">114</span>-<span style="color&#58; #000000; font-weight&#58; bold;">139</span><span class="br0">&#41;</span>&#58;   sprite\knight\knight&#95;0b&#46;bmp   <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span>  <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">13</span>  <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">4</span>    <span style="color&#58; #777777;">#4 0c = &#40;140-165&#41;</span>
   <span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">166</span>-<span style="color&#58; #000000; font-weight&#58; bold;">191</span><span class="br0">&#41;</span>&#58;   sprite\knight\knight&#95;1b&#46;bmp   <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span>  <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">13</span>  <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">4</span>    <span style="color&#58; #777777;">#5 1c = &#40;192-217&#41;</span>
   <span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">218</span>-<span style="color&#58; #000000; font-weight&#58; bold;">222</span><span class="br0">&#41;</span>&#58;   sprite\knight\knight&#95;2b&#46;bmp   <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span>  <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">13</span>   <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">3</span>    <span style="color&#58; #777777;">#6 2c = &#40;244-247&#41; unused 248-256</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">257</span>-<span style="color&#58; #000000; font-weight&#58; bold;">269</span><span class="br0">&#41;</span>&#58; sprite\knight\knight&#95;3&#46;bmp     <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">109</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span>  <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">13</span>  <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">2</span>   <span style="color&#58; #777777;">#7</span>
   <span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">270</span>-<span style="color&#58; #000000; font-weight&#58; bold;">341</span><span class="br0">&#41;</span>&#58;   sprite\knight\nth&#46;bmp           <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span>   <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span>   <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">88</span>  <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span>  <span style="color&#58; #777777;">#8</span>
   <span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">371</span>-<span style="color&#58; #000000; font-weight&#58; bold;">396</span><span class="br0">&#41;</span>&#58;   sprite\knight\knight&#95;3b&#46;bmp     <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">109</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span>  <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">13</span>  <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">3</span>  <span style="color&#58; #777777;">#9 3c = &#40;397-408&#41;</span></pre></code></div></div>
		</td></tr></table><br />
Knight_0b - containing the Battle b sprite, and the _c sprite used for state 8xxx (courtesy of Hari)<br />
<img src="https://i.imgur.com/LqY7YWB.png" alt="[Image: LqY7YWB.png]" class="mycode_img" /><br />
As you can see, I was able to fit almost all the sprites into 9 out of 10 bitmap slots, into sections of 26 at most. I only needed to use 1 filler slot, though that filler can potentially be converted for in a new spritesheet. I said "almost all sprites" because I removed 2 specific injury sprites that are identical to his grab attack sprites.<br />
<br />
Feel free to use this "template" for your LF2 modding projects!<br />
<br />
<span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">Download:</span></span><br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://lf-empire.de/forum/images/attachtypes/zip.gif" title="Zip File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=3572" target="_blank" title="">Knight 3 Pic.zip</a> (Size: 1.62 MB / Downloads: 413)
<!-- end: postbit_attachments_attachment --><br />
<br />
As a bonus, here's an old pack which contains b_sprites for ALL characters:<br />
<a href="https://www.lf-empire.de/forum/showthread.php?tid=10573&amp;pid=204649#pid204649" target="_blank" rel="noopener" class="mycode_url">https://www.lf-empire.de/forum/showthrea...#pid204649</a><br />
<br />
Enjoy!<br />
Credits to Hari for the new knight sprite.<br />
<br />
edit: I decided to update this after taking some notes from YinYin's goldknight, see the original post in the spoiler below.<br />
<br />
<hr class="mycode_hr" />
<br />
<div class="tborder spoiler"><div class="spoiler_header">Original Post <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
Knight has always been a troublesome character DC-wise. He is hardcoded to use +114 to pic for his _b sprite, but using state 8037 just results in the Knight appearing messed up because it still uses +140 to pic. Either you make him look good in Battle, or able to work with state 8xxx.<br />
<img src="https://cdn.discordapp.com/attachments/257435658333716480/344768825796853761/unknown.png" alt="[Image: unknown.png]" class="mycode_img" /><br />
NO LONGER SHALL THIS TROUBLE YOU! Introducing the data &amp; sprite edit template for the Knight that allows you to have the best of both worlds!<br />
<br />
Just to give an idea of how its done:<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;DC-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="dc" style="font-family&#58;monospace;"><span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">0</span>-<span style="color&#58; #000000; font-weight&#58; bold;">25</span><span class="br0">&#41;</span>&#58;    sprite\sys\knight&#95;0&#46;bmp     <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span>  <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">10</span>  <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">6</span>   <span style="color&#58; #777777;">#1 unused 26-59</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">60</span>-<span style="color&#58; #000000; font-weight&#58; bold;">83</span><span class="br0">&#41;</span>&#58;   sprite\sys\knight&#95;1&#46;bmp     <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span>  <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">10</span>  <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">3</span>   <span style="color&#58; #777777;">#2</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">90</span>-<span style="color&#58; #000000; font-weight&#58; bold;">113</span><span class="br0">&#41;</span>&#58;  sprite\sys\knight&#95;0&#46;bmp          <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span>   <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span>   <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">6</span>   <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">4</span>   <span style="color&#58; #777777;">#3 nothing</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">114</span>-<span style="color&#58; #000000; font-weight&#58; bold;">139</span><span class="br0">&#41;</span>&#58; sprite\sys\knight&#95;0b&#46;bmp    <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span>  <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">10</span>  <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">6</span>   <span style="color&#58; #777777;">#4 end144   c140-165</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">174</span>-<span style="color&#58; #000000; font-weight&#58; bold;">197</span><span class="br0">&#41;</span>&#58; sprite\sys\knight&#95;1b&#46;bmp    <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span>  <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">10</span>  <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">5</span>   <span style="color&#58; #777777;">#5 end199   c200-223</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">224</span>-<span style="color&#58; #000000; font-weight&#58; bold;">231</span><span class="br0">&#41;</span>&#58; sprite\sys\knight&#95;2&#46;bmp     <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span>  <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">10</span>  <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">4</span>   <span style="color&#58; #777777;">#6 end263</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">264</span>-<span style="color&#58; #000000; font-weight&#58; bold;">275</span><span class="br0">&#41;</span>&#58; sprite\sys\knight&#95;3&#46;bmp     <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">109</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span>  <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">7</span>   <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">2</span>   <span style="color&#58; #777777;">#7 end277</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">278</span>-<span style="color&#58; #000000; font-weight&#58; bold;">337</span><span class="br0">&#41;</span>&#58; sprite\sys\knight&#95;0&#46;bmp          <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span>   <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span>   <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">10</span>  <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">6</span>   <span style="color&#58; #777777;">#8 nothing</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">338</span>-<span style="color&#58; #000000; font-weight&#58; bold;">345</span><span class="br0">&#41;</span>&#58; sprite\sys\knight&#95;2b&#46;bmp    <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span>  <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">10</span>  <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">4</span>   <span style="color&#58; #777777;">#9 end347   c364-371</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">378</span>-<span style="color&#58; #000000; font-weight&#58; bold;">389</span><span class="br0">&#41;</span>&#58; sprite\sys\knight&#95;3b&#46;bmp    <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">109</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span>  <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">7</span>   <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">6</span>   <span style="color&#58; #777777;">#10 end361  c404-415</span></pre></code></div></div>
		</td></tr></table><br />
<div class="tborder spoiler"><div class="spoiler_header">Sample of knight_0.bmp <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">Knight_0<br />
<img src="http://i.imgur.com/7NViwdA.png" alt="[Image: 7NViwdA.png]" class="mycode_img" /><br />
Knight_0b - containing the Battle b sprite, and the _c sprite used for state 8xxx (courtesy of Ramond, downloaded from <a href="http://www.lf-empire.de/html/skins/Knight-mod_02.html" target="_blank" rel="noopener" class="mycode_url">LFE mainsite</a>).<br />
<img src="http://i.imgur.com/fYi2szA.png" alt="[Image: fYi2szA.png]" class="mycode_img" /></div></div>
As you can see, I was forced to use all 10 bitmap slots and split the sprites into sections of 26 at most, and put a bunch of filler slots to make this possible. So it might be quite difficult to add new moves to Knight with whole new sprites, but that's the price to pay for fixing the darned _b sprite problem without using exe editting methods.<br />
<br />
Feel free to use this "template" for your LF2 modding projects!<br />
<br />
<span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">Download:</span></span><br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://lf-empire.de/forum/images/attachtypes/zip.gif" title="Zip File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=3569" target="_blank" title="">TripleSpriteKnight.zip</a> (Size: 1.38 MB / Downloads: 347)
<!-- end: postbit_attachments_attachment --><br />
<br />
Enjoy!<br />
<br />
<br />
<hr class="mycode_hr" />
<br />
<br />
edit:<br />
So it turns out YinYin already beat me to it long before about 4.5 years ago, and it looks like he was even more efficient...<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;DC-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="dc" style="font-family&#58;monospace;"><span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">0</span>-<span style="color&#58; #000000; font-weight&#58; bold;">25</span><span class="br0">&#41;</span>&#58; gold\knight&#95;0&#46;bmp <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span> <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">13</span> <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">2</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">0</span><span class="br0">&#41;</span>&#58; gold\knight&#95;0&#46;bmp <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">26</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">52</span>-<span style="color&#58; #000000; font-weight&#58; bold;">77</span><span class="br0">&#41;</span>&#58; gold\knight&#95;1&#46;bmp <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span> <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">13</span> <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">2</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">0</span><span class="br0">&#41;</span>&#58; gold\knight&#95;0&#46;bmp <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">36</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">114</span>-<span style="color&#58; #000000; font-weight&#58; bold;">217</span><span class="br0">&#41;</span>&#58; gold\knight&#95;a&#46;bmp <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span> <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">13</span> <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">8</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">218</span>-<span style="color&#58; #000000; font-weight&#58; bold;">233</span><span class="br0">&#41;</span>&#58; gold\knight&#95;2&#46;bmp <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">109</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span> <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">8</span> <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">2</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">0</span><span class="br0">&#41;</span>&#58; gold\knight&#95;0&#46;bmp <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">98</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">332</span>-<span style="color&#58; #000000; font-weight&#58; bold;">357</span><span class="br0">&#41;</span>&#58; gold\knight&#95;b&#46;bmp <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">109</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span> <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">8</span> <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">2</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">0</span><span class="br0">&#41;</span>&#58; gold\knight&#95;0&#46;bmp <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">10</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">368</span>-<span style="color&#58; #000000; font-weight&#58; bold;">393</span><span class="br0">&#41;</span>&#58; gold\knight&#95;c&#46;bmp <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">109</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span> <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">8</span> <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">2</span></pre></code></div></div>
		</td></tr></table><br />
A knight who would turn gold and have infinite armor as a result. I found him lying in my old downloads folder.<br />
<br />
Credits to <DVZ_ME#1> who found <a href="http://www.lf-empire.de/forum/showthread.php?tid=9146&amp;pid=181698#pid181698" target="_blank" rel="noopener" class="mycode_url">where exactly YinYin posted it</a>.</div></div>]]></description>
			<content:encoded><![CDATA[Knight has always been a troublesome character DC-wise. He is hardcoded to use +114 to pic for his _b sprite, but using state 8037 just results in the Knight appearing messed up because it still uses +140 to pic. Either you make him look good in Battle, or able to work with state 8xxx.<br />
<img src="https://i.imgur.com/tKZ7MPg.png" alt="[Image: tKZ7MPg.png]" class="mycode_img" /><br />
NO LONGER SHALL THIS TROUBLE YOU! Introducing the data &amp; sprite edit template for the Knight that allows you to have the best of both worlds!<br />
<br />
Just to give an idea of how its done:<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;DC-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="dc" style="font-family&#58;monospace;"><span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">0</span>-<span style="color&#58; #000000; font-weight&#58; bold;">25</span><span class="br0">&#41;</span>&#58;    sprite\knight\knight&#95;0&#46;bmp     <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span>  <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">13</span>  <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">4</span>   <span style="color&#58; #777777;">#1  unused 26-51</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">52</span>-<span style="color&#58; #000000; font-weight&#58; bold;">77</span><span class="br0">&#41;</span>&#58;   sprite\knight\knight&#95;1&#46;bmp     <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span>  <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">13</span>  <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">4</span>   <span style="color&#58; #777777;">#2  unused 78-103</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">104</span>-<span style="color&#58; #000000; font-weight&#58; bold;">108</span><span class="br0">&#41;</span>&#58; sprite\knight\knight&#95;2&#46;bmp     <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span>  <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">5</span>   <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">2</span>   <span style="color&#58; #777777;">#3  unused 109-113</span>
   <span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">114</span>-<span style="color&#58; #000000; font-weight&#58; bold;">139</span><span class="br0">&#41;</span>&#58;   sprite\knight\knight&#95;0b&#46;bmp   <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span>  <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">13</span>  <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">4</span>    <span style="color&#58; #777777;">#4 0c = &#40;140-165&#41;</span>
   <span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">166</span>-<span style="color&#58; #000000; font-weight&#58; bold;">191</span><span class="br0">&#41;</span>&#58;   sprite\knight\knight&#95;1b&#46;bmp   <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span>  <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">13</span>  <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">4</span>    <span style="color&#58; #777777;">#5 1c = &#40;192-217&#41;</span>
   <span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">218</span>-<span style="color&#58; #000000; font-weight&#58; bold;">222</span><span class="br0">&#41;</span>&#58;   sprite\knight\knight&#95;2b&#46;bmp   <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span>  <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">13</span>   <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">3</span>    <span style="color&#58; #777777;">#6 2c = &#40;244-247&#41; unused 248-256</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">257</span>-<span style="color&#58; #000000; font-weight&#58; bold;">269</span><span class="br0">&#41;</span>&#58; sprite\knight\knight&#95;3&#46;bmp     <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">109</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span>  <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">13</span>  <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">2</span>   <span style="color&#58; #777777;">#7</span>
   <span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">270</span>-<span style="color&#58; #000000; font-weight&#58; bold;">341</span><span class="br0">&#41;</span>&#58;   sprite\knight\nth&#46;bmp           <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span>   <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span>   <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">88</span>  <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span>  <span style="color&#58; #777777;">#8</span>
   <span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">371</span>-<span style="color&#58; #000000; font-weight&#58; bold;">396</span><span class="br0">&#41;</span>&#58;   sprite\knight\knight&#95;3b&#46;bmp     <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">109</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span>  <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">13</span>  <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">3</span>  <span style="color&#58; #777777;">#9 3c = &#40;397-408&#41;</span></pre></code></div></div>
		</td></tr></table><br />
Knight_0b - containing the Battle b sprite, and the _c sprite used for state 8xxx (courtesy of Hari)<br />
<img src="https://i.imgur.com/LqY7YWB.png" alt="[Image: LqY7YWB.png]" class="mycode_img" /><br />
As you can see, I was able to fit almost all the sprites into 9 out of 10 bitmap slots, into sections of 26 at most. I only needed to use 1 filler slot, though that filler can potentially be converted for in a new spritesheet. I said "almost all sprites" because I removed 2 specific injury sprites that are identical to his grab attack sprites.<br />
<br />
Feel free to use this "template" for your LF2 modding projects!<br />
<br />
<span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">Download:</span></span><br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://lf-empire.de/forum/images/attachtypes/zip.gif" title="Zip File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=3572" target="_blank" title="">Knight 3 Pic.zip</a> (Size: 1.62 MB / Downloads: 413)
<!-- end: postbit_attachments_attachment --><br />
<br />
As a bonus, here's an old pack which contains b_sprites for ALL characters:<br />
<a href="https://www.lf-empire.de/forum/showthread.php?tid=10573&amp;pid=204649#pid204649" target="_blank" rel="noopener" class="mycode_url">https://www.lf-empire.de/forum/showthrea...#pid204649</a><br />
<br />
Enjoy!<br />
Credits to Hari for the new knight sprite.<br />
<br />
edit: I decided to update this after taking some notes from YinYin's goldknight, see the original post in the spoiler below.<br />
<br />
<hr class="mycode_hr" />
<br />
<div class="tborder spoiler"><div class="spoiler_header">Original Post <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
Knight has always been a troublesome character DC-wise. He is hardcoded to use +114 to pic for his _b sprite, but using state 8037 just results in the Knight appearing messed up because it still uses +140 to pic. Either you make him look good in Battle, or able to work with state 8xxx.<br />
<img src="https://cdn.discordapp.com/attachments/257435658333716480/344768825796853761/unknown.png" alt="[Image: unknown.png]" class="mycode_img" /><br />
NO LONGER SHALL THIS TROUBLE YOU! Introducing the data &amp; sprite edit template for the Knight that allows you to have the best of both worlds!<br />
<br />
Just to give an idea of how its done:<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;DC-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="dc" style="font-family&#58;monospace;"><span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">0</span>-<span style="color&#58; #000000; font-weight&#58; bold;">25</span><span class="br0">&#41;</span>&#58;    sprite\sys\knight&#95;0&#46;bmp     <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span>  <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">10</span>  <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">6</span>   <span style="color&#58; #777777;">#1 unused 26-59</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">60</span>-<span style="color&#58; #000000; font-weight&#58; bold;">83</span><span class="br0">&#41;</span>&#58;   sprite\sys\knight&#95;1&#46;bmp     <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span>  <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">10</span>  <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">3</span>   <span style="color&#58; #777777;">#2</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">90</span>-<span style="color&#58; #000000; font-weight&#58; bold;">113</span><span class="br0">&#41;</span>&#58;  sprite\sys\knight&#95;0&#46;bmp          <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span>   <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span>   <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">6</span>   <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">4</span>   <span style="color&#58; #777777;">#3 nothing</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">114</span>-<span style="color&#58; #000000; font-weight&#58; bold;">139</span><span class="br0">&#41;</span>&#58; sprite\sys\knight&#95;0b&#46;bmp    <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span>  <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">10</span>  <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">6</span>   <span style="color&#58; #777777;">#4 end144   c140-165</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">174</span>-<span style="color&#58; #000000; font-weight&#58; bold;">197</span><span class="br0">&#41;</span>&#58; sprite\sys\knight&#95;1b&#46;bmp    <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span>  <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">10</span>  <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">5</span>   <span style="color&#58; #777777;">#5 end199   c200-223</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">224</span>-<span style="color&#58; #000000; font-weight&#58; bold;">231</span><span class="br0">&#41;</span>&#58; sprite\sys\knight&#95;2&#46;bmp     <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span>  <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">10</span>  <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">4</span>   <span style="color&#58; #777777;">#6 end263</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">264</span>-<span style="color&#58; #000000; font-weight&#58; bold;">275</span><span class="br0">&#41;</span>&#58; sprite\sys\knight&#95;3&#46;bmp     <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">109</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span>  <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">7</span>   <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">2</span>   <span style="color&#58; #777777;">#7 end277</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">278</span>-<span style="color&#58; #000000; font-weight&#58; bold;">337</span><span class="br0">&#41;</span>&#58; sprite\sys\knight&#95;0&#46;bmp          <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span>   <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span>   <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">10</span>  <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">6</span>   <span style="color&#58; #777777;">#8 nothing</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">338</span>-<span style="color&#58; #000000; font-weight&#58; bold;">345</span><span class="br0">&#41;</span>&#58; sprite\sys\knight&#95;2b&#46;bmp    <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>  <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span>  <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">10</span>  <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">4</span>   <span style="color&#58; #777777;">#9 end347   c364-371</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">378</span>-<span style="color&#58; #000000; font-weight&#58; bold;">389</span><span class="br0">&#41;</span>&#58; sprite\sys\knight&#95;3b&#46;bmp    <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">109</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span>  <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">7</span>   <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">6</span>   <span style="color&#58; #777777;">#10 end361  c404-415</span></pre></code></div></div>
		</td></tr></table><br />
<div class="tborder spoiler"><div class="spoiler_header">Sample of knight_0.bmp <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';;this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">Knight_0<br />
<img src="http://i.imgur.com/7NViwdA.png" alt="[Image: 7NViwdA.png]" class="mycode_img" /><br />
Knight_0b - containing the Battle b sprite, and the _c sprite used for state 8xxx (courtesy of Ramond, downloaded from <a href="http://www.lf-empire.de/html/skins/Knight-mod_02.html" target="_blank" rel="noopener" class="mycode_url">LFE mainsite</a>).<br />
<img src="http://i.imgur.com/fYi2szA.png" alt="[Image: fYi2szA.png]" class="mycode_img" /></div></div>
As you can see, I was forced to use all 10 bitmap slots and split the sprites into sections of 26 at most, and put a bunch of filler slots to make this possible. So it might be quite difficult to add new moves to Knight with whole new sprites, but that's the price to pay for fixing the darned _b sprite problem without using exe editting methods.<br />
<br />
Feel free to use this "template" for your LF2 modding projects!<br />
<br />
<span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">Download:</span></span><br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://lf-empire.de/forum/images/attachtypes/zip.gif" title="Zip File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=3569" target="_blank" title="">TripleSpriteKnight.zip</a> (Size: 1.38 MB / Downloads: 347)
<!-- end: postbit_attachments_attachment --><br />
<br />
Enjoy!<br />
<br />
<br />
<hr class="mycode_hr" />
<br />
<br />
edit:<br />
So it turns out YinYin already beat me to it long before about 4.5 years ago, and it looks like he was even more efficient...<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;DC-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="dc" style="font-family&#58;monospace;"><span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">0</span>-<span style="color&#58; #000000; font-weight&#58; bold;">25</span><span class="br0">&#41;</span>&#58; gold\knight&#95;0&#46;bmp <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span> <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">13</span> <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">2</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">0</span><span class="br0">&#41;</span>&#58; gold\knight&#95;0&#46;bmp <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">26</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">52</span>-<span style="color&#58; #000000; font-weight&#58; bold;">77</span><span class="br0">&#41;</span>&#58; gold\knight&#95;1&#46;bmp <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span> <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">13</span> <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">2</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">0</span><span class="br0">&#41;</span>&#58; gold\knight&#95;0&#46;bmp <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">36</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">114</span>-<span style="color&#58; #000000; font-weight&#58; bold;">217</span><span class="br0">&#41;</span>&#58; gold\knight&#95;a&#46;bmp <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span> <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">13</span> <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">8</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">218</span>-<span style="color&#58; #000000; font-weight&#58; bold;">233</span><span class="br0">&#41;</span>&#58; gold\knight&#95;2&#46;bmp <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">109</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span> <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">8</span> <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">2</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">0</span><span class="br0">&#41;</span>&#58; gold\knight&#95;0&#46;bmp <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">98</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">332</span>-<span style="color&#58; #000000; font-weight&#58; bold;">357</span><span class="br0">&#41;</span>&#58; gold\knight&#95;b&#46;bmp <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">109</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span> <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">8</span> <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">2</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">0</span><span class="br0">&#41;</span>&#58; gold\knight&#95;0&#46;bmp <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">10</span>
<span style="color&#58; #800000; font-weight&#58; bold;">file</span><span class="br0">&#40;</span><span style="color&#58; #000000; font-weight&#58; bold;">368</span>-<span style="color&#58; #000000; font-weight&#58; bold;">393</span><span class="br0">&#41;</span>&#58; gold\knight&#95;c&#46;bmp <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">109</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">99</span> <span style="color&#58; #800000; font-weight&#58; bold;">row&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">8</span> <span style="color&#58; #800000; font-weight&#58; bold;">col&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">2</span></pre></code></div></div>
		</td></tr></table><br />
A knight who would turn gold and have infinite armor as a result. I found him lying in my old downloads folder.<br />
<br />
Credits to <DVZ_ME#1> who found <a href="http://www.lf-empire.de/forum/showthread.php?tid=9146&amp;pid=181698#pid181698" target="_blank" rel="noopener" class="mycode_url">where exactly YinYin posted it</a>.</div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Managing playable type: 3, 5 characters]]></title>
			<link>https://lf-empire.de/forum/showthread.php?tid=10715</link>
			<pubDate>Tue, 18 Jul 2017 08:36:19 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://lf-empire.de/forum/member.php?action=profile&uid=4488">rewlf2</a>]]></dc:creator>
			<guid isPermaLink="false">https://lf-empire.de/forum/showthread.php?tid=10715</guid>
			<description><![CDATA[This thread talks about some crazy (proved) ideas about creating a playable character that runs on type: 3 or 5.<br />
A number of other things will also be discussed.<br />
<br />
For a live example, please visit <a href="http://lf-empire.de/forum/showthread.php?tid=10714" target="_blank" rel="noopener" class="mycode_url">Furrzee, a character that transforms into type 3 or 5</a>.<br />
<br />
<span style="font-size: x-large;" class="mycode_size">Why to create a character that runs on type: 3 or 5</span><br />
<br />
type: 3 is the common "projectile" data type. Apart from its chasing, z-axis managing, health and side changing properties,<br />
It closely resembles a gravity-free object.<br />
<br />
A large amount of functions can be done in type: 3 if you manage to get through the huge pain managing it.<br />
<br />
type: 5 is similar to type: 0, the notable difference are its immunity against many itr effects and a similar injury model to type: 0.<br />
<br />
<span style="font-size: x-large;" class="mycode_size">How to setup data file first</span><br />
<br />
To properly create a "playable" type: 3, 5 character, you must firstly understand there must still be a type: 0 placeholder character as same team as the t3/5,<br />
otherwise the system will treat your side as no more characters and end the game.<br />
<br />
So you should generate a type: 0 placeholder if your type: 0 character transforms into t3/5, and kills the placeholder when it transforms back,<br />
unless you are using it inside some special system that has another t0 placeholder.<br />
<br />
The placeholder is expected to be invulnerable all the time, so put state: 14 on it.<br />
<br />
Then, add every tag in a type: 0 to the type: 3 or 5 you wish to control:<br />
<div class="tborder spoiler"><div class="spoiler_header">Spoiler <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
&lt;bmp_begin&gt;<br />
name: FurrzeeMist<br />
head: sprite\furrzee\furrzee_f.bmp<br />
small: sprite\furrzee\furrzee_sm.bmp<br />
file(0-69): sprite\furrzee\furrzee_0m.bmp  w: 79  h: 79  row: 10  col: 7<br />
file(70-139): sprite\furrzee\furrzee_1m.bmp  w: 79  h: 79  row: 10  col: 7<br />
file(140-209): sprite\furrzee\furrzee_0m.bmp  w: 79  h: 79  row: 10  col: 7<br />
file(210-279): sprite\furrzee\furrzee_1m.bmp  w: 79  h: 79  row: 10  col: 7<br />
file(280-349): sprite\furrzee\furrzee_2m.bmp  w: 79  h: 79  row: 10  col: 7<br />
file(350-419): sprite\furrzee\furrzee_3m.bmp  w: 79  h: 79  row: 10  col: 7<br />
file(420-479): sprite\furrzee\furrzee_2m.bmp  w: 79  h: 79  row: 10  col: 7<br />
file(480-559): sprite\furrzee\furrzee_3m.bmp  w: 79  h: 79  row: 10  col: 7<br />
<span style="font-weight: bold;" class="mycode_b"><br />
weapon_hit_sound: sprite\furrzee\silence.wav<br />
weapon_drop_sound: sprite\furrzee\silence.wav<br />
weapon_broken_sound: sprite\furrzee\silence.wav<br />
</span><br />
walking_frame_rate 1<br />
walking_speed 5.000000<br />
walking_speedz 2.500000<br />
running_frame_rate 3<br />
running_speed 9.300000<br />
running_speedz 1.560000<br />
heavy_walking_speed 3.700000<br />
heavy_walking_speedz 1.850000<br />
heavy_running_speed 6.200000<br />
heavy_running_speedz 1.000000<br />
jump_height -16.299999<br />
jump_distance 10.000000<br />
jump_distancez 3.750000<br />
dash_height -10.000000<br />
dash_distance 18.000000<br />
dash_distancez 5.000000<br />
rowing_height -2.000000<br />
rowing_distance 5.000000<br />
&lt;bmp_end&gt;</div></div>
The bold lines in spoiler are originally in type: 3, you can remove this altogether to eliminate sound. (Thanks to STM)<br />
<br />
Make sure your sprites are aligned in 140 blocks per section, and use pic: 0-139, 280-419 to properly access the sprite resources.<br />
"Per section" means you can allocate any number of bmp files to occupy at most 140 pictures in area 0-139, 280-419 respectively.<br />
If your sprite layout doesn't meet 140 slots, you can use some empty slots to fill up the space<br />
<br />
In the example below, empty_slot.bmp fills up missing 10 spaces for pic: 130-139 (270-279 for _b sprite) so pictures starting from 280 will be shown properly.<br />
<div class="tborder spoiler"><div class="spoiler_header">Spoiler <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
&lt;bmp_begin&gt;<br />
file(0-69): sprite\furrzee\furrzee_0m.bmp  w: 79  h: 79  row: 10  col: 7<br />
file(70-129): sprite\furrzee\furrzee_1m.bmp  w: 79  h: 79  row: 10  col: 6<br />
<span style="font-weight: bold;" class="mycode_b">file(130-139): sprite\furrzee\empty_slots.bmp  w: 1  h: 1  row: 10  col: 1</span><br />
<br />
file(140-209): sprite\furrzee\furrzee_0m.bmp  w: 79  h: 79  row: 10  col: 7<br />
file(210-269): sprite\furrzee\furrzee_1m.bmp  w: 79  h: 79  row: 10  col: 6<br />
<span style="font-weight: bold;" class="mycode_b">file(270-279): sprite\furrzee\empty_slots.bmp  w: 1  h: 1  row: 10  col: 1</span><br />
&lt;bmp_end&gt;</div></div>
Next, you must determine how invulnerable your character is. Be warned because you are controlling a non-type: 0 character,<br />
nobody will recognize you as an attack-able target unless you summon a type: 0 that follows you around.<br />
<br />
If you are happy about being untargetable, you might put an opoint that summons state: 14 object to scare computers away.<br />
<br />
<span style="font-size: x-large;" class="mycode_size">Type: 3 and 5 injured system</span><br />
<br />
type: 3:<br />
You may <a href="http://www.lf-empire.de/lf2-empire/data-changing/types/170-type-3-attacks" target="_blank" rel="noopener" class="mycode_url">check here</a> first for a beginner's guide.<br />
<br />
Below I will outline some very important information regarding type: 3 playable characters:<br />
A type: 3 with state 3, 7, 15 that has an itr that hits anything will not change its frame.<br />
However, even in state 3, 7, 15, if type: 3 gets hit it will be treated as state: 3000<br />
<br />
The frames which a type: 3 will jump into when attacked: 10, 20, 30 are all already allocated for type: 0 weapon actions.<br />
It means if you wish to use type: 3 injured frames, you will be required to drop both light and heavy weapon system (or do a very significant change on these)<br />
Not to forget the character will change side if being hit by a itr from type: 0 or itr kind: 9.<br />
<br />
You are best be preventing the character from being hit at all costs if you don't want to mess with either weapon system or changing sides.<br />
<br />
type: 5:<br />
System is largely <a href="http://lf-empire.de/forum/showthread.php?tid=10499" target="_blank" rel="noopener" class="mycode_url">outlined by STM here (section 7)</a><br />
<br />
Something to add:<br />
itr kind: 3 (forced grab by Louis's D^J) doesn't work but itr kind: 1 (grabbing DOP character by moving towards him) works.<br />
However you can change all state: 16 to something else to completely remove possibility of being grabbed.<br />
<br />
P.S. a type: 3 (I guess every object) at a frame with bdy and state: 16 can also be grabbed by a controlled character not necessary a type: 0, although usually it cannot be seen because state: 16 is generally used in DOP frames, and grabbing non-type: 0 objects are uncommon.<br />
<br />
There is no landing collision in type: 5,<br />
however a notably safe method is to lead all falling, jumping and dashing (latter two are used to counter fall:100+60 bashing problem) frames to transform to type: 0 to prevent locked in unending gravity fall. (provided you don't have a move that buries a character under the ground)<br />
<br />
Any type: 3 object hitting a state: 7 type: 5 will not peel the latter's HP, does not hitlag, the type: 3 will not trigger a hitting animation.<br />
If an energy disk hits a defending type: 5, it will damage the character from behind.<br />
However a type: 0 does not follow this standard, Dennis's shrafe used against a defending type: 5 will cause first 3 hits to miss but the last one dealing normal damage (unless type: 5 blocks in time)<br />
<br />
type: 5 will take damage from itr kind: 0 effect: 4, because all ik0 are treated as effect: -1.<br />
<br />
<span style="font-size: x-large;" class="mycode_size">Type: 3 and 5 and AI</span><br />
<br />
There is NO AI inscribed for any type: 3 or 5 or anything other than type: 0.<br />
However if a type: 0 character is transformed into a non-type: 0 character, that character is locked at the last input point.<br />
For example, if you put state: 8xxx on one of Freeze's D&gt;A frame, Freeze will become a non-type: 0 character that repeatedly presses A or J or direction forever<br />
(or until there is a forced transformation back to type: 0)<br />
<br />
It means the new character will punch forever, jump (not forever because it will drop indefinitely) or run. But definitely not using any move or do any intelligent thing. This glitched character however will do anything that is related to spamming a single button, like performing super_punch or picking up weapons.<br />
<br />
<span style="font-size: x-large;" class="mycode_size">Type: 3 and 5 and Playable characters</span><br />
Firstly, by controlling a non-type: 0 character, it will inherit most of non-aerial properties (except injury system) that are written in data files.<br />
This include the new character can drink, use and throw weapons, use basic attacks, super punches, grab enemies, and inherit all the tags that are written in &lt;bmp&gt; tags.<br />
The type: 3/5 character can have different running speeds from the type: 0 you transformed from.<br />
Friction naturally occurs just like type: 0 characters on ground.<br />
<br />
Aerial states are f***** up. Although you can jump, you will suffer from these:<br />
type: 3: There is no gravity<br />
type: 5: There is gravity but you will fall below ground forever.<br />
Both jumping states will render you unable to use jump attack/ dash attack until you put a hit_a tag there.<br />
<br />
Do notice if you are t3/5 playable character, the camera still follows you even when the t0 placeholder and computer are left behind.<br />
<br />
If you wish to create a t5 that can be damaged, it is best to put all falling frames to transform back to t0.<br />
<br />
hit_a, j, d, XX tags and mp tags will all work.<br />
For t5, it is easy to implement any move with these tags, but for t3 it will by much much more complex.<br />
<br />
<br />
<span style="font-size: x-large;" class="mycode_size">Using hit_x tags in type: 3 playable characters</span><br />
<br />
The big problem on using tags on type: 3 PC is: hit_x tags will both act as key input and type: 3 properties at the same time.<br />
For instance, if type: 3 has a frame that has hit_a: 1, it will deplete its HP by 1 per frame.<br />
however since type: 3 is used as a playable character, hit_a also acts as "if you press A in this frame, the character will go to frame 1".<br />
<br />
This property renders putting hit_a and hit_j commands much harder than expected when making type: 3 character.<br />
<br />
P.S. However there is a stable way to bypass hit_a,j effects by using negative tags and then a frame with wait: 0 and negative next.<br />
<br />
The hit_a or j tag will not take effect during the frame, you just need to reverse the direction again to cancel out the consequence. The character will also turn around if F6 is pressed, due to negative direction in hit_a,j no longer working.<br />
<br />
The frames will look like this:<br />
<div class="tborder spoiler"><div class="spoiler_header">Spoiler <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
&lt;frame&gt; 260 move<br />
 pic: 10  state: 3  wait: 2  next: 999  dvx: 1  dvy: 0  dvz: 0  centerx: 42  centery: 79  hit_a: 0  hit_d: 0 hit_j: -261<br />
&lt;frame_end&gt;<br />
<br />
&lt;frame&gt; 261 move_b<br />
 pic: 10  state: 3  wait: 0  next: -262  dvx: -1  dvy: 0  dvz: 0  centerx: 42  centery: 79  hit_a: 0 hit_d: 0  hit_j: 0<br />
&lt;frame_end&gt;</div></div>
Do notice there is NO AI whenever a character is transformed to type: 3, so we can just leave behind some assumptions and use some gimmicks to bypass it.<br />
<br />
The hit_a tag as mentioned, will drain HP from character whenever the frame is present. We can however limit the amount of health drained by avoiding any move that has a "+A" input and possibly make use of normal punch properties:<br />
<br />
<span style="font-weight: bold;" class="mycode_b">A normal punch is triggered by pressing A, but the "A" input can last to next frame.</span><br />
<br />
it means something like this will cancel out health drain unless F6 is pressed or computer is using the character (the latter is impossible)<br />
<div class="tborder spoiler"><div class="spoiler_header">Spoiler <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
&lt;frame&gt; 60 punch<br />
  pic: 10  state: 3  wait: 2  next: 61  dvx: 1  dvy: 0  dvz: 0  centerx: 42  centery: 79  hit_a: 61  hit_d: 281  hit_j: 0<br />
&lt;frame_end&gt;<br />
<br />
&lt;frame&gt; 61 punch<br />
  pic: 10  state: 3  wait: 0  next: 62  dvx: 1  dvy: 0  dvz: 0  centerx: 42  centery: 79  hit_a: 9  hit_d: 281  hit_j: 0  mp: -7000<br />
&lt;frame_end&gt;</div></div>
In the example, when normal punch goes to frame 60, it will drain 61 HP per frame<br />
(frame 60 only lasts 1 frame before it goes to frame 61)<br />
And because player "is pressing A" to go to frame 60, the "A" key input lasts to frame 60 and it redirects to frame 61, which then drains 9 HP but the mp tag restores 70 HP, which cancel out each other.<br />
<br />
frame 61 literally lasts 0 frame because it is triggered by a hit_a tag in frame 60, but the hit_a in frame 61 can act for 1 frame only for the HP drain, and does not trigger a "press Attack" effect. The character will never go to frame 9, only going to either 62 or 218.<br />
<br />
If the character has less than 61 HP, he will become 0 HP instead and go to frame 281.<br />
<br />
The trick is the frame number where your character goes to is equal to the amount of health for detection. So you might need some lower frame numbers to create some specific death effects.<br />
<br />
Because type: 3 does not go to frame 180/186 whenever its HP reaches zero, but instead remains controllable by player, it is then possible to return to standing frames after going to frame 281.<br />
<br />
Do notice if a type: 3 character is killed by using hit_a tags, he will never be able to fulfill hit_a requirements tags again unless some attacks that have negative damage is dealt upon him, but it will cause the character to go frame 20... Or, a mp tag that revives the character.<br />
<br />
I must also note that using any attack onto bdy of a type: 3 does NOT deal any damage to the latter. The latter instead goes to certain frame and possibly change side.<br />
<br />
Be warned F6 will disable any mp tag and prevents the hit_a tags to be cancelled out with mp tag, causing rapid HP drain whenever this kind of move is used.<br />
<br />
<br />
For hit_d tag, it is quite simple to implement. hit_d both acts as the frame whenever type: 3's HP runs out, it will go to,<br />
and the frame the character will go to if you controll him and presses D. It works in type: 3 and 5.<br />
<br />
For hit_j tag, type: 3 will have an addition of z-axis movement indicated by hit_j, but it also acts as the frame the character goes to if you presses J.<br />
You might need to move around weapon frames elsewhere to properly use hit_j to perform moves that shift character in z-axis.<br />
Alternatively, if you wish the particular move to be unable to control the z-axis movement, a dvz: 5XX tag can be used to cancel out the movement.<br />
<br />
For hit_Fa tag, bear in mind the only hit_Fa: 1-14 tags have special effect. Above 14 you can use any number without side effects.<br />
<br />
<span style="font-size: x-large;" class="mycode_size">Using type: 3 as a part of character</span><br />
<br />
If you wish to only use type: 3/5 as only a part of your character, like becoming a whirlwind which drains your health until you press D to cancel, this section is for you.<br />
<br />
By sacrificing the standing frames (and weapon holding frames), you can put hit_a, j, Fa tags to small numbers,<br />
like in the above example, your character transforms into a type: 3, because transformation will lead to frame 0,<br />
your frame 0 nexts to whirlwind frames that have hit_a: 1, hit_d: XXX.<br />
<br />
When you press A in whirlwind form, character goes to frame 1 and you can use frame 1 to do something else,<br />
like performing a slash and then returning to human, or you can press D to return to human form directly.<br />
<br />
<span style="font-size: x-large;" class="mycode_size">P.S. weapon types are unsuitable for making a character</span><br />
<br />
If you try to create a controllable character in a weapon type, they suffer from these:<br />
<br />
1. When they land on floor, they go to frame 21 first (just_on_ground) and then frame 20 (on_ground)<br />
While they are have a good gravity model and have stable landing animation, frame 20 is used by heavy object management.<br />
<br />
2. If you transform into a weapon object by state: 8xxx, there is a [s]<span style="font-weight: bold;" class="mycode_b">random</span>[s] chance of character disappearing if someone attacks the character.<br />
Update: This is caused by depleting the "Weapon hp" of the object, which is set to 500 by default. The number is not shown in gui of the game but manages the destruction of a weapon. Typically if a weapon is damaged, the weapon hp goes down, but in this case your character transforms into weapon, and takes "weapon damage" which is independent of "character hp". So there is little way to deal with it other than setting the weapon hp of your character to extremely high.... but it still breaks when character hits something with bdefend: 100 (soul bombs)<br />
This is a critical problem making the character highly unstable.<br />
The chance is observed to be independent of frame layout of the character.<br />
<br />
3. The damage animation goes into frame 0-15 (light) or 0-5 (heavy). This means to properly create such weapon-based character, frames regarding weapon management (10, 15) must be freed out except for heavy ones.<br />
<br />
<span style="font-size: x-large;" class="mycode_size">P.S. Choosing between type: 3 hit_j and dvz: 5xx for movement in z-axis</span><br />
<br />
Thanks for STM for reminding me about using dvz for z-axis movement.<br />
<br />
hit_j specifies a movement speed that is <span style="font-weight: bold;" class="mycode_b">added</span> towards the current z-axis speed of a type: 3 object.<br />
For example, by holding Down key, Davis's energy blast can be directed slightly downward but the propagation pattern still follows its normal or upward pattern.<br />
<br />
You must also be wary that a positive hit_j also acts as a goto tag if you are using a type: 3 character.<br />
<br />
dvz: 5xx (or more precisely, dvz: 501+) in the other hand, can be used in any object.<br />
Dvz: 501+ is a dvz tag with a number no less than 501, dvz: 501, dvz: 550, dvz: 9999 all will contribute to z-axis movement.<br />
<br />
Dvz: 501+ will cause the object to force its z-axis speed to (number-50) while the frame is active.<br />
Even if you are controlling a character and tries to walk down, a dvz: 549 tag will drag you upwards (for 1px per tu).<br />
<br />
However it's perfectly okay if you are planning on a move that doesn't allow z-axis custom movement in occasion. And it's a very convenient choice compared to making a type: 3 character just for z-axis movement. Don't forget dvz tag does not interfere with hit_a,j,d tags and you can cancel a z-axis moving move as you wish.]]></description>
			<content:encoded><![CDATA[This thread talks about some crazy (proved) ideas about creating a playable character that runs on type: 3 or 5.<br />
A number of other things will also be discussed.<br />
<br />
For a live example, please visit <a href="http://lf-empire.de/forum/showthread.php?tid=10714" target="_blank" rel="noopener" class="mycode_url">Furrzee, a character that transforms into type 3 or 5</a>.<br />
<br />
<span style="font-size: x-large;" class="mycode_size">Why to create a character that runs on type: 3 or 5</span><br />
<br />
type: 3 is the common "projectile" data type. Apart from its chasing, z-axis managing, health and side changing properties,<br />
It closely resembles a gravity-free object.<br />
<br />
A large amount of functions can be done in type: 3 if you manage to get through the huge pain managing it.<br />
<br />
type: 5 is similar to type: 0, the notable difference are its immunity against many itr effects and a similar injury model to type: 0.<br />
<br />
<span style="font-size: x-large;" class="mycode_size">How to setup data file first</span><br />
<br />
To properly create a "playable" type: 3, 5 character, you must firstly understand there must still be a type: 0 placeholder character as same team as the t3/5,<br />
otherwise the system will treat your side as no more characters and end the game.<br />
<br />
So you should generate a type: 0 placeholder if your type: 0 character transforms into t3/5, and kills the placeholder when it transforms back,<br />
unless you are using it inside some special system that has another t0 placeholder.<br />
<br />
The placeholder is expected to be invulnerable all the time, so put state: 14 on it.<br />
<br />
Then, add every tag in a type: 0 to the type: 3 or 5 you wish to control:<br />
<div class="tborder spoiler"><div class="spoiler_header">Spoiler <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
&lt;bmp_begin&gt;<br />
name: FurrzeeMist<br />
head: sprite\furrzee\furrzee_f.bmp<br />
small: sprite\furrzee\furrzee_sm.bmp<br />
file(0-69): sprite\furrzee\furrzee_0m.bmp  w: 79  h: 79  row: 10  col: 7<br />
file(70-139): sprite\furrzee\furrzee_1m.bmp  w: 79  h: 79  row: 10  col: 7<br />
file(140-209): sprite\furrzee\furrzee_0m.bmp  w: 79  h: 79  row: 10  col: 7<br />
file(210-279): sprite\furrzee\furrzee_1m.bmp  w: 79  h: 79  row: 10  col: 7<br />
file(280-349): sprite\furrzee\furrzee_2m.bmp  w: 79  h: 79  row: 10  col: 7<br />
file(350-419): sprite\furrzee\furrzee_3m.bmp  w: 79  h: 79  row: 10  col: 7<br />
file(420-479): sprite\furrzee\furrzee_2m.bmp  w: 79  h: 79  row: 10  col: 7<br />
file(480-559): sprite\furrzee\furrzee_3m.bmp  w: 79  h: 79  row: 10  col: 7<br />
<span style="font-weight: bold;" class="mycode_b"><br />
weapon_hit_sound: sprite\furrzee\silence.wav<br />
weapon_drop_sound: sprite\furrzee\silence.wav<br />
weapon_broken_sound: sprite\furrzee\silence.wav<br />
</span><br />
walking_frame_rate 1<br />
walking_speed 5.000000<br />
walking_speedz 2.500000<br />
running_frame_rate 3<br />
running_speed 9.300000<br />
running_speedz 1.560000<br />
heavy_walking_speed 3.700000<br />
heavy_walking_speedz 1.850000<br />
heavy_running_speed 6.200000<br />
heavy_running_speedz 1.000000<br />
jump_height -16.299999<br />
jump_distance 10.000000<br />
jump_distancez 3.750000<br />
dash_height -10.000000<br />
dash_distance 18.000000<br />
dash_distancez 5.000000<br />
rowing_height -2.000000<br />
rowing_distance 5.000000<br />
&lt;bmp_end&gt;</div></div>
The bold lines in spoiler are originally in type: 3, you can remove this altogether to eliminate sound. (Thanks to STM)<br />
<br />
Make sure your sprites are aligned in 140 blocks per section, and use pic: 0-139, 280-419 to properly access the sprite resources.<br />
"Per section" means you can allocate any number of bmp files to occupy at most 140 pictures in area 0-139, 280-419 respectively.<br />
If your sprite layout doesn't meet 140 slots, you can use some empty slots to fill up the space<br />
<br />
In the example below, empty_slot.bmp fills up missing 10 spaces for pic: 130-139 (270-279 for _b sprite) so pictures starting from 280 will be shown properly.<br />
<div class="tborder spoiler"><div class="spoiler_header">Spoiler <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
&lt;bmp_begin&gt;<br />
file(0-69): sprite\furrzee\furrzee_0m.bmp  w: 79  h: 79  row: 10  col: 7<br />
file(70-129): sprite\furrzee\furrzee_1m.bmp  w: 79  h: 79  row: 10  col: 6<br />
<span style="font-weight: bold;" class="mycode_b">file(130-139): sprite\furrzee\empty_slots.bmp  w: 1  h: 1  row: 10  col: 1</span><br />
<br />
file(140-209): sprite\furrzee\furrzee_0m.bmp  w: 79  h: 79  row: 10  col: 7<br />
file(210-269): sprite\furrzee\furrzee_1m.bmp  w: 79  h: 79  row: 10  col: 6<br />
<span style="font-weight: bold;" class="mycode_b">file(270-279): sprite\furrzee\empty_slots.bmp  w: 1  h: 1  row: 10  col: 1</span><br />
&lt;bmp_end&gt;</div></div>
Next, you must determine how invulnerable your character is. Be warned because you are controlling a non-type: 0 character,<br />
nobody will recognize you as an attack-able target unless you summon a type: 0 that follows you around.<br />
<br />
If you are happy about being untargetable, you might put an opoint that summons state: 14 object to scare computers away.<br />
<br />
<span style="font-size: x-large;" class="mycode_size">Type: 3 and 5 injured system</span><br />
<br />
type: 3:<br />
You may <a href="http://www.lf-empire.de/lf2-empire/data-changing/types/170-type-3-attacks" target="_blank" rel="noopener" class="mycode_url">check here</a> first for a beginner's guide.<br />
<br />
Below I will outline some very important information regarding type: 3 playable characters:<br />
A type: 3 with state 3, 7, 15 that has an itr that hits anything will not change its frame.<br />
However, even in state 3, 7, 15, if type: 3 gets hit it will be treated as state: 3000<br />
<br />
The frames which a type: 3 will jump into when attacked: 10, 20, 30 are all already allocated for type: 0 weapon actions.<br />
It means if you wish to use type: 3 injured frames, you will be required to drop both light and heavy weapon system (or do a very significant change on these)<br />
Not to forget the character will change side if being hit by a itr from type: 0 or itr kind: 9.<br />
<br />
You are best be preventing the character from being hit at all costs if you don't want to mess with either weapon system or changing sides.<br />
<br />
type: 5:<br />
System is largely <a href="http://lf-empire.de/forum/showthread.php?tid=10499" target="_blank" rel="noopener" class="mycode_url">outlined by STM here (section 7)</a><br />
<br />
Something to add:<br />
itr kind: 3 (forced grab by Louis's D^J) doesn't work but itr kind: 1 (grabbing DOP character by moving towards him) works.<br />
However you can change all state: 16 to something else to completely remove possibility of being grabbed.<br />
<br />
P.S. a type: 3 (I guess every object) at a frame with bdy and state: 16 can also be grabbed by a controlled character not necessary a type: 0, although usually it cannot be seen because state: 16 is generally used in DOP frames, and grabbing non-type: 0 objects are uncommon.<br />
<br />
There is no landing collision in type: 5,<br />
however a notably safe method is to lead all falling, jumping and dashing (latter two are used to counter fall:100+60 bashing problem) frames to transform to type: 0 to prevent locked in unending gravity fall. (provided you don't have a move that buries a character under the ground)<br />
<br />
Any type: 3 object hitting a state: 7 type: 5 will not peel the latter's HP, does not hitlag, the type: 3 will not trigger a hitting animation.<br />
If an energy disk hits a defending type: 5, it will damage the character from behind.<br />
However a type: 0 does not follow this standard, Dennis's shrafe used against a defending type: 5 will cause first 3 hits to miss but the last one dealing normal damage (unless type: 5 blocks in time)<br />
<br />
type: 5 will take damage from itr kind: 0 effect: 4, because all ik0 are treated as effect: -1.<br />
<br />
<span style="font-size: x-large;" class="mycode_size">Type: 3 and 5 and AI</span><br />
<br />
There is NO AI inscribed for any type: 3 or 5 or anything other than type: 0.<br />
However if a type: 0 character is transformed into a non-type: 0 character, that character is locked at the last input point.<br />
For example, if you put state: 8xxx on one of Freeze's D&gt;A frame, Freeze will become a non-type: 0 character that repeatedly presses A or J or direction forever<br />
(or until there is a forced transformation back to type: 0)<br />
<br />
It means the new character will punch forever, jump (not forever because it will drop indefinitely) or run. But definitely not using any move or do any intelligent thing. This glitched character however will do anything that is related to spamming a single button, like performing super_punch or picking up weapons.<br />
<br />
<span style="font-size: x-large;" class="mycode_size">Type: 3 and 5 and Playable characters</span><br />
Firstly, by controlling a non-type: 0 character, it will inherit most of non-aerial properties (except injury system) that are written in data files.<br />
This include the new character can drink, use and throw weapons, use basic attacks, super punches, grab enemies, and inherit all the tags that are written in &lt;bmp&gt; tags.<br />
The type: 3/5 character can have different running speeds from the type: 0 you transformed from.<br />
Friction naturally occurs just like type: 0 characters on ground.<br />
<br />
Aerial states are f***** up. Although you can jump, you will suffer from these:<br />
type: 3: There is no gravity<br />
type: 5: There is gravity but you will fall below ground forever.<br />
Both jumping states will render you unable to use jump attack/ dash attack until you put a hit_a tag there.<br />
<br />
Do notice if you are t3/5 playable character, the camera still follows you even when the t0 placeholder and computer are left behind.<br />
<br />
If you wish to create a t5 that can be damaged, it is best to put all falling frames to transform back to t0.<br />
<br />
hit_a, j, d, XX tags and mp tags will all work.<br />
For t5, it is easy to implement any move with these tags, but for t3 it will by much much more complex.<br />
<br />
<br />
<span style="font-size: x-large;" class="mycode_size">Using hit_x tags in type: 3 playable characters</span><br />
<br />
The big problem on using tags on type: 3 PC is: hit_x tags will both act as key input and type: 3 properties at the same time.<br />
For instance, if type: 3 has a frame that has hit_a: 1, it will deplete its HP by 1 per frame.<br />
however since type: 3 is used as a playable character, hit_a also acts as "if you press A in this frame, the character will go to frame 1".<br />
<br />
This property renders putting hit_a and hit_j commands much harder than expected when making type: 3 character.<br />
<br />
P.S. However there is a stable way to bypass hit_a,j effects by using negative tags and then a frame with wait: 0 and negative next.<br />
<br />
The hit_a or j tag will not take effect during the frame, you just need to reverse the direction again to cancel out the consequence. The character will also turn around if F6 is pressed, due to negative direction in hit_a,j no longer working.<br />
<br />
The frames will look like this:<br />
<div class="tborder spoiler"><div class="spoiler_header">Spoiler <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
&lt;frame&gt; 260 move<br />
 pic: 10  state: 3  wait: 2  next: 999  dvx: 1  dvy: 0  dvz: 0  centerx: 42  centery: 79  hit_a: 0  hit_d: 0 hit_j: -261<br />
&lt;frame_end&gt;<br />
<br />
&lt;frame&gt; 261 move_b<br />
 pic: 10  state: 3  wait: 0  next: -262  dvx: -1  dvy: 0  dvz: 0  centerx: 42  centery: 79  hit_a: 0 hit_d: 0  hit_j: 0<br />
&lt;frame_end&gt;</div></div>
Do notice there is NO AI whenever a character is transformed to type: 3, so we can just leave behind some assumptions and use some gimmicks to bypass it.<br />
<br />
The hit_a tag as mentioned, will drain HP from character whenever the frame is present. We can however limit the amount of health drained by avoiding any move that has a "+A" input and possibly make use of normal punch properties:<br />
<br />
<span style="font-weight: bold;" class="mycode_b">A normal punch is triggered by pressing A, but the "A" input can last to next frame.</span><br />
<br />
it means something like this will cancel out health drain unless F6 is pressed or computer is using the character (the latter is impossible)<br />
<div class="tborder spoiler"><div class="spoiler_header">Spoiler <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';this.parentNode.className = 'spoiler_header';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';this.parentNode.className += ' spoiler_header_cornered';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
&lt;frame&gt; 60 punch<br />
  pic: 10  state: 3  wait: 2  next: 61  dvx: 1  dvy: 0  dvz: 0  centerx: 42  centery: 79  hit_a: 61  hit_d: 281  hit_j: 0<br />
&lt;frame_end&gt;<br />
<br />
&lt;frame&gt; 61 punch<br />
  pic: 10  state: 3  wait: 0  next: 62  dvx: 1  dvy: 0  dvz: 0  centerx: 42  centery: 79  hit_a: 9  hit_d: 281  hit_j: 0  mp: -7000<br />
&lt;frame_end&gt;</div></div>
In the example, when normal punch goes to frame 60, it will drain 61 HP per frame<br />
(frame 60 only lasts 1 frame before it goes to frame 61)<br />
And because player "is pressing A" to go to frame 60, the "A" key input lasts to frame 60 and it redirects to frame 61, which then drains 9 HP but the mp tag restores 70 HP, which cancel out each other.<br />
<br />
frame 61 literally lasts 0 frame because it is triggered by a hit_a tag in frame 60, but the hit_a in frame 61 can act for 1 frame only for the HP drain, and does not trigger a "press Attack" effect. The character will never go to frame 9, only going to either 62 or 218.<br />
<br />
If the character has less than 61 HP, he will become 0 HP instead and go to frame 281.<br />
<br />
The trick is the frame number where your character goes to is equal to the amount of health for detection. So you might need some lower frame numbers to create some specific death effects.<br />
<br />
Because type: 3 does not go to frame 180/186 whenever its HP reaches zero, but instead remains controllable by player, it is then possible to return to standing frames after going to frame 281.<br />
<br />
Do notice if a type: 3 character is killed by using hit_a tags, he will never be able to fulfill hit_a requirements tags again unless some attacks that have negative damage is dealt upon him, but it will cause the character to go frame 20... Or, a mp tag that revives the character.<br />
<br />
I must also note that using any attack onto bdy of a type: 3 does NOT deal any damage to the latter. The latter instead goes to certain frame and possibly change side.<br />
<br />
Be warned F6 will disable any mp tag and prevents the hit_a tags to be cancelled out with mp tag, causing rapid HP drain whenever this kind of move is used.<br />
<br />
<br />
For hit_d tag, it is quite simple to implement. hit_d both acts as the frame whenever type: 3's HP runs out, it will go to,<br />
and the frame the character will go to if you controll him and presses D. It works in type: 3 and 5.<br />
<br />
For hit_j tag, type: 3 will have an addition of z-axis movement indicated by hit_j, but it also acts as the frame the character goes to if you presses J.<br />
You might need to move around weapon frames elsewhere to properly use hit_j to perform moves that shift character in z-axis.<br />
Alternatively, if you wish the particular move to be unable to control the z-axis movement, a dvz: 5XX tag can be used to cancel out the movement.<br />
<br />
For hit_Fa tag, bear in mind the only hit_Fa: 1-14 tags have special effect. Above 14 you can use any number without side effects.<br />
<br />
<span style="font-size: x-large;" class="mycode_size">Using type: 3 as a part of character</span><br />
<br />
If you wish to only use type: 3/5 as only a part of your character, like becoming a whirlwind which drains your health until you press D to cancel, this section is for you.<br />
<br />
By sacrificing the standing frames (and weapon holding frames), you can put hit_a, j, Fa tags to small numbers,<br />
like in the above example, your character transforms into a type: 3, because transformation will lead to frame 0,<br />
your frame 0 nexts to whirlwind frames that have hit_a: 1, hit_d: XXX.<br />
<br />
When you press A in whirlwind form, character goes to frame 1 and you can use frame 1 to do something else,<br />
like performing a slash and then returning to human, or you can press D to return to human form directly.<br />
<br />
<span style="font-size: x-large;" class="mycode_size">P.S. weapon types are unsuitable for making a character</span><br />
<br />
If you try to create a controllable character in a weapon type, they suffer from these:<br />
<br />
1. When they land on floor, they go to frame 21 first (just_on_ground) and then frame 20 (on_ground)<br />
While they are have a good gravity model and have stable landing animation, frame 20 is used by heavy object management.<br />
<br />
2. If you transform into a weapon object by state: 8xxx, there is a [s]<span style="font-weight: bold;" class="mycode_b">random</span>[s] chance of character disappearing if someone attacks the character.<br />
Update: This is caused by depleting the "Weapon hp" of the object, which is set to 500 by default. The number is not shown in gui of the game but manages the destruction of a weapon. Typically if a weapon is damaged, the weapon hp goes down, but in this case your character transforms into weapon, and takes "weapon damage" which is independent of "character hp". So there is little way to deal with it other than setting the weapon hp of your character to extremely high.... but it still breaks when character hits something with bdefend: 100 (soul bombs)<br />
This is a critical problem making the character highly unstable.<br />
The chance is observed to be independent of frame layout of the character.<br />
<br />
3. The damage animation goes into frame 0-15 (light) or 0-5 (heavy). This means to properly create such weapon-based character, frames regarding weapon management (10, 15) must be freed out except for heavy ones.<br />
<br />
<span style="font-size: x-large;" class="mycode_size">P.S. Choosing between type: 3 hit_j and dvz: 5xx for movement in z-axis</span><br />
<br />
Thanks for STM for reminding me about using dvz for z-axis movement.<br />
<br />
hit_j specifies a movement speed that is <span style="font-weight: bold;" class="mycode_b">added</span> towards the current z-axis speed of a type: 3 object.<br />
For example, by holding Down key, Davis's energy blast can be directed slightly downward but the propagation pattern still follows its normal or upward pattern.<br />
<br />
You must also be wary that a positive hit_j also acts as a goto tag if you are using a type: 3 character.<br />
<br />
dvz: 5xx (or more precisely, dvz: 501+) in the other hand, can be used in any object.<br />
Dvz: 501+ is a dvz tag with a number no less than 501, dvz: 501, dvz: 550, dvz: 9999 all will contribute to z-axis movement.<br />
<br />
Dvz: 501+ will cause the object to force its z-axis speed to (number-50) while the frame is active.<br />
Even if you are controlling a character and tries to walk down, a dvz: 549 tag will drag you upwards (for 1px per tu).<br />
<br />
However it's perfectly okay if you are planning on a move that doesn't allow z-axis custom movement in occasion. And it's a very convenient choice compared to making a type: 3 character just for z-axis movement. Don't forget dvz tag does not interfere with hit_a,j,d tags and you can cancel a z-axis moving move as you wish.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Pushing]]></title>
			<link>https://lf-empire.de/forum/showthread.php?tid=9883</link>
			<pubDate>Sun, 10 May 2015 16:23:35 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://lf-empire.de/forum/member.php?action=profile&uid=12">YinYin</a>]]></dc:creator>
			<guid isPermaLink="false">https://lf-empire.de/forum/showthread.php?tid=9883</guid>
			<description><![CDATA[Here is how I plan to do the cold touch for <a href="http://www.lf-empire.de/forum/showthread.php?tid=9868" target="_blank" rel="noopener" class="mycode_url">Ryce</a>.<br />
When you catch and instantly throw another character you can skip some of the cpoint related repositioning and gain a lot of cool features:<ul class="mycode_list"><li>force the opponent into a frame of your choice<br />
</li>
<li>go into a hit frame with hit sounds and effects of your choice<br />
</li>
<li>gain z control over your opponent<br />
</li>
<li>no y-axis trouble or characters getting stuck in jump frame (so it works on any character size)<br />
</li>
</ul>
<br />
Here are some template frames that change a templates walking grab into a push:<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;DC-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="dc" style="font-family&#58;monospace;"><span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&gt;</span> <span style="color&#58; #000000; font-weight&#58; bold;">4</span> standing
   <span style="color&#58; #800000; font-weight&#58; bold;">pic&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span> <span style="color&#58; #800000; font-weight&#58; bold;">state&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">9</span> <span style="color&#58; #800000; font-weight&#58; bold;">wait&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">next&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">999</span> <span style="color&#58; #800000; font-weight&#58; bold;">centerx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">39</span> <span style="color&#58; #800000; font-weight&#58; bold;">centery&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>
   <span style="color&#58; #800000; font-weight&#58; bold;">sound&#58;</span> data\013&#46;wav
   <span style="color&#58; #008040; font-weight&#58; bold;">cpoint&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">60</span> <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span> <span style="color&#58; #800000; font-weight&#58; bold;">vaction&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">112</span> <span style="color&#58; #800000; font-weight&#58; bold;">cover&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">21</span> <span style="color&#58; #800000; font-weight&#58; bold;">throwvx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">9</span> <span style="color&#58; #800000; font-weight&#58; bold;">throwvz&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">9</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">cpoint&#95;end&#58;</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">33</span> <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">45</span> <span style="color&#58; #800000; font-weight&#58; bold;">weaponact&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">21</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#95;end&#58;</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">21</span> <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">18</span> <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">43</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">62</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#95;end&#58;</span>
<span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&#95;end&gt;</span>
&nbsp;
<span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&gt;</span> <span style="color&#58; #000000; font-weight&#58; bold;">5</span> walking
   <span style="color&#58; #800000; font-weight&#58; bold;">pic&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">4</span> <span style="color&#58; #800000; font-weight&#58; bold;">state&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">wait&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">3</span> <span style="color&#58; #800000; font-weight&#58; bold;">next&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">999</span> <span style="color&#58; #800000; font-weight&#58; bold;">centerx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">39</span> <span style="color&#58; #800000; font-weight&#58; bold;">centery&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">45</span> <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">53</span> <span style="color&#58; #800000; font-weight&#58; bold;">weaponact&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">21</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#95;end&#58;</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">itr&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">40</span> <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">16</span> <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">25</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">65</span> <span style="color&#58; #800000; font-weight&#58; bold;">catchingact&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">4</span> <span style="color&#58; #800000; font-weight&#58; bold;">caughtact&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">112</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">itr&#95;end&#58;</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">28</span> <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">15</span> <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">27</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">65</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#95;end&#58;</span>
<span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&#95;end&gt;</span>
&nbsp;
<span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&gt;</span> <span style="color&#58; #000000; font-weight&#58; bold;">6</span> walking
   <span style="color&#58; #800000; font-weight&#58; bold;">pic&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">5</span> <span style="color&#58; #800000; font-weight&#58; bold;">state&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">wait&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">3</span> <span style="color&#58; #800000; font-weight&#58; bold;">next&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">999</span> <span style="color&#58; #800000; font-weight&#58; bold;">centerx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">39</span> <span style="color&#58; #800000; font-weight&#58; bold;">centery&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">40</span> <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">55</span> <span style="color&#58; #800000; font-weight&#58; bold;">weaponact&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">21</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#95;end&#58;</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">itr&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">40</span> <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">16</span> <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">25</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">65</span> <span style="color&#58; #800000; font-weight&#58; bold;">catchingact&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">4</span> <span style="color&#58; #800000; font-weight&#58; bold;">caughtact&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">112</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">itr&#95;end&#58;</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">28</span> <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">15</span> <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">27</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">65</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#95;end&#58;</span>
<span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&#95;end&gt;</span>
&nbsp;
<span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&gt;</span> <span style="color&#58; #000000; font-weight&#58; bold;">7</span> walking
   <span style="color&#58; #800000; font-weight&#58; bold;">pic&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">6</span> <span style="color&#58; #800000; font-weight&#58; bold;">state&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">wait&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">3</span> <span style="color&#58; #800000; font-weight&#58; bold;">next&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">999</span> <span style="color&#58; #800000; font-weight&#58; bold;">centerx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">39</span> <span style="color&#58; #800000; font-weight&#58; bold;">centery&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">33</span> <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">57</span> <span style="color&#58; #800000; font-weight&#58; bold;">weaponact&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">22</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#95;end&#58;</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">itr&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">40</span> <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">16</span> <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">25</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">65</span> <span style="color&#58; #800000; font-weight&#58; bold;">catchingact&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">4</span> <span style="color&#58; #800000; font-weight&#58; bold;">caughtact&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">112</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">itr&#95;end&#58;</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">28</span> <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">15</span> <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">27</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">65</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#95;end&#58;</span>
<span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&#95;end&gt;</span>
&nbsp;
<span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&gt;</span> <span style="color&#58; #000000; font-weight&#58; bold;">8</span> walking
   <span style="color&#58; #800000; font-weight&#58; bold;">pic&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">7</span> <span style="color&#58; #800000; font-weight&#58; bold;">state&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">wait&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">3</span> <span style="color&#58; #800000; font-weight&#58; bold;">next&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">999</span> <span style="color&#58; #800000; font-weight&#58; bold;">centerx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">39</span> <span style="color&#58; #800000; font-weight&#58; bold;">centery&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">24</span> <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">56</span> <span style="color&#58; #800000; font-weight&#58; bold;">weaponact&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">23</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#95;end&#58;</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">itr&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">40</span> <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">16</span> <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">25</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">65</span> <span style="color&#58; #800000; font-weight&#58; bold;">catchingact&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">4</span> <span style="color&#58; #800000; font-weight&#58; bold;">caughtact&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">112</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">itr&#95;end&#58;</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">28</span> <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">15</span> <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">27</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">65</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#95;end&#58;</span>
<span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&#95;end&gt;</span></pre></code></div></div>
		</td></tr></table><br />
<br />
You can do pretty crazy things with this (outside of walking with kind 3 as well).]]></description>
			<content:encoded><![CDATA[Here is how I plan to do the cold touch for <a href="http://www.lf-empire.de/forum/showthread.php?tid=9868" target="_blank" rel="noopener" class="mycode_url">Ryce</a>.<br />
When you catch and instantly throw another character you can skip some of the cpoint related repositioning and gain a lot of cool features:<ul class="mycode_list"><li>force the opponent into a frame of your choice<br />
</li>
<li>go into a hit frame with hit sounds and effects of your choice<br />
</li>
<li>gain z control over your opponent<br />
</li>
<li>no y-axis trouble or characters getting stuck in jump frame (so it works on any character size)<br />
</li>
</ul>
<br />
Here are some template frames that change a templates walking grab into a push:<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;DC-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="dc" style="font-family&#58;monospace;"><span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&gt;</span> <span style="color&#58; #000000; font-weight&#58; bold;">4</span> standing
   <span style="color&#58; #800000; font-weight&#58; bold;">pic&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span> <span style="color&#58; #800000; font-weight&#58; bold;">state&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">9</span> <span style="color&#58; #800000; font-weight&#58; bold;">wait&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">next&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">999</span> <span style="color&#58; #800000; font-weight&#58; bold;">centerx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">39</span> <span style="color&#58; #800000; font-weight&#58; bold;">centery&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>
   <span style="color&#58; #800000; font-weight&#58; bold;">sound&#58;</span> data\013&#46;wav
   <span style="color&#58; #008040; font-weight&#58; bold;">cpoint&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">60</span> <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span> <span style="color&#58; #800000; font-weight&#58; bold;">vaction&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">112</span> <span style="color&#58; #800000; font-weight&#58; bold;">cover&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">21</span> <span style="color&#58; #800000; font-weight&#58; bold;">throwvx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">9</span> <span style="color&#58; #800000; font-weight&#58; bold;">throwvz&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">9</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">cpoint&#95;end&#58;</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">33</span> <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">45</span> <span style="color&#58; #800000; font-weight&#58; bold;">weaponact&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">21</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#95;end&#58;</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">21</span> <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">18</span> <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">43</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">62</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#95;end&#58;</span>
<span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&#95;end&gt;</span>
&nbsp;
<span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&gt;</span> <span style="color&#58; #000000; font-weight&#58; bold;">5</span> walking
   <span style="color&#58; #800000; font-weight&#58; bold;">pic&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">4</span> <span style="color&#58; #800000; font-weight&#58; bold;">state&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">wait&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">3</span> <span style="color&#58; #800000; font-weight&#58; bold;">next&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">999</span> <span style="color&#58; #800000; font-weight&#58; bold;">centerx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">39</span> <span style="color&#58; #800000; font-weight&#58; bold;">centery&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">45</span> <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">53</span> <span style="color&#58; #800000; font-weight&#58; bold;">weaponact&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">21</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#95;end&#58;</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">itr&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">40</span> <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">16</span> <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">25</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">65</span> <span style="color&#58; #800000; font-weight&#58; bold;">catchingact&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">4</span> <span style="color&#58; #800000; font-weight&#58; bold;">caughtact&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">112</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">itr&#95;end&#58;</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">28</span> <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">15</span> <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">27</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">65</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#95;end&#58;</span>
<span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&#95;end&gt;</span>
&nbsp;
<span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&gt;</span> <span style="color&#58; #000000; font-weight&#58; bold;">6</span> walking
   <span style="color&#58; #800000; font-weight&#58; bold;">pic&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">5</span> <span style="color&#58; #800000; font-weight&#58; bold;">state&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">wait&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">3</span> <span style="color&#58; #800000; font-weight&#58; bold;">next&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">999</span> <span style="color&#58; #800000; font-weight&#58; bold;">centerx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">39</span> <span style="color&#58; #800000; font-weight&#58; bold;">centery&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">40</span> <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">55</span> <span style="color&#58; #800000; font-weight&#58; bold;">weaponact&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">21</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#95;end&#58;</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">itr&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">40</span> <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">16</span> <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">25</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">65</span> <span style="color&#58; #800000; font-weight&#58; bold;">catchingact&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">4</span> <span style="color&#58; #800000; font-weight&#58; bold;">caughtact&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">112</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">itr&#95;end&#58;</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">28</span> <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">15</span> <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">27</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">65</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#95;end&#58;</span>
<span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&#95;end&gt;</span>
&nbsp;
<span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&gt;</span> <span style="color&#58; #000000; font-weight&#58; bold;">7</span> walking
   <span style="color&#58; #800000; font-weight&#58; bold;">pic&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">6</span> <span style="color&#58; #800000; font-weight&#58; bold;">state&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">wait&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">3</span> <span style="color&#58; #800000; font-weight&#58; bold;">next&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">999</span> <span style="color&#58; #800000; font-weight&#58; bold;">centerx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">39</span> <span style="color&#58; #800000; font-weight&#58; bold;">centery&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">33</span> <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">57</span> <span style="color&#58; #800000; font-weight&#58; bold;">weaponact&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">22</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#95;end&#58;</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">itr&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">40</span> <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">16</span> <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">25</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">65</span> <span style="color&#58; #800000; font-weight&#58; bold;">catchingact&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">4</span> <span style="color&#58; #800000; font-weight&#58; bold;">caughtact&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">112</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">itr&#95;end&#58;</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">28</span> <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">15</span> <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">27</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">65</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#95;end&#58;</span>
<span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&#95;end&gt;</span>
&nbsp;
<span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&gt;</span> <span style="color&#58; #000000; font-weight&#58; bold;">8</span> walking
   <span style="color&#58; #800000; font-weight&#58; bold;">pic&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">7</span> <span style="color&#58; #800000; font-weight&#58; bold;">state&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">wait&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">3</span> <span style="color&#58; #800000; font-weight&#58; bold;">next&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">999</span> <span style="color&#58; #800000; font-weight&#58; bold;">centerx&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">39</span> <span style="color&#58; #800000; font-weight&#58; bold;">centery&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">79</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">24</span> <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">56</span> <span style="color&#58; #800000; font-weight&#58; bold;">weaponact&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">23</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">wpoint&#95;end&#58;</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">itr&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">40</span> <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">16</span> <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">25</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">65</span> <span style="color&#58; #800000; font-weight&#58; bold;">catchingact&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">4</span> <span style="color&#58; #800000; font-weight&#58; bold;">caughtact&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">112</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">itr&#95;end&#58;</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#58;</span>
      <span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span> <span style="color&#58; #800000; font-weight&#58; bold;">x&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">28</span> <span style="color&#58; #800000; font-weight&#58; bold;">y&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">15</span> <span style="color&#58; #800000; font-weight&#58; bold;">w&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">27</span> <span style="color&#58; #800000; font-weight&#58; bold;">h&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">65</span>
   <span style="color&#58; #008040; font-weight&#58; bold;">bdy&#95;end&#58;</span>
<span style="color&#58; #0000A0; font-weight&#58; bold;">&lt;frame&#95;end&gt;</span></pre></code></div></div>
		</td></tr></table><br />
<br />
You can do pretty crazy things with this (outside of walking with kind 3 as well).]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Weakness for fire/ice]]></title>
			<link>https://lf-empire.de/forum/showthread.php?tid=9482</link>
			<pubDate>Mon, 01 Dec 2014 22:38:35 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://lf-empire.de/forum/member.php?action=profile&uid=5425">Onyx</a>]]></dc:creator>
			<guid isPermaLink="false">https://lf-empire.de/forum/showthread.php?tid=9482</guid>
			<description><![CDATA[<span style="font-size: xx-large;" class="mycode_size">Weakness for <span style="color: #ff3333;" class="mycode_color">FIRE</span>/<span style="color: #66ffff;" class="mycode_color">ICE</span></span><br />
-----------------------------------------------------------------------------<br />
<br />
Hi everyone, long time ago, when i was creating character called Rimfrost I wanted to make a weakness for <span style="color: #ff3333;" class="mycode_color">fire</span> with this champ using injury etc. But it was impossible, and today i created good idea about that weakness.<br />
<br />
Using correct bdy position and invisible ball (with <span style="color: #ff9933;" class="mycode_color">state 18</span>) we can make this easy!<br />
<br />
So let's create that invisible ball:<br />
<span style="font-size: x-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b"><span style="color: #ffffff;" class="mycode_color"><br />
====================================<br />
STEP 1 - effect that causes injury<br />
====================================<br />
</span></span></span><br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>&lt;bmp_begin&gt;<br />
file(0-11): sprite&#92;sys&#92;firzen_chasei.bmp  w: 81  h: 82  row: 4  col: 2<br />
weapon_hit_sound: data&#92;002.wav<br />
weapon_drop_sound: data&#92;002.wav<br />
weapon_broken_sound: data&#92;002.wav<br />
&lt;bmp_end&gt;<br />
<br />
<br />
&lt;frame&gt; 0 invisiblecolFIRE<br />
   pic: 11  state: 18  wait: 1  next: 1000  dvx: 0  dvy: 0  dvz: 0  centerx: 41  centery: 43  hit_a: 0  hit_d: 0  hit_j: 0 hit_Fa: 0<br />
   itr:<br />
      kind: 0  x: 0  y: 0  w: 81  h: 82  dvx: -8 dvy: -8  fall: 70  vrest: 15  bdefend: 20  injury: 80  <br />
      effect: 0 <br />
   itr_end:<br />
&lt;frame_end&gt;<br />
<br />
&lt;frame&gt; 2 invisiblecolICE<br />
   pic: 11  state: 18  wait: 1  next: 1000  dvx: 0  dvy: 0  dvz: 0  centerx: 41  centery: 43  hit_a: 0  hit_d: 0  hit_j: 0 hit_Fa: 0<br />
   itr:<br />
      kind: 0  x: 0  y: 0  w: 81  h: 82  dvx: -1  fall: 70  vrest: 15  bdefend: 20  injury: 80  <br />
      effect: 0<br />
   itr_end:<br />
&lt;frame_end&gt;</code></div></div><br />
Pic 11 from firzen_chasei is blank, so i used this number in both frames.<br />
Anyway, the most important thing is <span style="color: #ff9933;" class="mycode_color">STATE 18</span>, because this causes that ball to hurt anyone (even character which releases <span style="color: #33cc33;" class="mycode_color">opoint</span>).<br />
Remember that with <span style="color: #ffcc33;" class="mycode_color">injury</span> you can change the additional damage.<br />
And why 2 cols? Because guy on <span style="color: #ff3333;" class="mycode_color">fire</span> is dynamic, and it looks stupid when he inhibit after hit, but guy on <span style="color: #66ffff;" class="mycode_color">ice</span> is static, so he'll fall limply.<br />
<br />
You can ask: Why effect 0? It causes to release the effect of <span style="color: #ff3333;" class="mycode_color">fire</span> or <span style="color: #66ffff;" class="mycode_color">ice</span>!<br />
I'll explain of course, namely there's a big problem. I tried to combine that (especially <span style="color: #66ffff;" class="mycode_color">ice</span> with kind: 16) and it causes loop, and character with weakness was still knocked by that effect until he died, so there's a huge defect with my weakness patent.<br />
<span style="font-size: x-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b"><span style="color: #ffffff;" class="mycode_color"><br />
====================================<br />
STEP 2 - setting the <span style="color: #ff33ff;" class="mycode_color">body</span><br />
====================================<br />
</span></span></span><br />
Even if that effect got vrest, if you'll attack that sensitive character staying next to him you'll get hit also, so we must set infeasible <span style="color: #ff33ff;" class="mycode_color">body</span> out of map.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>&lt;frame&gt; 200 ice<br />
   pic: 8  state: 15  wait: 2  next: 201  dvx: 0  dvy: 0  centerx: 39  centery: 79  hit_a: 0  hit_d: 0  hit_j: 0<br />
   wpoint:<br />
      kind: 1  x: 18  y: 45  weaponact: 20  attacking: 0  cover: 0  dvx: 0  dvy: 0  dvz: 0 <br />
   wpoint_end:<br />
   bdy:<br />
      kind: 0  x: 10  y: 9  w: 55  h: 68<br />
   bdy_end:<br />
&lt;frame_end&gt;</code></div></div>We know that we can't put <span style="color: #33cc33;" class="mycode_color">OPOINT</span> here, because this is first frame of <span style="color: #66ffff;" class="mycode_color">ice</span>, so possibly we can shorten WAIT or something, i'll leave that option.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>&lt;frame&gt; 201 ice<br />
   pic: 9  state: 13  wait: 90  next: 202  dvx: 0  dvy: 0  centerx: 39  centery: 79  hit_a: 0  hit_d: 0  hit_j: 0<br />
   opoint:<br />
      kind: 1  x: 21  y: -220  action: 2  dvx: 0  dvy: 0  oid: 666  facing: 0<br />
   opoint_end:<br />
   wpoint:<br />
      kind: 1  x: 20  y: 55  weaponact: 35  attacking: 0  cover: 0  dvx: 0  dvy: 0  dvz: 0 <br />
   wpoint_end:<br />
   bdy:<br />
      kind: 0  x: 8  y: 6  w: 67  h: 73<br />
   bdy_end:<br />
   bdy:<br />
      kind: 0  x: 8  y: -200  w: 67  h: 73<br />
   bdy_end:<br />
   itr:<br />
      kind: 14  x: 8  y: 6  w: 67  h: 73 vrest: 1<br />
   itr_end:<br />
&lt;frame_end&gt;</code></div></div>Here we have second frame of <span style="color: #66ffff;" class="mycode_color">ice</span>, so we must add second <span style="color: #ff33ff;" class="mycode_color">BODY</span> high above clouds, for example [y: -200] as in code.<br />
Now is needed <span style="color: #33cc33;" class="mycode_color">OPOINT</span> striking this second <span style="color: #ff33ff;" class="mycode_color">BODY</span>, no one can reach him, so it will works only for character with weakness.<br />
[opoint: kind: 1  x: 21  y: -220  action: 2  dvx: 0  dvy: 0  oid: 666  facing: 0]<br />
That Y helps us cover with <span style="color: #ff33ff;" class="mycode_color">BODY</span>.<br />
[OID: 666] is that script which is showed in step first.<br />
[action: 2] because its concerns <span style="color: #66ffff;" class="mycode_color">ICE</span> weakness.<br />
<br />
With <span style="color: #ff3333;" class="mycode_color">fire</span> we do the same, but with [action: 0]<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>&lt;frame&gt; 203 fire<br />
   pic: 18 state: 18  wait: 1  next: 204  dvx: 0  dvy: 0  centerx: 39  centery: 79  hit_a: 0  hit_d: 0  hit_j: 0<br />
   wpoint:<br />
      kind: 1  x: 42  y: 46  weaponact: 21  attacking: 0  cover: 0  dvx: 0  dvy: 0  dvz: 0 <br />
   wpoint_end:<br />
   bdy:<br />
      kind: 0  x: 22  y: 35  w: 26  h: 19<br />
   bdy_end:<br />
   itr:<br />
      kind: 0  x: 22  y: 35  w: 26  h: 19  dvx: -6  dvy: -6  fall: 70  vrest: 10  bdefend: 16  injury: 30 <br />
      effect: 20<br />
   itr_end:<br />
&lt;frame_end&gt;<br />
<br />
&lt;frame&gt; 204 fire<br />
   pic: 18 state: 18  wait: 1  next: 203  dvx: 0  dvy: 0  centerx: 39  centery: 79  hit_a: 0  hit_d: 0  hit_j: 0<br />
   opoint:<br />
      kind: 1  x: 21  y: -220  action: 0  dvx: 0  dvy: 0  oid: 666  facing: 0<br />
   opoint_end:<br />
   wpoint:<br />
      kind: 1  x: 42  y: 46  weaponact: 21  attacking: 0  cover: 0  dvx: 0  dvy: 0  dvz: 0 <br />
   wpoint_end:<br />
   bdy:<br />
      kind: 0  x: 22  y: 35  w: 26  h: 19<br />
   bdy_end:<br />
   bdy:<br />
      kind: 0  x: 22  y: -200  w: 26  h: 19<br />
   bdy_end:<br />
   itr:<br />
      kind: 0  x: 22  y: 35  w: 26  h: 19  dvx: -6  dvy: -6  fall: 70  vrest: 10  bdefend: 16  injury: 30  <br />
      effect: 20<br />
   itr_end:<br />
&lt;frame_end&gt;</code></div></div><br />
<br />
And finally...<br />
<span style="font-size: x-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b"><span style="color: #ffffff;" class="mycode_color"><br />
====================================<br />
STEP 3 - HAVE FUN! <br />
====================================<br />
</span></span></span><br />
<br />
<img src="http://i.gyazo.com/8b38f421749092d45716f62c68c5c251.gif" alt="[Image: 8b38f421749092d45716f62c68c5c251.gif]" class="mycode_img" /><br />
<img src="http://i.gyazo.com/77beed46cc7912f5a65cb53ca3048cc3.gif" alt="[Image: 77beed46cc7912f5a65cb53ca3048cc3.gif]" class="mycode_img" /><br />
Here's my DAT files for you to study <img src="https://lf-empire.de/forum/images/smilies/smile.gif" alt=":)" title=":)" class="smilie smilie_19" /><br />
<br />
char with weakness: <a href="http://speedy.sh/Fk3t2/weakguy.dat" target="_blank" rel="noopener" class="mycode_url">http://speedy.sh/Fk3t2/weakguy.dat</a><br />
weakness effect: <a href="http://speedy.sh/ptDPe/weakguy-col.dat" target="_blank" rel="noopener" class="mycode_url">http://speedy.sh/ptDPe/weakguy-col.dat</a><br />
<br />
Just put that into LF2/Data<br />
and remember to add this into DATA.TXT<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>id:  60  type: 0  file: data&#92;weakguy.dat<br />
id: 666  type: 3  file: data&#92;weakguy_col.dat</code></div></div><br />
If you noticed any bug or english mistake just write in thread or PM me.<br />
<br />
<span style="font-size: x-large;" class="mycode_size"><br />
TUTORIAL BY -=ONYX=-</span>]]></description>
			<content:encoded><![CDATA[<span style="font-size: xx-large;" class="mycode_size">Weakness for <span style="color: #ff3333;" class="mycode_color">FIRE</span>/<span style="color: #66ffff;" class="mycode_color">ICE</span></span><br />
-----------------------------------------------------------------------------<br />
<br />
Hi everyone, long time ago, when i was creating character called Rimfrost I wanted to make a weakness for <span style="color: #ff3333;" class="mycode_color">fire</span> with this champ using injury etc. But it was impossible, and today i created good idea about that weakness.<br />
<br />
Using correct bdy position and invisible ball (with <span style="color: #ff9933;" class="mycode_color">state 18</span>) we can make this easy!<br />
<br />
So let's create that invisible ball:<br />
<span style="font-size: x-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b"><span style="color: #ffffff;" class="mycode_color"><br />
====================================<br />
STEP 1 - effect that causes injury<br />
====================================<br />
</span></span></span><br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>&lt;bmp_begin&gt;<br />
file(0-11): sprite&#92;sys&#92;firzen_chasei.bmp  w: 81  h: 82  row: 4  col: 2<br />
weapon_hit_sound: data&#92;002.wav<br />
weapon_drop_sound: data&#92;002.wav<br />
weapon_broken_sound: data&#92;002.wav<br />
&lt;bmp_end&gt;<br />
<br />
<br />
&lt;frame&gt; 0 invisiblecolFIRE<br />
   pic: 11  state: 18  wait: 1  next: 1000  dvx: 0  dvy: 0  dvz: 0  centerx: 41  centery: 43  hit_a: 0  hit_d: 0  hit_j: 0 hit_Fa: 0<br />
   itr:<br />
      kind: 0  x: 0  y: 0  w: 81  h: 82  dvx: -8 dvy: -8  fall: 70  vrest: 15  bdefend: 20  injury: 80  <br />
      effect: 0 <br />
   itr_end:<br />
&lt;frame_end&gt;<br />
<br />
&lt;frame&gt; 2 invisiblecolICE<br />
   pic: 11  state: 18  wait: 1  next: 1000  dvx: 0  dvy: 0  dvz: 0  centerx: 41  centery: 43  hit_a: 0  hit_d: 0  hit_j: 0 hit_Fa: 0<br />
   itr:<br />
      kind: 0  x: 0  y: 0  w: 81  h: 82  dvx: -1  fall: 70  vrest: 15  bdefend: 20  injury: 80  <br />
      effect: 0<br />
   itr_end:<br />
&lt;frame_end&gt;</code></div></div><br />
Pic 11 from firzen_chasei is blank, so i used this number in both frames.<br />
Anyway, the most important thing is <span style="color: #ff9933;" class="mycode_color">STATE 18</span>, because this causes that ball to hurt anyone (even character which releases <span style="color: #33cc33;" class="mycode_color">opoint</span>).<br />
Remember that with <span style="color: #ffcc33;" class="mycode_color">injury</span> you can change the additional damage.<br />
And why 2 cols? Because guy on <span style="color: #ff3333;" class="mycode_color">fire</span> is dynamic, and it looks stupid when he inhibit after hit, but guy on <span style="color: #66ffff;" class="mycode_color">ice</span> is static, so he'll fall limply.<br />
<br />
You can ask: Why effect 0? It causes to release the effect of <span style="color: #ff3333;" class="mycode_color">fire</span> or <span style="color: #66ffff;" class="mycode_color">ice</span>!<br />
I'll explain of course, namely there's a big problem. I tried to combine that (especially <span style="color: #66ffff;" class="mycode_color">ice</span> with kind: 16) and it causes loop, and character with weakness was still knocked by that effect until he died, so there's a huge defect with my weakness patent.<br />
<span style="font-size: x-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b"><span style="color: #ffffff;" class="mycode_color"><br />
====================================<br />
STEP 2 - setting the <span style="color: #ff33ff;" class="mycode_color">body</span><br />
====================================<br />
</span></span></span><br />
Even if that effect got vrest, if you'll attack that sensitive character staying next to him you'll get hit also, so we must set infeasible <span style="color: #ff33ff;" class="mycode_color">body</span> out of map.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>&lt;frame&gt; 200 ice<br />
   pic: 8  state: 15  wait: 2  next: 201  dvx: 0  dvy: 0  centerx: 39  centery: 79  hit_a: 0  hit_d: 0  hit_j: 0<br />
   wpoint:<br />
      kind: 1  x: 18  y: 45  weaponact: 20  attacking: 0  cover: 0  dvx: 0  dvy: 0  dvz: 0 <br />
   wpoint_end:<br />
   bdy:<br />
      kind: 0  x: 10  y: 9  w: 55  h: 68<br />
   bdy_end:<br />
&lt;frame_end&gt;</code></div></div>We know that we can't put <span style="color: #33cc33;" class="mycode_color">OPOINT</span> here, because this is first frame of <span style="color: #66ffff;" class="mycode_color">ice</span>, so possibly we can shorten WAIT or something, i'll leave that option.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>&lt;frame&gt; 201 ice<br />
   pic: 9  state: 13  wait: 90  next: 202  dvx: 0  dvy: 0  centerx: 39  centery: 79  hit_a: 0  hit_d: 0  hit_j: 0<br />
   opoint:<br />
      kind: 1  x: 21  y: -220  action: 2  dvx: 0  dvy: 0  oid: 666  facing: 0<br />
   opoint_end:<br />
   wpoint:<br />
      kind: 1  x: 20  y: 55  weaponact: 35  attacking: 0  cover: 0  dvx: 0  dvy: 0  dvz: 0 <br />
   wpoint_end:<br />
   bdy:<br />
      kind: 0  x: 8  y: 6  w: 67  h: 73<br />
   bdy_end:<br />
   bdy:<br />
      kind: 0  x: 8  y: -200  w: 67  h: 73<br />
   bdy_end:<br />
   itr:<br />
      kind: 14  x: 8  y: 6  w: 67  h: 73 vrest: 1<br />
   itr_end:<br />
&lt;frame_end&gt;</code></div></div>Here we have second frame of <span style="color: #66ffff;" class="mycode_color">ice</span>, so we must add second <span style="color: #ff33ff;" class="mycode_color">BODY</span> high above clouds, for example [y: -200] as in code.<br />
Now is needed <span style="color: #33cc33;" class="mycode_color">OPOINT</span> striking this second <span style="color: #ff33ff;" class="mycode_color">BODY</span>, no one can reach him, so it will works only for character with weakness.<br />
[opoint: kind: 1  x: 21  y: -220  action: 2  dvx: 0  dvy: 0  oid: 666  facing: 0]<br />
That Y helps us cover with <span style="color: #ff33ff;" class="mycode_color">BODY</span>.<br />
[OID: 666] is that script which is showed in step first.<br />
[action: 2] because its concerns <span style="color: #66ffff;" class="mycode_color">ICE</span> weakness.<br />
<br />
With <span style="color: #ff3333;" class="mycode_color">fire</span> we do the same, but with [action: 0]<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>&lt;frame&gt; 203 fire<br />
   pic: 18 state: 18  wait: 1  next: 204  dvx: 0  dvy: 0  centerx: 39  centery: 79  hit_a: 0  hit_d: 0  hit_j: 0<br />
   wpoint:<br />
      kind: 1  x: 42  y: 46  weaponact: 21  attacking: 0  cover: 0  dvx: 0  dvy: 0  dvz: 0 <br />
   wpoint_end:<br />
   bdy:<br />
      kind: 0  x: 22  y: 35  w: 26  h: 19<br />
   bdy_end:<br />
   itr:<br />
      kind: 0  x: 22  y: 35  w: 26  h: 19  dvx: -6  dvy: -6  fall: 70  vrest: 10  bdefend: 16  injury: 30 <br />
      effect: 20<br />
   itr_end:<br />
&lt;frame_end&gt;<br />
<br />
&lt;frame&gt; 204 fire<br />
   pic: 18 state: 18  wait: 1  next: 203  dvx: 0  dvy: 0  centerx: 39  centery: 79  hit_a: 0  hit_d: 0  hit_j: 0<br />
   opoint:<br />
      kind: 1  x: 21  y: -220  action: 0  dvx: 0  dvy: 0  oid: 666  facing: 0<br />
   opoint_end:<br />
   wpoint:<br />
      kind: 1  x: 42  y: 46  weaponact: 21  attacking: 0  cover: 0  dvx: 0  dvy: 0  dvz: 0 <br />
   wpoint_end:<br />
   bdy:<br />
      kind: 0  x: 22  y: 35  w: 26  h: 19<br />
   bdy_end:<br />
   bdy:<br />
      kind: 0  x: 22  y: -200  w: 26  h: 19<br />
   bdy_end:<br />
   itr:<br />
      kind: 0  x: 22  y: 35  w: 26  h: 19  dvx: -6  dvy: -6  fall: 70  vrest: 10  bdefend: 16  injury: 30  <br />
      effect: 20<br />
   itr_end:<br />
&lt;frame_end&gt;</code></div></div><br />
<br />
And finally...<br />
<span style="font-size: x-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b"><span style="color: #ffffff;" class="mycode_color"><br />
====================================<br />
STEP 3 - HAVE FUN! <br />
====================================<br />
</span></span></span><br />
<br />
<img src="http://i.gyazo.com/8b38f421749092d45716f62c68c5c251.gif" alt="[Image: 8b38f421749092d45716f62c68c5c251.gif]" class="mycode_img" /><br />
<img src="http://i.gyazo.com/77beed46cc7912f5a65cb53ca3048cc3.gif" alt="[Image: 77beed46cc7912f5a65cb53ca3048cc3.gif]" class="mycode_img" /><br />
Here's my DAT files for you to study <img src="https://lf-empire.de/forum/images/smilies/smile.gif" alt=":)" title=":)" class="smilie smilie_19" /><br />
<br />
char with weakness: <a href="http://speedy.sh/Fk3t2/weakguy.dat" target="_blank" rel="noopener" class="mycode_url">http://speedy.sh/Fk3t2/weakguy.dat</a><br />
weakness effect: <a href="http://speedy.sh/ptDPe/weakguy-col.dat" target="_blank" rel="noopener" class="mycode_url">http://speedy.sh/ptDPe/weakguy-col.dat</a><br />
<br />
Just put that into LF2/Data<br />
and remember to add this into DATA.TXT<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>id:  60  type: 0  file: data&#92;weakguy.dat<br />
id: 666  type: 3  file: data&#92;weakguy_col.dat</code></div></div><br />
If you noticed any bug or english mistake just write in thread or PM me.<br />
<br />
<span style="font-size: x-large;" class="mycode_size"><br />
TUTORIAL BY -=ONYX=-</span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[DC course]]></title>
			<link>https://lf-empire.de/forum/showthread.php?tid=9168</link>
			<pubDate>Thu, 27 Mar 2014 16:42:49 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://lf-empire.de/forum/member.php?action=profile&uid=5322">ThrillerBeat</a>]]></dc:creator>
			<guid isPermaLink="false">https://lf-empire.de/forum/showthread.php?tid=9168</guid>
			<description><![CDATA[can anybody help us (Newcomers and bad DCer) to Dc better and give us a course please.<br />
<br />
HELP!!!!  <br />
<br />
Can anyone also give us a Course for DCing[/color]]]></description>
			<content:encoded><![CDATA[can anybody help us (Newcomers and bad DCer) to Dc better and give us a course please.<br />
<br />
HELP!!!!  <br />
<br />
Can anyone also give us a Course for DCing[/color]]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Mechanism: RECT]]></title>
			<link>https://lf-empire.de/forum/showthread.php?tid=9059</link>
			<pubDate>Tue, 31 Dec 2013 15:00:05 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://lf-empire.de/forum/member.php?action=profile&uid=5299">Ikran Ahiyìk</a>]]></dc:creator>
			<guid isPermaLink="false">https://lf-empire.de/forum/showthread.php?tid=9059</guid>
			<description><![CDATA[<span style="font-style: italic;" class="mycode_i">The tag "rect" is very useful in background files, because using them does not require a graphic file, thus saving space, and we often need areas with a single color. In the original LF2, stage (1-5) backgrounds and HK Coliseum have used RECT. However, it is a little bit more advanced to understand what every RECT codes the color they represent. For those who tried to perform experiments on it, it may be found that the actual color "jumps here and there" in the RGB cube as RECT value changes, leaving no interrelationship seems to be found.<br />
<br />
This "tutorial" explains the mechanism behind RECT codes in background files, as well as providing two-way formulas exchanging RECT codes and permitted RGB codes.<br />
<br />
For quick reference, you may want to read the <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Summary</span></span>. You can easily see this is one of the longest article in this forum, but if you have some spare time, it is recommended to start from <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 1</span></span> or <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">2</span></span> at least, which describe the mechanics more detailed so you will have a concept of how the formulas work.</span><br />
<br />
From here on, <span style="font-style: italic;" class="mycode_i">italics</span> will be representing my hypothesis and some points I am not completely sure, but generally I think they do make sense, or else I won't even keep them here. Just to notify.<br />
<br />
<br />
<br />
~~~ <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Table of Contents</span></span> ~~~<br />
<ul class="mycode_list"><li>Part 0 - Preface</li>
</ul>
<ul class="mycode_list"><li>Part 1 - RGB</li>
</ul>
<ul class="mycode_list"><li>Part 2 - The 1-Dimensional Notation</li>
</ul>
<ul class="mycode_list"><li>Part 3 - Linear Color Codes</li>
</ul>
<ul class="mycode_list"><li>Part 4 - Examining RECT Basics</li>
</ul>
<ul class="mycode_list"><li>Part 5 - Secrets Disclosed in Binary RECT</li>
</ul>
<ul class="mycode_list"><li>Part 6 - The Jackpot and R'G'B' to RGB<ul class="mycode_list"><li>6.1 - 777 Jackpot<br />
</li>
<li>6.2 - B' and B Exchange<br />
</li>
<li>6.3 - R' and R Exchange<br />
</li>
<li>6.4 - G' and G Exchange<br />
</li>
<li>6.5 - R'G'B' to RGB</li>
</ul>
</li>
</ul>
<ul class="mycode_list"><li>Part 7 - RECT to RGB and its Inverse<ul class="mycode_list"><li>7.1 - RECT to RGB<br />
</li>
<li>7.2 - RGB to RECT<br />
</li>
<li>7.3 - R, G, B to RECT<br />
</li>
<li>7.4 - RECT to R, G, B<br />
</li>
<li>7.5 - Handling Negative RECT</li>
</ul>
</li>
</ul>
<ul class="mycode_list"><li>Part 8 - Exceptional Cases</li>
</ul>
<ul class="mycode_list"><li>Part 9 - Mechanical Summary and Applications<ul class="mycode_list"><li>9.1 - Overview of Formulas<br />
</li>
<li>9.2 - The Exchange Cycle<br />
</li>
<li>9.3 - Formulas for Secondary Base Colors</li>
</ul>
</li>
</ul>
<ul class="mycode_list"><li>Summary</li>
</ul>
<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 0 - Preface</span></span><br />
<br />
Spending a short while saying why I write this: I was too searching what a certain RECT represents a RGB, or more ideally the interchange formulas so that I can type in the color I want. I have found YinYin had wrote something about it, I guess a long while ago. The link to his "extremely professional explanation", provided by Marshall, is dead, so I was not certain what its content is. The passage by YinYin can be found now so far is <a href="http://www.lf-empire.de/forum/showthread.php?pid=1872#pid1872" target="_blank" rel="noopener" class="mycode_url">this (click)</a>. Maybe this is actually that explanation, but I just can't make sure. Anyway for this explanation, compared to the theory now I have made up below, contains some errors. I know he had wrote a program for us to get RECT codes by selecting a color, but I could not install it, so I was looking for a manual translation. I could not completely understand RECT just after reading his explanation, until I had done further experiments. However, it surely clarify the biggest concept of the RECT mechanism (see <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 2</span></span>), so I could test samples on the correct way very soon. Now this tutorial will fix the remaining minor errors in YinYin's explanation, and show you the system as detail as I can.<br />
<br />
<br />
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">1</span></span></div>
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 1 - RGB</span></span><br />
<br />
For some catch-up I explain also the RGB codes. If you think it is fine you may skip this.<br />
<br />
"RGB" stands for simply Red-Green-Blue, a code system representing digital color by notating the three basic optical colors red, green and blue, which could mix together to other colors. RGB codes are usually represented by a set of three decimal (base-10) numbers or a single number made up by three groups of hexadecimal (base-16) numbers. Today's computer systems and applications generally support a word size of 32 bits; when applied to RGB codes, these 32 bits will be divided into 4 parts: 3 parts of 8 bits each for the 3 colors, and the remaining part is for alpha (transparency; just put this aside since LF2 and *.bmp files do not support alpha scales). One bit means a binary (base-2) digit which stores either 0 or 1 only, i.e. 2 possible values, then 8 bits combined will be 2^8 = 256 combinations. Three colors of 256 combinations each will be 2^24 = 256^3 = 16,777,216 distinct colors.<br />
<br />
Here comes to the end of this part. There will be some further RGB-related contents later.<br />
<br />
<br />
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">2</span></span></div>
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 2 - The 1-Dimensional Notation</span></span><br />
<br />
This is all about combining arrays with multiple dimensions into linear arrays, or more than one variable into one. RECT works in this way too; but before mentioning RECT, I first provide you several examples of what this term is about, so after this step-by-step bridging, you will understand RECT exactly when we approach there. I assume you have some basic Data Changing knowledge when reading this, so you should have no problem understanding the terms in the following examples.<br />
<br />
Let's repeat. This is a technique when we need to combine arrays more than one dimension, into one. A simple example would be stage/id:. Excluding the latest Survival Stage, we know that id: 0 is Stage 1-1, up to id: 9 is Stage 1-10, then id: 10 is Stage 2-1 ... , all until id: 49 which is Stage 5-10. Now pay attention. (1) Stage X-Y contains two variables which store integers, where 1 &lt;= X &lt;= 5 and 1 &lt;= Y &lt;= 10; but (2) id: only recognize one integer variable ranged 0 to 49 inclusive, instead of something like catchingact: which recognize two variables. For normal players (1) makes sense to them, and imagine LF2 reads your stage selection input after confirming fighters the first time into variable X, then Y starts from 1 at any conditions, later Y is assigned to be (Y + 1) if an act is completed, and so on. However, we data changers know that stage.dat actually only list the stage acts with one id:, which is case (2). The stage selection in the game interface actually reads and translate the id: into 0, 10, 20, 30, 40 for Stages 1 to 5 or 50 for Survival. Translation between the 2-D imaginary system and the 1-D actual system would be like<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>Two-Dimensional Array [1..5, 1..10]<br />
<br />
[1, 1]&nbsp;&nbsp;[1, 2]&nbsp;&nbsp;[1, 3]&nbsp;&nbsp;[1, 4]&nbsp;&nbsp;[1, 5]&nbsp;&nbsp;[1, 6]&nbsp;&nbsp;[1, 7]&nbsp;&nbsp;[1, 8]&nbsp;&nbsp;[1, 9]&nbsp;&nbsp;[1, 10]<br />
<br />
[2, 1]&nbsp;&nbsp;[2, 2]&nbsp;&nbsp;[2, 3]&nbsp;&nbsp;[2, 4]&nbsp;&nbsp;[2, 5]&nbsp;&nbsp;[2, 6]&nbsp;&nbsp;[2, 7]&nbsp;&nbsp;[2, 8]&nbsp;&nbsp;[2, 9]&nbsp;&nbsp;[2, 10]<br />
<br />
[3, 1]&nbsp;&nbsp;[3, 2]&nbsp;&nbsp;[3, 3]&nbsp;&nbsp;[3, 4]&nbsp;&nbsp;[3, 5]&nbsp;&nbsp;[3, 6]&nbsp;&nbsp;[3, 7]&nbsp;&nbsp;[3, 8]&nbsp;&nbsp;[3, 9]&nbsp;&nbsp;[3, 10]<br />
<br />
[4, 1]&nbsp;&nbsp;[4, 2]&nbsp;&nbsp;[4, 3]&nbsp;&nbsp;[4, 4]&nbsp;&nbsp;[4, 5]&nbsp;&nbsp;[4, 6]&nbsp;&nbsp;[4, 7]&nbsp;&nbsp;[4, 8]&nbsp;&nbsp;[4, 9]&nbsp;&nbsp;[4, 10]<br />
<br />
[5, 1]&nbsp;&nbsp;[5, 2]&nbsp;&nbsp;[5, 3]&nbsp;&nbsp;[5, 4]&nbsp;&nbsp;[5, 5]&nbsp;&nbsp;[5, 6]&nbsp;&nbsp;[5, 7]&nbsp;&nbsp;[5, 8]&nbsp;&nbsp;[5, 9]&nbsp;&nbsp;[5, 10]</code></div></div><div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>One-Dimensional Array [0..49]<br />
<br />
[0]&nbsp;&nbsp; [1]&nbsp;&nbsp; [2]&nbsp;&nbsp; [3]&nbsp;&nbsp; [4]&nbsp;&nbsp; [5]&nbsp;&nbsp; [6]&nbsp;&nbsp; [7]&nbsp;&nbsp; [8]&nbsp;&nbsp; [9]<br />
<br />
[10]&nbsp;&nbsp;[11]&nbsp;&nbsp;[12]&nbsp;&nbsp;[13]&nbsp;&nbsp;[14]&nbsp;&nbsp;[15]&nbsp;&nbsp;[16]&nbsp;&nbsp;[17]&nbsp;&nbsp;[18]&nbsp;&nbsp;[19]<br />
<br />
[20]&nbsp;&nbsp;[21]&nbsp;&nbsp;[22]&nbsp;&nbsp;[23]&nbsp;&nbsp;[24]&nbsp;&nbsp;[25]&nbsp;&nbsp;[26]&nbsp;&nbsp;[27]&nbsp;&nbsp;[28]&nbsp;&nbsp;[29]<br />
<br />
[30]&nbsp;&nbsp;[31]&nbsp;&nbsp;[32]&nbsp;&nbsp;[33]&nbsp;&nbsp;[34]&nbsp;&nbsp;[35]&nbsp;&nbsp;[36]&nbsp;&nbsp;[37]&nbsp;&nbsp;[38]&nbsp;&nbsp;[39]<br />
<br />
[40]&nbsp;&nbsp;[41]&nbsp;&nbsp;[42]&nbsp;&nbsp;[43]&nbsp;&nbsp;[44]&nbsp;&nbsp;[45]&nbsp;&nbsp;[46]&nbsp;&nbsp;[47]&nbsp;&nbsp;[48]&nbsp;&nbsp;[49]&nbsp;&nbsp; ...<br />
<br />
For 2-D [X, Y] and 1-D [Z], translation: Z = 10 (X - 1) + Y - 1</code></div></div><br />
Their difference is that, cells of the 2-D system are linked like a net -- five horizontal linking lines and ten vertical, but the 1-D system is actually a single line like [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] ... [48] [49]. It seems that from [0] to [10] is only one vertical block apart, but actually there is no vertical leap in a 1-D horizontal line; the leap is actually 10 horizontal blocks. Ideally, [anything, 1] is where you may start a stage, but actually it is [anything divisible by 10]. The locations allowed to start Stage Mode are marked <span style="text-decoration: underline;" class="mycode_u">{ }</span>, and the whole line would looks like<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-family: Courier;" class="mycode_font"><span style="text-decoration: underline;" class="mycode_u">{0}</span> [1] [2] [3] [4] [5] [6] [7] [8] [9] <span style="text-decoration: underline;" class="mycode_u">{10}</span> [11] [12] [13] [14] [15] [16] [17] [18] [19] <span style="text-decoration: underline;" class="mycode_u">{20}</span> [21] ... [29] <span style="text-decoration: underline;" class="mycode_u">{30}</span> ... <span style="text-decoration: underline;" class="mycode_u">{40}</span> [41] ... [48] [49]</span></div>
<br />
You see the locations are greatly apart but with constant interval, because one interval means one cycle of completion of the smaller digit. Here it is the imaginary Y variable. In translation, Z changes as Y changes, but Z moves a whole interval (10, which contains all possible values of Y) as X changes only by 1. This is just like the minute hand and second hand of (some types of) clocks. When the second hand completes a cycle, 60 units, the minute hand will move one unit.<br />
<br />
Concerning time, we can talk about TU in DC too. Randomly say, if I want a wait: value of 3:31:16 (3 minutes, 31 seconds and 16 frames in 30 fps), I need to combine all 3 numbers into TU. Examine the cycles first: 30 frames (TU) = 1 s, 60 s = 1 min; 31 s = 930 TU, 3 min = 180 s = 5,400 TU. Sum together, it is 6,346 TU. This seems a bit off-topic, but I want to say, a change of unit can make multiple variables into a single possible. For time values the exchange of units is obvious, 1 hour = 60 min = 3,600 s = 108,000 TU, but for some systems -- more on-topic -- colors, it is not. How can I say 256 units of blue = 1 unit of green? This is ridiculous.<br />
<br />
Really? No, in fact human can define many things. The original LF2 has 5 acts for each stage only. It is perfectly possible for Wong to define id: 0 to 4 for Stage 1, up to id: 20 to 24 for Stage 5. In this case every 5 id: units exchange to 1 stage, and the act number repeats the cycle and returns to the start again. When it moves to color, it is just the same -- when one cycle completes, another moves 1. Let's see RGB first.<br />
<br />
<br />
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">3</span></span></div>
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 3 - Linear Color Codes</span></span><br />
<br />
As mentioned in <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 1</span></span>, RGB may be one hexadecimal number. For example, the largest, static blue area on the top of the LF2 screen listing HP MP bars, that blue is coded #324D9A. In the three-variable decimal notation it is (50, 77, 154), which is the decimal numbers of 32h, 4Dh and 9Ah. But what if we directly exchange 324D9Ah into decimal? It will be 3,296,666, which seems to be meaningless, but it will not if we do some calculations. Why we can directly breakdown 324D9Ah into 32h, 4Dh and 9Ah, is because each color's available depths is 256, from the 8 bits per color system (see <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 1</span></span>), and 256 is delicately 100h. So now<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>-&nbsp;&nbsp;&nbsp;&nbsp;32&nbsp;&nbsp;&nbsp;&nbsp; h<br />
-&nbsp;&nbsp; * 10000 h<br />
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4D&nbsp;&nbsp; h<br />
-&nbsp;&nbsp;&nbsp;&nbsp; * 100 h<br />
-&nbsp;&nbsp; +)&nbsp;&nbsp; 9A h<br />
-&nbsp;&nbsp; -------<br />
-&nbsp;&nbsp;&nbsp;&nbsp;324D9A h<br />
<br />
324D9Ah = 32h * 10000h + 4Dh * 100h + 9Ah<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 50 * 65536&nbsp;&nbsp;+&nbsp;&nbsp;77 * 256&nbsp;&nbsp;+ 154 = 3296666</code></div></div><br />
After breaking down the number, it looks just the same no matter we change all of its elements into decimal or not.<br />
<br />
Let's try notating a number in RGB and 1-D decimal simultaneously. Say, we start from color #000000, and represent it by 0. If we treat the code as one number and add it by 1, it will be 1 or #000001, which is R0 G0 B1. Continuing the process, until 255 or #0000FF, separately it is R0 G0 B255. Next it is the critical point, where degree 255 of blue color "transform" into 1 green point; it is 256 or #000100, R0 G1 B0. The previously said weird color transform occurs. It is indeed weird if you move one unit by one unit on this line ranged from 0 to 16,777,215 which intend to represent a 3-dimensional array. If you move 3-D-ly, that is, cycle by cycle, it should be just fine. Let's go back to the #000100 code. Normally you adjust the base color directly, like adding degree 100 of green. Now one cycle of blue is 256 units, so every 256 (16^2) units in whole means degree one of green. Degree 100 would be 100 * 16^2. Add it to the #000100 or 256, will become #006500 or 25,856. Similarly, if I want another degree 16 of red, it is 16 * 16^4 = 1,048,576; add to the code it will be #106500 or 1,074,432.<br />
<br />
"Degree 256 of blue means degree 1 of green" still looks not very natural; we should rather say: degrees of red, green and blue moves in steps of 65,536, 256 and 1 unit respectively on the 1-D RGB color representation. To "decrypt" an 1-D color code, conversely we see how many steps of a certain base color it has taken. Take the previous #324D9A, in hexadecimal it is simple since red and green are moving in steps of 10000h and 100h units respectively. In decimal, it is still not that complicated, just require some division.<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">3296666 / 65536 = 50 ... 19866</span></div>
<br />
So it has taken 50 steps of red, which is 65536 units each, and something is left. Process that number,<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">19866 / 256 = 77 ... 154</span></div>
<br />
Thus 77 steps of green, 256 units each, is taken. The remainder represents blue degree since it is 1 unit each.<br />
<br />
You may wonder why I tell so much on RGB instead of our subject RECT, and even use such an unpopular decimal method to notate RGB codes. Well, the RECT mechanism is quite similar to this. We are approaching, but there are still some points to be clarified.<br />
<br />
<br />
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">4</span></span></div>
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 4 - Examining RECT Basics</span></span><br />
<br />
From YinYin's explanation, we (or I) learn that RECT codes are lying on an 1-D line representing sets of 3-variable color codes; from it and also <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 3</span></span>, we learn that if we put 3 color degrees into 1-D, 2 of the colors need to be represented by leaping certain intervals. Therefore, before experimenting we expect only one base color will change if we change the RECT value by certain amounts which are or are multiples of its intervals. The following are the actual samples I have taken using LF2.exe, LF2 Data Changer and Paint.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>rect&nbsp;&nbsp; R&nbsp;&nbsp; G&nbsp;&nbsp; B<br />
------ --- --- ---</code></div></div><div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7&nbsp;&nbsp; 7&nbsp;&nbsp; 7<br />
32&nbsp;&nbsp;&nbsp;&nbsp; 7&nbsp;&nbsp; 11&nbsp;&nbsp;7<br />
2015&nbsp;&nbsp; 7&nbsp;&nbsp; 255 255<br />
2016&nbsp;&nbsp; 8&nbsp;&nbsp; 3&nbsp;&nbsp; 7<br />
2048&nbsp;&nbsp; 15&nbsp;&nbsp;7&nbsp;&nbsp; 7<br />
4032&nbsp;&nbsp; 15&nbsp;&nbsp;255 7<br />
4063&nbsp;&nbsp; 15&nbsp;&nbsp;255 255<br />
4064&nbsp;&nbsp; 16&nbsp;&nbsp;3&nbsp;&nbsp; 7<br />
4095&nbsp;&nbsp; 16&nbsp;&nbsp;3&nbsp;&nbsp; 255<br />
4096&nbsp;&nbsp; 23&nbsp;&nbsp;7&nbsp;&nbsp; 7<br />
5984&nbsp;&nbsp; 23&nbsp;&nbsp;243 7<br />
6000&nbsp;&nbsp; 23&nbsp;&nbsp;243 135<br />
6016&nbsp;&nbsp; 23&nbsp;&nbsp;247 7<br />
6048&nbsp;&nbsp; 23&nbsp;&nbsp;251 7<br />
6079&nbsp;&nbsp; 23&nbsp;&nbsp;251 255<br />
6080&nbsp;&nbsp; 23&nbsp;&nbsp;255 7<br />
6090&nbsp;&nbsp; 23&nbsp;&nbsp;255 87<br />
6100&nbsp;&nbsp; 23&nbsp;&nbsp;255 167<br />
6110&nbsp;&nbsp; 23&nbsp;&nbsp;255 247<br />
6111&nbsp;&nbsp; 23&nbsp;&nbsp;255 255<br />
6112&nbsp;&nbsp; 24&nbsp;&nbsp;3&nbsp;&nbsp; 7<br />
6143&nbsp;&nbsp; 24&nbsp;&nbsp;3&nbsp;&nbsp; 255<br />
6144&nbsp;&nbsp; 31&nbsp;&nbsp;7&nbsp;&nbsp; 7<br />
6368&nbsp;&nbsp; 31&nbsp;&nbsp;35&nbsp;&nbsp;7<br />
6751&nbsp;&nbsp; 31&nbsp;&nbsp;79&nbsp;&nbsp;255<br />
6752&nbsp;&nbsp; 31&nbsp;&nbsp;83&nbsp;&nbsp;7<br />
65503&nbsp;&nbsp;255 255 255<br />
65504&nbsp;&nbsp;0&nbsp;&nbsp; 3&nbsp;&nbsp; 7<br />
65535&nbsp;&nbsp;0&nbsp;&nbsp; 3&nbsp;&nbsp; 255<br />
65536&nbsp;&nbsp;7&nbsp;&nbsp; 7&nbsp;&nbsp; 7<br />
71646&nbsp;&nbsp;23&nbsp;&nbsp;255 247<br />
262144 7&nbsp;&nbsp; 7&nbsp;&nbsp; 7</code></div></div><br />
You may find many equal values within one base color, and one seems to be out-of-pattern phoneme in red code (often jumps in 7 but very occasionally in 1) which will be explained in lower parts. Now let's follow my interpretation of the data collected.<br />
<br />
First, we can see the smallest changing in RECT represent the blue code, i.e. when RECT changes by one, it is likely only blue depth changes. Then, we see RECT is similar to RGB in fact -- red using largest intervals and green using moderate intervals, lastly for blue -- refer to RECT values 6079 to 6112, we see green value changes as blue completes a cycle; finally red is the largest, by comparing RECT: 0 and 2048, only red changes while green and blue are kept at 7. So, now we discover that in RECT, the base colors red, green and blue moves in steps of 2,048, 32 and 1 unit respectively.<br />
<br />
Green in steps of 32... this actually means there are 32 degrees of blue depth levels available in total. 32 is 32 divided by 1; similarly for green cycles, there are... 2,048 / 32 = 64 depth levels. This looks inconsistent but true, because green depths jumps in 4 in RGB, 256 divided by 4 that is 64; and for blue it jumps in 8, so only 32 depth levels are available. For red, first we must find out how much is one cycle of it. If you have noticed RECT: 0 and 65536 has all the same RGB representation, you know the answer. Everything in RECT repeats in cycles of 65,536 units. Lastly, 65,536 / 2,048 = 32 depth levels for red. (There are only 32 designed depths for red, not 64 as it seems. The reason of the phoneme will be discussed in <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6</span></span>.) This should clarify the error in YinYin's explanation, "goes from 7 to 255 in steps of 4, thus leaving you 32 colors." (In fact if a sequence goes from 7 to 255 in steps of 4, it has 63 members.) Only red and blue "go from 7 to 255" and "leave you 32 colors," and only green goes "in steps of 4."<br />
<br />
To shortly conclude, RECT is a 1-variable color code (designed to) provide 32, 64 and 32 red, green and blue color depths respectively. When representing in 1-D, red and green values are notated by steps of 2,048 and 32 units each.<br />
<br />
<br />
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">5</span></span></div>
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 5 - Secrets Disclosed in Binary RECT</span></span><br />
<br />
It is confusing to jump in 2,048 and 32 intervals to obtain the color depths. You may wonder is there a method to split the number into three parts, one base color each, as RGB do (324D9Ah is one hex number, but we can directly say it is R32h, G4Dh and B9Ah). Besides, you may want to learn more about why the available depths are allocated so strangely, why 32, 64, 32 but neither all-32 nor all-64.<br />
<br />
For the first question, it is a matter of numerical base. RGB can do so because the cycle is 256, which can be written in powers of 16, the base it applied, therefore when it comes to division as in <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 3</span></span>, it just looks the same as sticking all the digits into one number under base-16. For the acts of stages, both the base and cycle are 10, so using base-10 would obviously creates the similar effect. Now it is tricky when it comes to RECT. We need a base fits both the cycles of 32 and the cycle of 64. There is one -- considering 32 = 2^5 and 64 = 2^6 -- it is base-2, the binary system. You will see how it works after transforming RECT codes into binary. Let's see,<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>rect&nbsp;&nbsp; R&nbsp;&nbsp; G&nbsp;&nbsp; B&nbsp;&nbsp;&nbsp;&nbsp;rectBin (16 bits)&nbsp;&nbsp;&nbsp;&nbsp;R' G' B'<br />
------ --- --- ---&nbsp;&nbsp;-------------------&nbsp;&nbsp;-- -- --</code></div></div><div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7&nbsp;&nbsp; 7&nbsp;&nbsp; 7&nbsp;&nbsp;&nbsp;&nbsp;0000 0000 0000 0000&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0<br />
32&nbsp;&nbsp;&nbsp;&nbsp; 7&nbsp;&nbsp; 11&nbsp;&nbsp;7&nbsp;&nbsp;&nbsp;&nbsp;0000 0000 0010 0000&nbsp;&nbsp;0&nbsp;&nbsp;1&nbsp;&nbsp;0<br />
2015&nbsp;&nbsp; 7&nbsp;&nbsp; 255 255&nbsp;&nbsp;0000 0111 1101 1111&nbsp;&nbsp;0&nbsp;&nbsp;62 31<br />
2016&nbsp;&nbsp; 8&nbsp;&nbsp; 3&nbsp;&nbsp; 7&nbsp;&nbsp;&nbsp;&nbsp;0000 0111 1110 0000&nbsp;&nbsp;0&nbsp;&nbsp;63 0<br />
2048&nbsp;&nbsp; 15&nbsp;&nbsp;7&nbsp;&nbsp; 7&nbsp;&nbsp;&nbsp;&nbsp;0000 1000 0000 0000&nbsp;&nbsp;1&nbsp;&nbsp;0&nbsp;&nbsp;0<br />
4032&nbsp;&nbsp; 15&nbsp;&nbsp;255 7&nbsp;&nbsp;&nbsp;&nbsp;0000 1111 1100 0000&nbsp;&nbsp;1&nbsp;&nbsp;62 0<br />
4063&nbsp;&nbsp; 15&nbsp;&nbsp;255 255&nbsp;&nbsp;0000 1111 1101 1111&nbsp;&nbsp;1&nbsp;&nbsp;62 31<br />
4064&nbsp;&nbsp; 16&nbsp;&nbsp;3&nbsp;&nbsp; 7&nbsp;&nbsp;&nbsp;&nbsp;0000 1111 1110 0000&nbsp;&nbsp;1&nbsp;&nbsp;63 0<br />
4095&nbsp;&nbsp; 16&nbsp;&nbsp;3&nbsp;&nbsp; 255&nbsp;&nbsp;0000 1111 1111 1111&nbsp;&nbsp;1&nbsp;&nbsp;63 31<br />
4096&nbsp;&nbsp; 23&nbsp;&nbsp;7&nbsp;&nbsp; 7&nbsp;&nbsp;&nbsp;&nbsp;0001 0000 0000 0000&nbsp;&nbsp;2&nbsp;&nbsp;0&nbsp;&nbsp;0<br />
65503&nbsp;&nbsp;255 255 255&nbsp;&nbsp;1111 1111 1101 1111&nbsp;&nbsp;31 62 31<br />
65504&nbsp;&nbsp;0&nbsp;&nbsp; 3&nbsp;&nbsp; 7&nbsp;&nbsp;&nbsp;&nbsp;1111 1111 1110 0000&nbsp;&nbsp;31 63 0<br />
65535&nbsp;&nbsp;0&nbsp;&nbsp; 3&nbsp;&nbsp; 255&nbsp;&nbsp;1111 1111 1111 1111&nbsp;&nbsp;31 63 31<br />
65536&nbsp;&nbsp;7&nbsp;&nbsp; 7&nbsp;&nbsp; 7&nbsp;&nbsp;&nbsp;&nbsp;0000 0000 0000 0000&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0<br />
71646&nbsp;&nbsp;23&nbsp;&nbsp;255 247&nbsp;&nbsp;0001 0111 1101 1110&nbsp;&nbsp;2&nbsp;&nbsp;62 30<br />
262144 7&nbsp;&nbsp; 7&nbsp;&nbsp; 7&nbsp;&nbsp;&nbsp;&nbsp;0000 0000 0000 0000&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0</code></div></div><br />
From here, we first define another type of color code, R'G'B', used in RECT. It is just like RGB but with R' and B' ranged 0 to 31, and G' ranged 0 to 63 inclusive, instead of 0 to 255. 0 is the black end and their greatest number are their colored end. This system will be mentioned and used for quite a while, and no replacement until we discuss how to link R'G'B' to RGB.<br />
<br />
Binary numbers are too long and normally divided into groups of 4. In the current case, for our purpose you may group them in to 5, 6, 5, which would be even clearer; e.g. 00001 111110 00000 for RECT: 4032. Under this division, you can clearly see the last three columns of the above table is just the decimal representation of the three parts of the binary number, which is transformed from RECT. For the example just given, 00001 is 1, 111110 is 62, and 00000 is 0. RECT only recognize 16 bits, thus for values starting from 65536 (2^16), the cycle is just repeating. The exceeded amounts are ignored, see the last three sets of data in the table.<br />
<br />
Digital memories group 8 bits as 1 byte, thus it is normal to expect processing word sizes or the smallest memory units are in multiples of 8 bits, e.g. 8, 16, 24, 32, 64 or 128. If RECT adapts an all-32 allocation of color depths, only 15 bits will be used and 1 bit will be wasted. 1 bit means a lot -- a double of distinct colors available. <span style="font-style: italic;" class="mycode_i">I guess LF2 originally took this way in fact, until later changed green to have 64 levels, because we see all the starting points are 7 in RGB (see R'0 G'0 B'0 = R7 G7 B7), and G'63 = G3 which looks strange. If the authors were intended to use all 16 bits at the very start, the ranges RECT available in RGB should be 7 to 255, 3 to 255 and 7 to 255 as R'G'B' goes from 0 to 31, 0 to 63 and 0 to 31 respectively, instead of the current pattern of green that from 7 to 255 then completes on 3. If you acknowledge RECT runs in 16 bits, all-64 depths would be impossible since it requires 18 bits. Finally, for the reason why it is green being doubled in depth levels but not red or blue... other than the preferences of the authors it may be a matter of symmetry. Among all the combinations of two 5's and one 6, 5-6-5 looks better than 6-5-5 or 5-5-6.</span><br />
<br />
So now, if we think in binary form of RECT or R'G'B', it is much more clearer to see the advancement from cycle completions. When B' completes a cycle of 0 to 31, when it back to 0 G' will increase by 1. In binary, 32 is 100000, where the 1 is the sixth digit (count from the right), it is over the bound of the "blue area". Listing the whole binary RECT, it is 00000 000001 00000. For the sixth to eleventh digits, it is the business of green; for the last five digits, it is for red. Maybe you remember I said before this "some blue points transform to one green point" "advancement" is nonsense (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 3</span></span>). The replacement system is to move 3-D-ly or cycle by cycle. Here when you adapt this system, you change either R', G' or B', or say the 12th to 16th, 6th to 11th or 1st to 5th digits of the binary RECT in groups. The purpose we break RECT down to binary is to enable direct base color changes as in hexadecimal RGB. Use it, or think in this way.<br />
<br />
Recalling the basics; digital colors made up of three equally ranged base colors. We still have to transform R'G'B' code, which derived from RECT, to RGB in order to realize the colors digitally. When we have some concepts on RECT mechanism, we can now discuss how RECT related to RGB.<br />
<br />
<br />
<br />
<div style="text-align: center;" class="mycode_align">~</div><hr class="mycode_hr" />
<br />
<div style="text-align: center;" class="mycode_align">~</div>
<div style="text-align: right;" class="mycode_align"><span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">6</span></span></div>
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6 - The Jackpot and R'G'B' to RGB</span></span><br />
<br />
(For the meaning of R'G'B' which defined by me, please refer to the paragraph just below the table in <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 5</span></span> if you have skipped it.)<br />
<br />
When you see the starting point R'0 G'0 B'0 represents R7 G7 B7, ever think of the 777 Jackpot? <span style="font-style: italic;" class="mycode_i">But it is a joke to say the authors were inspired by the Jackpot in developing RECT. I can't say the possibility is 0%, but there are just reasons which are much more logical and reasonable, also are likely to replace it.</span><br />
<br />
In <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 4</span></span> we concluded RECT is a linear color representation designed to provide 32 red, 64 green and 32 blue color depths, and in <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 5</span></span> I proposed <span style="font-style: italic;" class="mycode_i">the depth levels available for green was originally also 32 as other colors, until further optimization</span>. At this moment we ignore the 64 depths and assume the system adapting all-32 depths. We are going to discuss why and how a 0 to 31 scale transform into a 7 to 255 scale.<br />
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: x-large;" class="mycode_size">6.1</span></div>
<span style="text-decoration: underline;" class="mycode_u">6.1 - 777 Jackpot</span><br />
<br />
The RGB system has 256 depths for each color, which is exactly 8 times of the degree-32 one. Even its density is much lower than RGB, it still has to spread evenly on the full scale from black to the corresponding base color. Then although the colors are far less detail than RGB, it still provides a variety of colors. To spread, we just multiply it by how much times its scale is less denser, 8 times. In a quick calculation, the scale 0 to 31 would become 0 to 248, so now it represents absolute black (0) and nearly approach the full saturation (255). It was 0 to 31 in steps of 1, now becomes 0 to 248 in steps of 8; both have 32 steps. Comparing 0-248 and 7-255, there is a difference of 7 units. <span style="font-style: italic;" class="mycode_i">The reason why having a value of 0 in RGB scale is avoided, is that at least one color with 0 can be produced by using nothing in backgrounds -- absolute black (#000000),</span> as said by YinYin. This is important because LF2 background files had a limit of 30 layers only before Ver 2.0. Saving one layer saves a lot. <span style="font-style: italic;" class="mycode_i">On the other hand, absolute white (#FFFFFF) is one of the most basic colors other than red, green and blue, so the scale is sticking to the 255 end to make this color available.</span> When the right end is 255, the left end, 31 steps apart with 8 units each, is 7, so creating the Jackpot starting.<br />
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: x-large;" class="mycode_size">6.2</span></div>
<span style="text-decoration: underline;" class="mycode_u">6.2 - B' and B Exchange</span><br />
<br />
So now we have discussed why RECT is roughly representing degrees 7 to 255 in the RGB scale. Let's start to see how to exchange the two system. Out of the three base colors, only blue in the actual R'G'B' or RECT system is exactly the same as the degree-32 <span style="font-style: italic;" class="mycode_i">old</span> system we have just discussed. But anyway let's see how to transform B' into B of RGB by a formula. I am giving it out first; it is<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">B = 8B' + 7</span></span></div>
<br />
8 is the magnification, and 7 is the constant such that RECT could give out a depth of full saturation (255). When B' is 0, B is 7; when B' is 1, B is 15; when B' is 2, 23; and so on. Now suppose we have selected a color and want its RECT, we need a inverse formula. It could be easily got by changing its subject, as follows<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">8B' + 7 = B<br />
<br />
8B' = B - 7<br />
<br />
<span style="text-decoration: underline;" class="mycode_u">B' = (B - 7) / 8</span></span></div>
<br />
Furthermore, we discover something; both RGB and RECT values are integers, so in this formula, we can see what is the condition for a certain color depth being available in RECT, using a mathematical method. RECT must be an integer, therefore B' must be also. By using the formula, the statement will be "(B - 7) / 8 must be an integer," and can be rewritten as "(B - 7) / 8 must be divisible by 1." Multiply the whole line by 8, we will get<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">(B - 7) must be divisible by 8.</span></span></div>
<br />
This presents our concepts on only using 7, 15, 23, 31, ... for B' in terms of RGB in a generalized way.<br />
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: x-large;" class="mycode_size">6.3</span></div>
<span style="text-decoration: underline;" class="mycode_u">6.3 - R' and R Exchange</span><br />
<br />
Next, we will temporarily skip green and first move on to the red code. Referring to the table in <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 4</span></span> or your own samples, R' should represent at most 64 distinct color depths in normal cases. They can be grouped into two sequences: the first being 7, 15, 23, ..., 247, 255 the same as blue, another one is adding this sequence by 1, into 8, 16, 24, ..., 248, 0. Sorry to delay (very bit though), but this mysterious +1 is related to the green code and thus will be discussed later. For now, please ignore it, so 7 and 8 are both treated as 7, 15 and 16 are both 15, etc. If you can tell yourself to accept this, then the story will be extremely simple, because it is just a copy and paste with little altering:<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">R = 8R' + 7<br />
<br />
R' = (R - 7) / 8<br />
<br />
(R - 7) must be divisible by 8</span>, under certain conditions.</div>
<br />
They indeed look very familiar. Done, now the last color.<br />
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: x-large;" class="mycode_size">6.4</span></div>
<span style="text-decoration: underline;" class="mycode_u">6.4 - G' and G Exchange</span><br />
<br />
To be mentioned last, the green code must be the most complicated one, being <span style="font-style: italic;" class="mycode_i">it was optimized into a cycle differs from other base colors, in the development of RECT</span>. There could be two interpretations of the green code; the more direct one is, similar to red and blue, spread the scale only instead in 64 intervals. The very first problem we face would be what the highest G' value represents in G of RGB -- G'62 is already G255, and then G'63 is G3. The formula can't work this way as far as we know now. But take a look, remember they are cycles, so it is not a great deal to use 259 to replace 3. If we say G'63 is G259, the problem is partly solved, and the formulas will be<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">G = 4G' + 7<br />
<br />
G' = (G - 7) / 4, where 7 &lt;= G &lt;= 259 and<br />
<br />
<span style="text-decoration: underline;" class="mycode_u">(G - 3) must be divisible by 4.</span></span></div>
<br />
Our only concern now would be getting a 259 output for G when we input G' as 63 in the first equation, as mentioned before. In look for a mathematical representation, there is a solution, but first I have to introduce a pair of arithmetic operators. (Arithmetic operators are symbols marking arithmetic operations, e.g. +, -, * and /.) They are <span style="font-weight: bold;" class="mycode_b">div</span> and <span style="font-weight: bold;" class="mycode_b">mod</span>. They are division-related, while <span style="font-weight: bold;" class="mycode_b">div</span> returns only the dividend (in integer), and <span style="font-weight: bold;" class="mycode_b">mod</span> returns the remainder. For example,<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">15 / 8 = 1.875</span> or <span style="font-weight: bold;" class="mycode_b">1 ... 7<br />
<br />
15 div 8 = 1<br />
<br />
15 mod 8 = 7</span></div>
<br />
In the above example, we can see only real values between 0 and <span style="font-weight: bold;" class="mycode_b">8</span> (include 0, exclude 8) will return for anything <span style="font-weight: bold;" class="mycode_b">mod 8</span>. Back to our case, now <span style="font-weight: bold;" class="mycode_b">259 mod 256 = 3</span>, and anything else on the scale <span style="font-weight: bold;" class="mycode_b">mod 256 =</span> anything else on the scale. So by editing the equation to the following the problem is solved.<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">G = (4G' + 7) mod 256</span></span></div>
<br />
However the inverse form is more tricky. You cannot move the <span style="font-weight: bold;" class="mycode_b">mod</span> operator to the another side, but since it outputs in cycles, we can write another formula which create the same results. Just like <span style="font-weight: bold;" class="mycode_b">sin x = sin (x + 2pi)</span>, we transform the inner function by one cycle into<br />
<br />
<div style="text-align: center;" class="mycode_align">G = 4G' - 249<br />
<br />
G' = (G + 249) / 4</div>
<br />
Because <span style="font-weight: bold;" class="mycode_b">mod</span> works not as our purpose when the inputs go across positive and negative; now I make G' always positive in the equation just above. Our G input here should be a number of the sequence 3, 7, 11, 15, ..., 251, 255, then the G' outputs would be integers from 63 to 126. To transform this range back to 0 to 63 correctly (64 to 0, 65 to 1, ... instead of 63 to 0, 64 to 1, ...), just <span style="font-weight: bold;" class="mycode_b">mod</span> the G' (which equals to [G + 249] / 4; putting "<span style="font-weight: bold;" class="mycode_b">mod</span> 64" to the left side does not work) is fine, so<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">G' = [(G + 249) / 4] mod 64</span></span></div>
<br />
This concludes the first interpretation.<br />
<br />
The another one sounds more complicated; breaking down G' into two parts, into a scale ranged from 0 to 31, and another one only gives 0 or 1, then sum up their results. The principle of this interpretation is to include the <span style="font-style: italic;" class="mycode_i">very first intended RECT mechanics</span>, as my theory in <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 5</span></span>, and separate out <span style="font-style: italic;" class="mycode_i">the later modification</span>. Recall the binary representation of RECT discussed in <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 5</span></span> again to show this new division; the binary RECT is now divided in the way like 00000 00000 0 00000 -- the 6 bits of green is further apart to become a group of 5 bits and 1 separated bit. What special about this system, is if you ignore the isolated bit by assuming it is always "0", the another three groups of 5 bits each, work all the same. All of them are in 32-step scales, from degree 7 to 255 of the RGB scale. Of course, nothing are to be ignored finally; the isolated bit actually represents an addition of a degree 4 of green. When it is 0, nothing happens; when it is 1, G will increase by 4.<br />
<br />
The 6-bit G' system records G' in a range from 0 to 63. Now, its first bit from the right is isolated to a 0-or-1 field, the remaining 5 bits are in a 0-to-31 scale. In terms of numerical value, the new 0-to-31 scale is actually a double of the previous 0-to-63 scale, since moving one binary digit means multiplying by 2. So, in terms of the previous scale, the new scale is listing from 0 to 62, in steps of 2, then all even numbers from 0 to 62 are available. Adding up the 0 or 1 of the remaining bit, odd numbers from 1 to 63 are now also available. Combining the two sequences, all integers from 0 to 63 are present.<br />
<br />
If we notate the transforming equation under this interpretation, it will be<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">G = (8g' + 7 + 4g'') mod 256</span><br />
<br />
4 (2g' + g'') = G - 7<br />
<br />
2g' + g'' = (G - 7) / 4<br />
<br />
<span style="text-decoration: underline;" class="mycode_u">2g' + g'' = [(G + 249) / 4] mod 64<br />
<br />
(G + 1) must be divisible by 4.</span></span></div>
<br />
Where g' and g'' are the depth values in the 0-to-31 and 0-or-1 new green scales respectively. Pay attention to the first equation; I put the variable g'' to the last, is for you to compare this equation with those of red and blue. You see basically only 4g'' is extra. And for the next equation, actually the previous paragraph is concluding <span style="font-weight: bold;" class="mycode_b">2g' + g'' = G'</span>. For the last statement of condition, you see "-" becomes the "+" sign. Actually it could be represented as an equation too,<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">(G + 1) mod 4 = 0</span></span></div>
<br />
When it is "<span style="font-weight: bold;" class="mycode_b">mod</span> 4", now you see it is fine to add or subtract anything in multiples of the divisible-by number. All the other conditions would be<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">(R + 1) mod 8 = 0; (R + 1) must be divisible by 8</span>, under certain conditions.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">(B + 1) mod 8 = 0; (B + 1) must be divisible by 8.</span></span></div>
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: x-large;" class="mycode_size">6.5</span></div>
<span style="text-decoration: underline;" class="mycode_u">6.5 - R'G'B' to RGB</span><br />
<br />
So far, all the separate exchanging formulas are listed, then it is time to transform them as a whole, since both RECT and (hexadecimal) RGB are 1-D systems. First, let's recall how they are made up of R', G', B', R, G and B.<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">RGB = 65536R + 256G + B</span> = R (16^4) + G (16^2) + B<br />
<br />
<span style="text-decoration: underline;" class="mycode_u">RECT = 2048R' + 32G' + B'</span> = R' [2^(6 + 5)] + G' (2^5) + B'</span></div>
<br />
Using all the equations we have made up above, this complicated looking task is very easy. Just substitude and get ...<br />
<br />
<div style="text-align: center;" class="mycode_align">RGB *= 65536 (8R' + 7) + 256 [(4G' + 7) mod 256] + (8B' + 7) ... (1)<br />
<br />
RECT *= [2048 (R - 7) / 8] + 32 {[(G + 249) / 4] mod 64} + (B - 7) / 8 ... (2)</div>
<br />
No, I did not simplify or underline them, because these are not the truth. And also look at this section's subtitle, equation (2) is not our business now. Let's focus on equation (1)... and besides, we still have not explained yet why there are 64 colors on red, but not 32 <span style="font-style: italic;" class="mycode_i">as intended</span>. Remember the reason for adding "<span style="font-weight: bold;" class="mycode_b">mod</span> 256", is because the G output of G' exceeds 255, and we have to limit it into the correct color cycle. But actually, the exceeded amount is just transformed into the next digit; for the digits responsible for green, they works the same. Here we should actually remove the operator, and (1) is now<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">RGB = 65536 (8R' + 7) + 256 (4G' + 7) + (8B' + 7)</span> ... (1a)</div>
<br />
As in <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 3</span></span> discussed, computers get the three base colors by performing division to the RGB code. This equation has deliberately broken down into the wanted three parts; (8R' + 7) is R, etc. We are ready to discuss the phoneme in red. Suppose we have R'0 G'63 B'0 (which is RECT: 2016, tested and shown in the table of <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 5</span></span>), substitute in (1a)<br />
<br />
<span style="font-weight: bold;" class="mycode_b">RGB<br />
= 65536 (7) + 256 (259) + (7)<br />
= [65536 (7) + 256 (256)] + 256 (3) + 7<br />
= 65536 (8) + 256 (3) + 7<br />
=</span> ...<br />
<br />
You see when the green value exceeds the limit, one cycle of green becomes degree one of red. This strange action is the same as we move point-by-point on the linear RGB or RECT system instead of cycle-by-cycle. <span style="font-style: italic;" class="mycode_i">The system itself runs this weirdly, because defining the color cycles into 1-D already strays away from normal concepts. When using, we makes it looks normal by avoiding certain moves, but they look nothing special to computers, since they just perform mathematical calculations. It is humans who define the outputs as colors.</span> Anyways, now we see the extra red degrees are come from color cycle exchanges. The demonstration also shows that the advancement takes place in RGB calculation, but not in RECT, or else the red degree will increase by 8. So R', G' and B' values lie in their own range, not overlapping others, only green with red after transforming into RGB due to the strange representation of G by G' (G'63 is G3).<br />
<br />
Remember the second interpretation of G'-to-G formula? It is to make all R', G' and B' work fine without "advancements", and transfer the responsibility to the isolated bit g''. Equation (1) under this interpretation would be<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">RGB = 65536 (8R' + 7) + 256 (8g' + 7 + 4g'') + (8B' + 7)<br />
<br />
RGB = 65536 (8R' + 7) + 256 (8g' + 7) + 256 (4g'') + (8B' + 7)</span> ... (1b)</div>
<br />
(To recall, <span style="font-weight: bold;" class="mycode_b">G' = 2g' + g''</span>, where g' and g'' are integers ranged 0 to 31 and 0 to 1 respectively.)<br />
<br />
Now, if g' is saturated (g' = 31, 8g' + 7 = 255), g' with a fourth of g'' would be part of R, otherwise it is to be combined with g''. For the same RECT: 2016, the example using (1b) would have an outcome of<br />
<br />
<span style="font-weight: bold;" class="mycode_b">RGB<br />
= 65536 (7) + 256 (255) + 256 (4) + (7)<br />
= 65536 (7) + 256 (255 + 1) + 256 (4 - 1) + 7<br />
= 65536 (8) + 256 (3) + 7<br />
=</span> ...<br />
<br />
I guess now we have explained everything concerning converting R'G'B' to RGB ..., except one, which leads me still do not underline the equations -- <span style="font-weight: bold;" class="mycode_b">mod</span>. What if R and the advancement from G combineded together? Refer to the <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 5</span></span> table, RECT: 65503 is not the upper limit for distinct outputs as YinYin said, but continues shortly until RECT: 65535. R' is 31 but R is 0 since RECT: 65504. In fact -- you should get it yourself by now -- the 0 is just a cycled degree 256, so we need a <span style="font-weight: bold;" class="mycode_b">mod</span> operator for RGB too. The following are modified equations (1a) and (1b), which should be correct.<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">RGB = [(16^4) (8R' + 7) + (16^2) (4G' + 7) + (8B' + 7)] mod (16^6)</span></span> ... (A)<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">RGB = [(16^4) (8R' + 7) + (16^2) (8g' + 7) + (16^2) (4g'') + (8B' + 7)] mod (16^6)</span></span> ... (B)</div>
<br />
We can now simplify them, to be<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">RGB = (524288R' + 1024G' + 8B' + 460551) mod (16^6)<br />
<br />
RGB = (524288R' + 2048g' + 1024g'' + 8B' + 460551) mod (16^6)</span></span></div>
<br />
Finally, here comes to an end, for exchanging the systems in terms of their components. Take a break for the completion of the long <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6</span></span>, and ready for long-awaited two-way formulas.<br />
<br />
<br />
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">7</span></span></div>
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 7 - RECT to RGB and its Inverse</span></span><br />
<br />
The real application of all we have discussed, is to understand what RECT means (RECT to RGB), and learn how to represent colors in RECT (RGB to RECT). Base on the concepts we have gone through, we can now talk about the transforming equations.<br />
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: x-large;" class="mycode_size">7.1</span></div>
<span style="text-decoration: underline;" class="mycode_u">7.1 - RECT to RGB</span><br />
<br />
RECT is not the same as R'G'B', so RECT to RGB differs from R'G'B' to RGB as above discussed. But of course R'G'B' is only derived from RECT, so there must be some transforming methods. We have listed something related to it at the beginning of <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6.5</span></span>, and described it long before, at the last sentence of <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 4</span></span>:<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">RECT = 2048R' + 32G' + B'</span></span> ... (3)</div>
<br />
This is the R'G'B' to RECT formula, while in <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6.5</span></span> ending, we have the R'G'B' to RGB formula; now we ultimately seek the RECT to RGB formula. <span style="font-style: italic;" class="mycode_i">By a principle similar to the Chain Rule of differentiation</span>, RECT to RGB can be obtained by considering RECT to R'G'B' to RGB. The second "to" can be achieved by simple substitutions, while the first "to" requires an inverse formula of R'G'B' to RECT. For R'G'B' to RECT, it is a 3-variable-to-1 formula, so its inverse requires 3 equations, and look like<br />
<br />
<div style="text-align: center;" class="mycode_align">R' = RECT ... ???<br />
<br />
G' = RECT ... ???<br />
<br />
B' = RECT ... ???</div>
<br />
It is not that difficult, we have done similar calculations before. See the ending of <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 3</span></span>, we were decoding RGB into R, G, B separately through division. The process involves dividends and remainders, so using <span style="font-weight: bold;" class="mycode_b">div</span> and <span style="font-weight: bold;" class="mycode_b">mod</span> (for their operations, see <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6.4</span></span>) are exactly the way we are looking for. Now R', G' and B' move in steps of 2048, 32 and 1 unit respectively, so we just have to count how many steps they have taken, and ignore the remainders. Our first draft would be<br />
<br />
<div style="text-align: center;" class="mycode_align">R' *= RECT div 2048<br />
<br />
G' *= RECT div 32<br />
<br />
B' *= RECT</div>
<br />
"<span style="font-weight: bold;" class="mycode_b">div</span> 1" means nothing as RECT must be integer. We can surely say at once that this draft is incorrect, just by considering B'. It should runs in cycles of 32 instead. Remember we successfully represent cycles by using <span style="font-weight: bold;" class="mycode_b">mod</span>, so it is to be applied here too. Therefore,<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">B' = RECT mod 32</span></span></div>
<br />
For G', <span style="font-weight: bold;" class="mycode_b">RECT div 32</span> gives you how many complete steps of 32 units each it has taken. Its cycle is 64 units, so to bound it within the range, we <span style="font-weight: bold;" class="mycode_b">mod</span> the result, leading to<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">G' = RECT div 32 mod 64</span></span></div>
<br />
Both operators have to same level of priority, so the calculation will be done from left to the right, and no brackets are needed. The R' equation is marked incorrect since we can input RECT values over 65535, as shown in the tables of <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 4</span></span> and <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">5</span></span>. To bound it, we need the same operation as in G' and B', which makes it<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">R' = RECT div 2048 mod 32</span> = RECT div 64 div 32 mod 32</span></div>
<br />
Finally, we now obtained the three inverse equations of R'G'B' to RECT. It is time to substitute them into R'G'B' to RGB. For (A) at the ending of <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6.5</span></span>, after substitution it will be<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">RGB = {(16^4) [8 (RECT div 2048 mod 32) + 7] + (16^2) [4 (RECT div 32 mod 64) + 7] + [8 (RECT mod 32) + 7]} mod (16^6)</span></span></div>
<br />
Even with the simplified form, (B), it is still very long.<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">RGB = [524288 (RECT div 2048 mod 32) + 1024 (RECT div 32 mod 64) + 8 (RECT mod 32) + 460551] mod (16^6)</span></span></div>
<br />
You cannot simplify the <span style="font-weight: bold;" class="mycode_b">div</span> and <span style="font-weight: bold;" class="mycode_b">mod</span> operations, or you will alter the equation. They are not simple divisions. This concludes RECT to RGB, which presenting the way computers process our RECT input in background files to RGB code for displaying. It directly exchanges the two system linearly.<br />
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: x-large;" class="mycode_size">7.2</span></div>
<span style="text-decoration: underline;" class="mycode_u">7.2 - RGB to RECT</span><br />
<br />
For RGB to RECT, it is even more complicated, because not all RGB values are permitted. In fact, as RGB is 24-bit and RECT is 16-bit, only one-256th of RGB colors are available on RECT. Therefore, very first we can imagine it is something like every 256 units on the RGB line there is 1 block permitted, and in fact they are not even equally spread "256 units a step". It is really hard to exchange one line to one line backwards as we just did in RECT to RGB, and a bit pointless.<br />
<br />
It is pointless because we usually read R, G, B separately. Even if it uses the linear form, it is still hexadecimal so that we can read the three colors two digits by two digits. We use them separately also. Our formulas are likely to be written in decimal, but no one bothers to transform three color depths into one huge decimal number up to 16 million, before the exchanging process. Actually what worth our discussion is the exchange between RECT and the set of R, G and B. We use only these two system, but not R'G'B' or RGB in decimal. Therefore, we should focus on what we need, and derive formulas in terms of them.<br />
<br />
Up to this moment, we are now separating the terms R, G, B and RGB. "R, G, B" means the three numbers are presented one by one, instead of like RGB a single number under a linear system. While for R'G'B' or "R', G', B'," it does not bother since for sticking up R', G' and B' as a single number, the system is named RECT, so we do not have to differentiate them. In summary,<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>References of Color Notating Systems<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Linear&nbsp;&nbsp; 3-D<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; system&nbsp;&nbsp; system<br />
<br />
RGB-related&nbsp;&nbsp;&nbsp;&nbsp;RGB&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R, G, B<br />
<br />
RECT-related&nbsp;&nbsp; RECT&nbsp;&nbsp;&nbsp;&nbsp; R'G'B'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or R', G', B' occasionally</code></div></div><br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: x-large;" class="mycode_size">7.3</span></div>
<span style="text-decoration: underline;" class="mycode_u">7.3 - R, G, B to RECT</span><br />
<br />
R, G, B to RECT means an equation with one side of RECT output and one side of R, G, B inputs, so it is a 3-variable-to-1 formula, similar to R', G', B' to RECT as (3) in <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 7.1</span></span>.<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">RECT = 2048R' + 32G' + B'</span></span> ... (3)</div>
<br />
Remember we have equation (2) in <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6.5</span></span> left to be discussed:<br />
<br />
<div style="text-align: center;" class="mycode_align">RECT *= [2048 (R - 7) / 8] + 32 {[(G + 249) / 4] mod 64} + (B - 7) / 8 ... (2)</div>
<br />
It is marked incorrect because it is substituted by separate base color cycles, without considering the green-to-red advancement discussed in later parts of that section. How about substituting the form without <span style="font-weight: bold;" class="mycode_b">mod</span> rounding? That is<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">R' = (R - 7) / 8<br />
<br />
G' = (G - 7) / 4<br />
<br />
<span style="text-decoration: underline;" class="mycode_u">B' = (B - 7) / 8</span></span></div>
<br />
Into RECT and becomes<br />
<br />
<div style="text-align: center;" class="mycode_align">RECT = 2048 (R - 7) / 8 + 32 (G - 7) / 4 + (B - 7) / 8<br />
<br />
<span style="font-weight: bold;" class="mycode_b">RECT = 256R + 8G + (B / 8) - 1848.875</span></div>
<br />
It seems that the advancement of green to red is considered since here R will increase if G' is 63, but actually, it is wrong because the conservation in the two systems are not equal. If we notate the green part without rounding the cycle, as above, one cycle of G', means one point of R', not R, will be lost if G' is 63. Then, R', not R, needs to be increased by 1 as a contradict action; now it is only R the scale increased. R is a scale 8 times more detailed than R', so even if R is advanced, R' would only increase by an eighth point. It needs to be a whole point if we need the formula works. On the other side, if we round the cycle by adding <span style="font-weight: bold;" class="mycode_b">mod</span> operations as (2), we need other operations to assume 8 is 7, ..., 0 is 255 in red mathematically. That means<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">R' = (R - 8) / 8</span> when G = 3,<br />
<br />
else <span style="font-weight: bold;" class="mycode_b">R' = (R - 7) / 8</span></div>
<br />
One approach to combine the two equations, assuming only permitted inputs (0, 7, 8, 15, ...) are received, is using <span style="font-weight: bold;" class="mycode_b">trunc( )</span>, a rounding down function. Then<br />
<br />
<div style="text-align: center;" class="mycode_align">R' = trunc[(R - 7) / 8]</div>
<br />
The only problem is we need to assume 0 as 255 too, but if R = 0 here, R' will output 0 (= <span style="font-weight: bold;" class="mycode_b">trunc</span> -0.875). We could use addition by a cycle and <span style="font-weight: bold;" class="mycode_b">mod</span> here again:<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">R' = trunc[(R + 249) / 8] mod 32</span></span></div>
<br />
Which can avoid the process takes place across 0.<br />
<br />
While for G', for <span style="font-weight: bold;" class="mycode_b">mod</span> cycling it should be<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">G' = [(G + 249) / 4] mod 64</span></span></div>
<br />
Therefore, finally<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">RECT = 2048 {trunc[(R + 249) / 8] mod 32} + 32 {[(G + 249) / 4] mod 64} + (B - 7) / 8</span></span></div>
<br />
This looks complex and time-consuming when operated by human. So, if we adjust the special red and green values in advance, we can use the basic equation. The whole R, G, B to RECT process would be<br />
<br />
<div style="text-align: center;" class="mycode_align">If G = 3, conduct<br />
<br />
1) assign G = 259, and<br />
2) subtract R by 1 or assign R = 255 if R = 0 originally.<br />
<br />
Then, apply <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">RECT = 256R + 8G + (B - 7) / 8 - 1848</span></span></div>
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: x-large;" class="mycode_size">7.4</span></div>
<span style="text-decoration: underline;" class="mycode_u">7.4 - RECT to R, G, B</span><br />
<br />
After then, we should talk about the inverse formula again. This is very similar to RECT to RGB, just being broken down into three parts. And this is easy to be obtained since we have discussed RECT to R'G'B' and all those R' to R and alike. They are<br />
<br />
<div style="text-align: center;" class="mycode_align">R *= 8R' + 7; <span style="font-weight: bold;" class="mycode_b">R' = RECT div 2048 mod 32 = RECT div 64 div 32 mod 32<br />
<br />
G = (4G' + 7) mod 256</span>; <span style="font-weight: bold;" class="mycode_b">G' = RECT div 32 mod 64<br />
<br />
B = 8B' + 7</span>; <span style="font-weight: bold;" class="mycode_b">B' = RECT mod 32</span></div>
<br />
The final concern would be the R' to R formula, as R will increase by 1 if G' = 63, reason discussed in <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6.5</span></span>. It has been concluded that the advancement is due to an absence of rounding G by <span style="font-weight: bold;" class="mycode_b">mod</span>. So, we can similarly apply the mechanics into the R' to R formula, i.e.<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">R = 8R' + (4G' + 7) div 256 + 7</span></span></div>
<br />
Then, when and only when G' = 63, <span style="font-weight: bold;" class="mycode_b">(4G' + 7)</span> will reach 256 and thus <span style="font-weight: bold;" class="mycode_b">(4G' + 7) div 256</span> will be 1. Finally, after substitution, the whole set of RECT to R, G, B equations are now derived:<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">R = 8 (RECT div 2048 mod 32) + [4 (RECT div 32 mod 64) + 7] div 256 + 7<br />
<br />
G = [4 (RECT div 32 mod 64) + 7] mod 256<br />
<br />
B = 8 (RECT mod 32) + 7</span></span></div>
<br />
All the two-way formulas are derived, but they seem to spread apart quite much and need summarizing. I will do this later in <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 9</span></span>, but not at once, because ... the calculations are not always true. There are a few preset RECT to RGB sets, which used in the official stage backgrounds. Only after discussing them, I could then show you the whole RECT and R, G, B converting algorithm. But before moving on, we have to tackle one last issue on the calculations.<br />
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: x-large;" class="mycode_size">7.5</span></div>
<span style="text-decoration: underline;" class="mycode_u">7.5 - Handling Negative RECT</span><br />
<br />
Although it is rare, but there might be people who playing tricks -- what if the RECT input is negative? For computers, <span style="font-style: italic;" class="mycode_i">usually they handle the negative values by Two's Compliment</span>, that is moving the whole set of negative to above the positive numbers. For example in a 16-bit Two's Compliment, -32,768 to -1 will be represented by binary numbers from 1000 0000 0000 0000 to 1111 1111 1111 1111, which is primarily 32,768 to 65,535 in decimal. It is possible since digital numbers must have a range, here it is -32,768 to 32,767, therefore it is not a problem to input negative values into RECT for the computer, it just read the number in the designed range. But in mathematics, both positive and negative signs tend to infinity, there is no representation to transfer a negative number to be a certain positive number within the range.<br />
<br />
The only method to handle negative inputs with our formulas is to write a conditional statement which makes use of infinity. This should be done:<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">If RECT &lt; 0, repeat adding 65536 to RECT, until RECT &gt;= 0.</span></span></div>
<br />
After this final issue regarding the formulas is settled, we can finally close the file, and move on the RECT-R, G, B conversion which have nothing do with the formulas. Sounds horrifying.<br />
<br />
<br />
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">8</span></span></div>
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 8 - Exceptional Cases</span></span><br />
<br />
It is mentioned at the very beginning of this entire article, the official maps that used RECT codes. It is mentioned for showing how common, useful or important to learn and use RECT, but actually only a small portion of these background's RECT follow all the formulas we have discussed! Obtained in LF2 ver 2.0a, At the first time I found this out, I thought I was screwed for experimenting:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>rect&nbsp;&nbsp;R&nbsp;&nbsp; G&nbsp;&nbsp; B&nbsp;&nbsp; bg&nbsp;&nbsp;Exceptional<br />
----- --- --- --- --- ---</code></div></div><div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>4705&nbsp;&nbsp;23&nbsp;&nbsp;83&nbsp;&nbsp;15<br />
4706&nbsp;&nbsp;16&nbsp;&nbsp;79&nbsp;&nbsp;16&nbsp;&nbsp;lf&nbsp;&nbsp;Yes<br />
4707&nbsp;&nbsp;23&nbsp;&nbsp;83&nbsp;&nbsp;31<br />
...<br />
16834 71&nbsp;&nbsp;63&nbsp;&nbsp;23<br />
16835 66&nbsp;&nbsp;56&nbsp;&nbsp;24&nbsp;&nbsp;qi&nbsp;&nbsp;Yes<br />
16836 71&nbsp;&nbsp;63&nbsp;&nbsp;39<br />
...<br />
21095 87&nbsp;&nbsp;83&nbsp;&nbsp;63<br />
21096 90&nbsp;&nbsp;78&nbsp;&nbsp;75&nbsp;&nbsp;sp&nbsp;&nbsp;Yes<br />
21097 87&nbsp;&nbsp;83&nbsp;&nbsp;79<br />
...<br />
25356 103 103 103 hkc<br />
...<br />
29582 119 119 119 hkc<br />
...<br />
34815 136 3&nbsp;&nbsp; 255<br />
34816 143 7&nbsp;&nbsp; 7&nbsp;&nbsp; ft<br />
34817 143 7&nbsp;&nbsp; 15<br />
...<br />
37769 151 119 79<br />
37770 154 110 90&nbsp;&nbsp;gw&nbsp;&nbsp;Yes<br />
37771 151 119 95<br />
...<br />
40179 159 163 159 hkc</code></div></div><br />
These cases are not common, but definitely worth notifying. Those marked "Yes" in the last column are values do not obey the exchange formulas, while the "bg" column specifies which background these RECT values are used in. There are four special values, RECT: 4706, 16835, 21096 and 37770. <span style="font-style: italic;" class="mycode_i">It is believed that there is a process, prior to the general exchange formulas, that check whether the RECT is one of the special values -- if yes, output the corresponding special RGB codes -- instead of hidden instructions exist in the official backgrounds.</span> The evidence is that, the output is still irregular even if we use one of these RECT values in custom backgrounds. All the RECT adjacent to the special values are normal.<br />
<br />
The RECT codes remained the same throughout LF2 ver 1.9 to 2.0, however, in versions since 1.9c only 32-bit color is expected, while in versions 1.9 and before only so for 16-bit color. The RECT to RGB process back in ver 1.9 is different, and has different outputs:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>--- ----- 16-bit mode 32-bit mode -- -- --<br />
bg&nbsp;&nbsp;rect&nbsp;&nbsp;R&nbsp;&nbsp; G&nbsp;&nbsp; B&nbsp;&nbsp; R&nbsp;&nbsp; G&nbsp;&nbsp; B&nbsp;&nbsp; R' G' B'<br />
--- ----- --- --- --- --- --- --- -- -- --<br />
lf&nbsp;&nbsp;4706&nbsp;&nbsp;16&nbsp;&nbsp;77&nbsp;&nbsp;16&nbsp;&nbsp;0&nbsp;&nbsp; 18&nbsp;&nbsp;98&nbsp;&nbsp;2&nbsp;&nbsp;19 2<br />
sp&nbsp;&nbsp;21096 82&nbsp;&nbsp;77&nbsp;&nbsp;66&nbsp;&nbsp;0&nbsp;&nbsp; 82&nbsp;&nbsp;104 10 19 8<br />
gw&nbsp;&nbsp;37770 148 113 82&nbsp;&nbsp;0&nbsp;&nbsp; 147 138 18 28 10<br />
qi&nbsp;&nbsp;16835 66&nbsp;&nbsp;56&nbsp;&nbsp;24&nbsp;&nbsp;0&nbsp;&nbsp; 65&nbsp;&nbsp;195 8&nbsp;&nbsp;14 3<br />
ft&nbsp;&nbsp;34816 140 0&nbsp;&nbsp; 0&nbsp;&nbsp; 0&nbsp;&nbsp; 136 0&nbsp;&nbsp; 17 0&nbsp;&nbsp;0<br />
hkc 40179 156 158 156 0&nbsp;&nbsp; 156 243 19 39 19</code></div></div><br />
Shortly regarding the 32-bit mode -- running LF2 ver 1.9 in 32-bit color -- now you see why there were greenish and bluish areas in the old version backgrounds. Try putting R, G, B into the to-RGB formula (first formula in <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6.5</span></span>). For the normal range of RECT of 0 to 65535, red depth here will never change from 0.<br />
<br />
Out of those in the 16-bit mode columns, Queen's Island has the perfect color match between the graphics and RECT-coded area, while Stanley Prison and The Great Wall match poorly; Forbidden Tower does not care since there is no need of matching. Compare the two tables in this section, we see the RGB values of the RECT-coded area of Queen's Island in the two versions are exactly the same, while in the poorly matched backgrounds there are nearly 20 points of difference in total, for each of them. <span style="font-style: italic;" class="mycode_i">None of the background .dat or .bmp files were edited</span>, but the color matching was fixed. <span style="font-style: italic;" class="mycode_i">It maybe the easiest and most perfect method to match colors by adding special conditions into the compiling process from RECT to RGB.</span> Now we see the RECT-coded areas match very well to the graphics in 32-bit versions, thanks to this edition. Remember there is strict limit of color availability under normal RECT to RGB formula, and all the four "perfect matching" colors are not available there. For the background does not require color matching, Forbidden Tower, there is no special color adjustment set for it as its RGB output follows the formula.<br />
<br />
In summary, RECT-coded colors in four of the official backgrounds are optimized to match other graphics by modifying their RGB output, <span style="font-style: italic;" class="mycode_i">instead of re-coding the whole RECT to RGB mechanism and editing the background files</span>. This could explain why there are a few RGB outputs are out-of-pattern. This leads to a special use of the four RECT values, and at the same time the shift of the four sets of permitted RGB: R16 G79 B16, R66 G56 B24, R90 G78 B75 and R154 G110 B90 are made available and can be directly link to the special RECT values; R23 G83 B23, R71 G63 B31, R87 G83 B71 and R151 G119 B87 are made unavailable dispute the other availability conditions.<br />
<br />
<br />
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">9</span></span></div>
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 9 - Mechanical Summary and Applications</span></span><br />
<br />
Every detailed cases regarding exchanging RECT and RGB have been mentioned so far. They should cover all the conditions we will face while exchanging the two systems. A lot of terms and converting formulas has been discussed and developed throughout this article, one by one about how they are derived. This section will summarize them by going through all the results once in an organized way, for an easier understanding of their usage.<br />
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: x-large;" class="mycode_size">9.1</span></div>
<span style="text-decoration: underline;" class="mycode_u">9.1 - Overview of Formulas</span><br />
<br />
First let's see what important component and final formulas we have derived. There are several categories based on both sides of the exchanging systems. The four systems we have made use of are (1) <span style="font-weight: bold;" class="mycode_b">R, G, B</span>, (2) <span style="font-weight: bold;" class="mycode_b">RGB</span>, (3) <span style="font-weight: bold;" class="mycode_b">R'G'B'</span>, and (4) <span style="font-weight: bold;" class="mycode_b">RECT</span>.<br />
<br />
- - Rules and system exchanges - -<ul class="mycode_list"><li>R, G, B to RGB (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 3, 6.5</span></span>)<ul class="mycode_list"><li>RGB = 65536R + 256G + B<br />
</li>
<li>Condition: 0 &lt;= (R or G or B) &lt; 256</li>
</ul>
</li>
</ul>
<ul class="mycode_list"><li>R'G'B' and replacement (defined in <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 4, 6.4</span></span>)<ul class="mycode_list"><li>Condition: R', G', B', g' and g'' are integers.<br />
</li>
<li>Condition: 0 &lt;= (R' or g' or B') &lt; 32<br />
</li>
<li>Condition: 0 &lt;= G' &lt; 64<br />
</li>
<li>Condition: 0 &lt;= g'' &lt; 2<br />
</li>
<li>Component: G' = 2g' + g''</li>
</ul>
</li>
</ul>
<ul class="mycode_list"><li>R'G'B' to RECT (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 4, 6.4, 6.5</span></span>)<ul class="mycode_list"><li>RECT = 2048R' + 32G' + B'<br />
</li>
<li>RECT = 2048R' + 64g' + 32g'' + B'</li>
</ul>
</li>
</ul>
<ul class="mycode_list"><li>RECT to R'G'B' (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 7.1</span></span>)<ul class="mycode_list"><li>R' = RECT div 2048 mod 32<br />
</li>
<li>G' = RECT div 32 mod 64<br />
</li>
<li>B' = RECT mod 32</li>
</ul>
</li>
</ul>
<ul class="mycode_list"><li>R'G'B' to R, G, B<ul class="mycode_list"><li>R = 8R' + (4G' + 7) div 256 + 7 (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6.3, 7.4</span></span>)<br />
</li>
<li>G = (4G' + 7) mod 256 (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6.4</span></span>)<br />
</li>
<li>B = 8B' + 7 (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6.2</span></span>)</li>
</ul>
</li>
</ul>
<ul class="mycode_list"><li>R, G, B available in RECT<ul class="mycode_list"><li>Condition: (R, G, B) are one of the four sets, which can be linked to RECT output directly: (16, 79, 16), (66, 56, 24), (90, 78, 75) or (154, 110, 90). (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 8</span></span>)<br />
</li>
<li>Condition: (R, G, B) are not either one of the four sets: (23, 83, 23), (71, 63, 31), (87, 83, 71) or (151, 119, 87). (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 8</span></span>)<br />
</li>
<li>Condition: When G &lt;&gt; 3, (R + 1) must be divisible by 8. (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6.3</span></span>)<br />
</li>
<li>Condition: When G = 3, R must be divisible by 8. (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 7.3</span></span>)<br />
</li>
<li>Condition: (G + 1) must be divisible by 4. (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6.4</span></span>)<br />
</li>
<li>Condition: (B + 1) must be divisible by 8. (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6.2, 6.4</span></span>)<br />
</li>
<li>(If the first condition is met, the remaining are to be ignored; otherwise, check the remaining, and if either one of them is not met, the input will be rejected.)</li>
</ul>
</li>
</ul>
<ul class="mycode_list"><li>R, G, B to R'G'B'<ul class="mycode_list"><li>R' = trunc[(R + 249) / 8] mod 32 (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6.3, 7.3</span></span>)<br />
</li>
<li>G' = [(G + 249) / 4] mod 64 (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6.4</span></span>)<br />
</li>
<li>B' = (B - 7) / 8 (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6.2</span></span>)</li>
</ul>
</li>
</ul>
<ul class="mycode_list"><li>RECT to R, G, B (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 7.4</span></span>)<ul class="mycode_list"><li>R = 8 (RECT div 2048 mod 32) + [4 (RECT div 32 mod 64) + 7] div 256 + 7<br />
</li>
<li>G = [4 (RECT div 32 mod 64) + 7] mod 256<br />
</li>
<li>B = 8 (RECT mod 32) + 7</li>
</ul>
</li>
</ul>
<ul class="mycode_list"><li>R, G, B to RECT (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 7.3</span></span>)<ul class="mycode_list"><li>For all cases: RECT = 2048 {trunc[(R + 249) / 8] mod 32} + 32 {[(G + 249) / 4] mod 64} + (B - 7) / 8<br />
</li>
<li>When G &lt;&gt; 3: RECT = 256R + 8G + (B - 7) / 8 - 1848</li>
</ul>
</li>
</ul>
<ul class="mycode_list"><li>Negative RECT to positive (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 7.5</span></span>)<ul class="mycode_list"><li>If RECT &lt; 0, repeat adding 65536 to RECT, until RECT &gt;= 0.</li>
</ul>
</li>
</ul>
<ul class="mycode_list"><li>Special RECT values (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 8</span></span>), assignments prior to all equations<ul class="mycode_list"><li>When RECT div 65536 = 4706, (R, G, B) = (16, 79, 16). When reversed, RECT = 4706.<br />
</li>
<li>When RECT div 65536 = 16835, (R, G, B) = (66, 56, 24). When reversed, RECT = 16835.<br />
</li>
<li>When RECT div 65536 = 21096, (R, G, B) = (90, 78, 75). When reversed, RECT = 21096.<br />
</li>
<li>When RECT div 65536 = 37770, (R, G, B) = (154, 110, 90). When reversed, RECT = 37770.</li>
</ul>
</li>
</ul>
<div style="text-align: right;" class="mycode_align"><span style="font-size: x-large;" class="mycode_size">9.2</span></div>
<span style="text-decoration: underline;" class="mycode_u">9.2 - The Exchange Cycle</span><br />
<br />
We have to spot on the final formulas out of these and make use of them. For the frame of the sequence of using the formulas, remember our purpose here, is "to understand what RECT means (RECT to RGB), and learn how to represent colors in RECT (RGB to RECT)" (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 7</span></span>). As we are not the original developers of LF2, everything of it were existed before our exploration. Therefore, we start from interpreting them, RECT to RGB, and be able to convert them back, RGB to RECT; the linked ends form the Exchange Cycle. Let's take a deeper look to this draft.<br />
<br />
As discussed in <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 7.2</span></span>, "RGB" is actually "R, G, B" since we do not use them as computers do -- a reminder. Breaking down the process from RECT to RGB; it would look like<br />
<br />
<blockquote class="mycode_quote"><cite>Exchange Cycle Algorithm ... Wrote:</cite><span style="font-weight: bold;" class="mycode_b">Read RECT</span> -&gt; Break to R'G'B' -&gt; Convert R'G'B' to R, G, B individually -&gt; <span style="font-weight: bold;" class="mycode_b">Get R, G, B</span></blockquote><br />
Under the standard calculations. However, we missed some the special cases which need to be checked beforehand: (1) the negative and (2) the four special RECT values. (1) should be prior to (2) since the conditions of (2) do not cover across zero. The whole flow is now drafted as<br />
<br />
<blockquote class="mycode_quote"><cite>Exchange Cycle Algorithm ... Wrote:</cite><span style="font-weight: bold;" class="mycode_b">Read RECT</span> -&gt; Put it back to positive (if needed) -&gt; Check if: It is one of the four special values<br />
<br />
If: It is -&gt; Check what RGB it refers to -&gt;<br />
If: It is not -&gt; Break RECT to R'G'B' -&gt; Convert R'G'B' to R, G, B individually -&gt;<br />
<br />
-&gt; <span style="font-weight: bold;" class="mycode_b">Get R, G, B</span></blockquote><br />
This is a more detailed version. Actually we can make use of some final equations to simplify it and get "<span style="font-weight: bold;" class="mycode_b">Read RECT</span> -&gt; Convert to R, G, B -&gt; <span style="font-weight: bold;" class="mycode_b">Get R, G, B</span>" by using RECT to R, G, B formulas (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 7.4</span></span>).<br />
<br />
The another half of the cycle is converting some RGB we want to RECT, which should be probably more useful. Let's discuss the steps one by one. Starting off on RGB, we first need to check if it is permitted. This can be done by applying the condition checks listed in "R, G, B available in RECT" of <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 9.1</span></span>. The first condition is special for handling the optimized colors (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 8</span></span>); if it is met, RECT result is got. For the remaining, the order of applying them does not bother much, since if either one of them does not satisfied, the whole RGB set will be rejected. The draft for this would be<br />
<br />
<blockquote class="mycode_quote"><cite>Exchange Cycle Algorithm ... Wrote:</cite><span style="font-weight: bold;" class="mycode_b">Input and read R, G, B</span> -&gt; Check if: (R, G, B) is one of the four sets: (16, 79, 16), (66, 56, 24), (90, 78, 75) or (154, 110, 90)<br />
<br />
If: It is one of them -&gt; Check what RECT it refers to -&gt;<br />
If: It is not -&gt; Check if: G &lt;&gt; 3<br />
<br />
If: It is (G &lt;&gt; 3) -&gt; Check if: (G + 1) is divisible by 4<br />
--- If: It is not -&gt; Reject the input<br />
--- If: It is divisible -&gt; Check if: (R + 1) is divisible by 8 --(Move on)--&gt;<br />
If: It is not (G = 3) -&gt; Check if: R is divisible by 8 --(Move on)--&gt;<br />
<br />
If: It is not -&gt; Reject the input<br />
If: It is divisible -&gt; Check if: (B + 1) is divisible by 8<br />
<br />
If: It is not -&gt; Reject the input<br />
If: It is divisible -&gt; Check if: (R, G, B) is one of the four sets: (23, 83, 23), (71, 63, 31), (87, 83, 71) or (151, 119, 87)<br />
<br />
If: It is one of them -&gt; Reject the input<br />
If: It is not -&gt; (Calculate R, G, B to RECT) -&gt;<br />
<br />
-&gt; <span style="font-weight: bold;" class="mycode_b">Get RECT</span></blockquote><br />
Looks complicated in text. Besides this, we can complete the cycle after filling up the calculation process. Similar to RECT to RGB, there are two algorithms, one with one step more, for being exchanging to R'G'B', finally then to RECT, instead of directly to RECT. The longer algorithm here is<br />
<br />
<blockquote class="mycode_quote"><cite>Exchange Cycle Algorithm ... Wrote:</cite>(If: The color is permitted) -&gt; Convert R, G, B to R'G'B' individually -&gt; Combine R'G'B' into RECT -&gt; <span style="font-weight: bold;" class="mycode_b">Get RECT</span></blockquote><br />
For the shorter algorithm, this time it is not that simple since there are two alternatives. It can be that simple if we take the general formula, but it is a bit complex for manual calculations and there is replacement for most cases, so an alternative is developed.<br />
<br />
<blockquote class="mycode_quote"><cite>Alternative 1: Exchange Cycle Algorithm ... Wrote:</cite>(If: The color is permitted) -&gt; Apply the general R, G, B to RECT formula -&gt; <span style="font-weight: bold;" class="mycode_b">Get RECT</span></blockquote><blockquote class="mycode_quote"><cite>Alternative 2: Exchange Cycle Algorithm ... Wrote:</cite>(If: The color is permitted) -&gt; Check if: G = 3<br />
<br />
If: Yes -&gt; Assign G = 259 -&gt; Check if: R = 0<br />
--- If: Yes -&gt; Assign R = 255 -&gt;<br />
--- If: No -&gt; Subtract R by 1 -&gt;<br />
If: No -&gt;<br />
<br />
-&gt; Apply the R, G, B to RECT formula for G &lt;&gt; 3 -&gt; <span style="font-weight: bold;" class="mycode_b">Get RECT</span></blockquote><br />
The cycle is now completed, in text or algorithms or pseudo-codes or whatever. It is quite hard to read and confuses us, maybe a graphical representation would be better. Here I present the only picture of this article:<br />
<br />
<div style="text-align: center;" class="mycode_align"><a href="http://s713.photobucket.com/user/deep19752/media/IMG_0003.jpg.html?sort=3&amp;o=0" target="_blank" rel="noopener" class="mycode_url"><img src="http://i713.photobucket.com/albums/ww138/deep19752/IMG_0003.jpg" alt="[Image: IMG_0003.jpg]" class="mycode_img" /></a><br />
(click for zoom in options)</div>
<br />
It is presented in a flowchart. Basically, rounded rectangles represent starting and ending points, parallelograms represent processes, and rhombuses represent conditional checks. Cases are one type of conditional check with multiple possibility, while normal checks only have "yes" or "no" -- "TRUE" or "FALSE" results. The "←" sign represents assignments, a process mentioned in <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 7.3</span></span>, which set the value of the left-hand-side variable to the result of the right-hand-side. The symbol "=" with a "←" above means the same as "←" assignment, just to retain the equal sign since we have used it in all our equations discussed. By following this flowchart properly, you should be able to perform the necessary calculations.<br />
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: x-large;" class="mycode_size">9.3</span></div>
<span style="text-decoration: underline;" class="mycode_u">9.3 - Formulas for Secondary Base Colors</span><br />
<br />
At least, I have heard people asking for RECT values for perfect grey. From this, I also think about deriving perfect secondary base colors such as yellow (red + green), aqua (green + blue) and purple (red + blue). It is not complicated, only to assume two colors have the same depth, and one is always zero; or all colors have the same for grey. The only trick is to use g' instead of G'. Recall the R'g'B' to RECT formula,<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">RECT = 2048R' + 64g' + 32g'' + B'</span></div>
<br />
For yellow, let it be Y', and Y' = R' = g', g'' = B' = 0. Formula:<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">RECT = 2112Y'</span></span></div>
<br />
For aqua, let it be A', and A' = g' = B', R' = g'' = 0. Formula:<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">RECT = 65A'</span></span></div>
<br />
For purple, let it be P', and P' = R' = B', g' = g'' = 0. Formula:<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">RECT = 2049P'</span></span></div>
<br />
For grey, let it be Gr', and Gr' = R' = g' = B', g'' = 0. Formula:<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">RECT = 2113Gr'</span></span></div>
<br />
Y', A', P' and Gr' are all integers in a scale ranged 0 to 31, as R', G' and B' do. Regarding the Y' to Y (in RGB scale), A' to A, etc. formulas, they are the same as the B' to B formula (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6.2</span></span>),<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">B = 8B' + 7</span></span></div>
<br />
With only a replacement of variable names.<br />
<br />
<br />
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">10</span></span></div>
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Summary</span></span><br />
<br />
This short passage summarizes our discussion so far.<br />
<br />
RECT is a color code used in LF2 background files, uses integers ranged 0 to 65535 to represent three base colors linearly. The base colors are red, green and blue; there are 32, 64 and 32 distinct depths respectively available in RECT representation (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 4</span></span>). Representing colors linearly means combining the three variables into one, works like hexadecimal RGB (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 3</span></span>) or LF2 stage id: (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 2</span></span>). Component variables are stored in cycles. By performing division on RECT and consider the dividends and remainders, cycles and individual color depths can be "decrypted". By converting RECT into binary is also a possible method since the component ranges are in powers of 2 (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 5</span></span>). Due to the 32- and 64-depths sets nature, real RGB values jumps in 8 or in 4 as RECT changes (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6</span></span>). <span style="font-style: italic;" class="mycode_i">Because of a need of pure white and system optimization in developing RECT codes</span>, (R, G, B) starts from (7, 7, 7) as RECT starts from 0, and green ends a cycle at 3 in RGB scale weirdly as the green component of RECT reachs its peak (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6.1</span></span>).<br />
<br />
For the RECT and RGB exchanging formulas, they are discussed step by step. First from a derived system of R'G'B', from RECT (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 5</span></span>), lead to possibly discuss R' and R, G' and G, and B' and B exchanges (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6</span></span>), then re-combined for exchanging RECT and R, G, B (Part 7), finally some special preset RECT to RGB linkages (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 8</span></span>). During these parts we gradually translate texts and ideas into mathematical equations, and repeatedly fixing them by considering wider possibilities of inputs. Towards the end, we are focusing on the systems RECT, and R, G, B separately as they are the two we data changers would use. To summarize all the mathematical discussions, all rules and formulas are listed (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 9.1</span></span>) and the Exchange Cycle has been drawn for the following of manually exchanging the two system (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 9.2</span></span>). Last but not least, at the very last part some other basic colors are also considered into deriving to-RECT formulas: perfect yellow, aqua, purple and grey (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 9.3</span></span>).<br />
<br />
With completing the entire discussion, we now can understand how RECT works and is recorded, then make use of our understanding of the whole process to create our own backgrounds, or fix others'. However, due to the limitation of RECT, and digital storage is decreasingly being an issue nowadays, it is not a serious problem to use .bmp to replace the RECT-coded areas. Still, understanding one of the long-recognized more advanced coding systems in LF2 data changing in such extent, could be a nice satisfaction.]]></description>
			<content:encoded><![CDATA[<span style="font-style: italic;" class="mycode_i">The tag "rect" is very useful in background files, because using them does not require a graphic file, thus saving space, and we often need areas with a single color. In the original LF2, stage (1-5) backgrounds and HK Coliseum have used RECT. However, it is a little bit more advanced to understand what every RECT codes the color they represent. For those who tried to perform experiments on it, it may be found that the actual color "jumps here and there" in the RGB cube as RECT value changes, leaving no interrelationship seems to be found.<br />
<br />
This "tutorial" explains the mechanism behind RECT codes in background files, as well as providing two-way formulas exchanging RECT codes and permitted RGB codes.<br />
<br />
For quick reference, you may want to read the <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Summary</span></span>. You can easily see this is one of the longest article in this forum, but if you have some spare time, it is recommended to start from <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 1</span></span> or <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">2</span></span> at least, which describe the mechanics more detailed so you will have a concept of how the formulas work.</span><br />
<br />
From here on, <span style="font-style: italic;" class="mycode_i">italics</span> will be representing my hypothesis and some points I am not completely sure, but generally I think they do make sense, or else I won't even keep them here. Just to notify.<br />
<br />
<br />
<br />
~~~ <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Table of Contents</span></span> ~~~<br />
<ul class="mycode_list"><li>Part 0 - Preface</li>
</ul>
<ul class="mycode_list"><li>Part 1 - RGB</li>
</ul>
<ul class="mycode_list"><li>Part 2 - The 1-Dimensional Notation</li>
</ul>
<ul class="mycode_list"><li>Part 3 - Linear Color Codes</li>
</ul>
<ul class="mycode_list"><li>Part 4 - Examining RECT Basics</li>
</ul>
<ul class="mycode_list"><li>Part 5 - Secrets Disclosed in Binary RECT</li>
</ul>
<ul class="mycode_list"><li>Part 6 - The Jackpot and R'G'B' to RGB<ul class="mycode_list"><li>6.1 - 777 Jackpot<br />
</li>
<li>6.2 - B' and B Exchange<br />
</li>
<li>6.3 - R' and R Exchange<br />
</li>
<li>6.4 - G' and G Exchange<br />
</li>
<li>6.5 - R'G'B' to RGB</li>
</ul>
</li>
</ul>
<ul class="mycode_list"><li>Part 7 - RECT to RGB and its Inverse<ul class="mycode_list"><li>7.1 - RECT to RGB<br />
</li>
<li>7.2 - RGB to RECT<br />
</li>
<li>7.3 - R, G, B to RECT<br />
</li>
<li>7.4 - RECT to R, G, B<br />
</li>
<li>7.5 - Handling Negative RECT</li>
</ul>
</li>
</ul>
<ul class="mycode_list"><li>Part 8 - Exceptional Cases</li>
</ul>
<ul class="mycode_list"><li>Part 9 - Mechanical Summary and Applications<ul class="mycode_list"><li>9.1 - Overview of Formulas<br />
</li>
<li>9.2 - The Exchange Cycle<br />
</li>
<li>9.3 - Formulas for Secondary Base Colors</li>
</ul>
</li>
</ul>
<ul class="mycode_list"><li>Summary</li>
</ul>
<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 0 - Preface</span></span><br />
<br />
Spending a short while saying why I write this: I was too searching what a certain RECT represents a RGB, or more ideally the interchange formulas so that I can type in the color I want. I have found YinYin had wrote something about it, I guess a long while ago. The link to his "extremely professional explanation", provided by Marshall, is dead, so I was not certain what its content is. The passage by YinYin can be found now so far is <a href="http://www.lf-empire.de/forum/showthread.php?pid=1872#pid1872" target="_blank" rel="noopener" class="mycode_url">this (click)</a>. Maybe this is actually that explanation, but I just can't make sure. Anyway for this explanation, compared to the theory now I have made up below, contains some errors. I know he had wrote a program for us to get RECT codes by selecting a color, but I could not install it, so I was looking for a manual translation. I could not completely understand RECT just after reading his explanation, until I had done further experiments. However, it surely clarify the biggest concept of the RECT mechanism (see <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 2</span></span>), so I could test samples on the correct way very soon. Now this tutorial will fix the remaining minor errors in YinYin's explanation, and show you the system as detail as I can.<br />
<br />
<br />
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">1</span></span></div>
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 1 - RGB</span></span><br />
<br />
For some catch-up I explain also the RGB codes. If you think it is fine you may skip this.<br />
<br />
"RGB" stands for simply Red-Green-Blue, a code system representing digital color by notating the three basic optical colors red, green and blue, which could mix together to other colors. RGB codes are usually represented by a set of three decimal (base-10) numbers or a single number made up by three groups of hexadecimal (base-16) numbers. Today's computer systems and applications generally support a word size of 32 bits; when applied to RGB codes, these 32 bits will be divided into 4 parts: 3 parts of 8 bits each for the 3 colors, and the remaining part is for alpha (transparency; just put this aside since LF2 and *.bmp files do not support alpha scales). One bit means a binary (base-2) digit which stores either 0 or 1 only, i.e. 2 possible values, then 8 bits combined will be 2^8 = 256 combinations. Three colors of 256 combinations each will be 2^24 = 256^3 = 16,777,216 distinct colors.<br />
<br />
Here comes to the end of this part. There will be some further RGB-related contents later.<br />
<br />
<br />
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">2</span></span></div>
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 2 - The 1-Dimensional Notation</span></span><br />
<br />
This is all about combining arrays with multiple dimensions into linear arrays, or more than one variable into one. RECT works in this way too; but before mentioning RECT, I first provide you several examples of what this term is about, so after this step-by-step bridging, you will understand RECT exactly when we approach there. I assume you have some basic Data Changing knowledge when reading this, so you should have no problem understanding the terms in the following examples.<br />
<br />
Let's repeat. This is a technique when we need to combine arrays more than one dimension, into one. A simple example would be stage/id:. Excluding the latest Survival Stage, we know that id: 0 is Stage 1-1, up to id: 9 is Stage 1-10, then id: 10 is Stage 2-1 ... , all until id: 49 which is Stage 5-10. Now pay attention. (1) Stage X-Y contains two variables which store integers, where 1 &lt;= X &lt;= 5 and 1 &lt;= Y &lt;= 10; but (2) id: only recognize one integer variable ranged 0 to 49 inclusive, instead of something like catchingact: which recognize two variables. For normal players (1) makes sense to them, and imagine LF2 reads your stage selection input after confirming fighters the first time into variable X, then Y starts from 1 at any conditions, later Y is assigned to be (Y + 1) if an act is completed, and so on. However, we data changers know that stage.dat actually only list the stage acts with one id:, which is case (2). The stage selection in the game interface actually reads and translate the id: into 0, 10, 20, 30, 40 for Stages 1 to 5 or 50 for Survival. Translation between the 2-D imaginary system and the 1-D actual system would be like<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>Two-Dimensional Array [1..5, 1..10]<br />
<br />
[1, 1]&nbsp;&nbsp;[1, 2]&nbsp;&nbsp;[1, 3]&nbsp;&nbsp;[1, 4]&nbsp;&nbsp;[1, 5]&nbsp;&nbsp;[1, 6]&nbsp;&nbsp;[1, 7]&nbsp;&nbsp;[1, 8]&nbsp;&nbsp;[1, 9]&nbsp;&nbsp;[1, 10]<br />
<br />
[2, 1]&nbsp;&nbsp;[2, 2]&nbsp;&nbsp;[2, 3]&nbsp;&nbsp;[2, 4]&nbsp;&nbsp;[2, 5]&nbsp;&nbsp;[2, 6]&nbsp;&nbsp;[2, 7]&nbsp;&nbsp;[2, 8]&nbsp;&nbsp;[2, 9]&nbsp;&nbsp;[2, 10]<br />
<br />
[3, 1]&nbsp;&nbsp;[3, 2]&nbsp;&nbsp;[3, 3]&nbsp;&nbsp;[3, 4]&nbsp;&nbsp;[3, 5]&nbsp;&nbsp;[3, 6]&nbsp;&nbsp;[3, 7]&nbsp;&nbsp;[3, 8]&nbsp;&nbsp;[3, 9]&nbsp;&nbsp;[3, 10]<br />
<br />
[4, 1]&nbsp;&nbsp;[4, 2]&nbsp;&nbsp;[4, 3]&nbsp;&nbsp;[4, 4]&nbsp;&nbsp;[4, 5]&nbsp;&nbsp;[4, 6]&nbsp;&nbsp;[4, 7]&nbsp;&nbsp;[4, 8]&nbsp;&nbsp;[4, 9]&nbsp;&nbsp;[4, 10]<br />
<br />
[5, 1]&nbsp;&nbsp;[5, 2]&nbsp;&nbsp;[5, 3]&nbsp;&nbsp;[5, 4]&nbsp;&nbsp;[5, 5]&nbsp;&nbsp;[5, 6]&nbsp;&nbsp;[5, 7]&nbsp;&nbsp;[5, 8]&nbsp;&nbsp;[5, 9]&nbsp;&nbsp;[5, 10]</code></div></div><div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>One-Dimensional Array [0..49]<br />
<br />
[0]&nbsp;&nbsp; [1]&nbsp;&nbsp; [2]&nbsp;&nbsp; [3]&nbsp;&nbsp; [4]&nbsp;&nbsp; [5]&nbsp;&nbsp; [6]&nbsp;&nbsp; [7]&nbsp;&nbsp; [8]&nbsp;&nbsp; [9]<br />
<br />
[10]&nbsp;&nbsp;[11]&nbsp;&nbsp;[12]&nbsp;&nbsp;[13]&nbsp;&nbsp;[14]&nbsp;&nbsp;[15]&nbsp;&nbsp;[16]&nbsp;&nbsp;[17]&nbsp;&nbsp;[18]&nbsp;&nbsp;[19]<br />
<br />
[20]&nbsp;&nbsp;[21]&nbsp;&nbsp;[22]&nbsp;&nbsp;[23]&nbsp;&nbsp;[24]&nbsp;&nbsp;[25]&nbsp;&nbsp;[26]&nbsp;&nbsp;[27]&nbsp;&nbsp;[28]&nbsp;&nbsp;[29]<br />
<br />
[30]&nbsp;&nbsp;[31]&nbsp;&nbsp;[32]&nbsp;&nbsp;[33]&nbsp;&nbsp;[34]&nbsp;&nbsp;[35]&nbsp;&nbsp;[36]&nbsp;&nbsp;[37]&nbsp;&nbsp;[38]&nbsp;&nbsp;[39]<br />
<br />
[40]&nbsp;&nbsp;[41]&nbsp;&nbsp;[42]&nbsp;&nbsp;[43]&nbsp;&nbsp;[44]&nbsp;&nbsp;[45]&nbsp;&nbsp;[46]&nbsp;&nbsp;[47]&nbsp;&nbsp;[48]&nbsp;&nbsp;[49]&nbsp;&nbsp; ...<br />
<br />
For 2-D [X, Y] and 1-D [Z], translation: Z = 10 (X - 1) + Y - 1</code></div></div><br />
Their difference is that, cells of the 2-D system are linked like a net -- five horizontal linking lines and ten vertical, but the 1-D system is actually a single line like [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] ... [48] [49]. It seems that from [0] to [10] is only one vertical block apart, but actually there is no vertical leap in a 1-D horizontal line; the leap is actually 10 horizontal blocks. Ideally, [anything, 1] is where you may start a stage, but actually it is [anything divisible by 10]. The locations allowed to start Stage Mode are marked <span style="text-decoration: underline;" class="mycode_u">{ }</span>, and the whole line would looks like<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-family: Courier;" class="mycode_font"><span style="text-decoration: underline;" class="mycode_u">{0}</span> [1] [2] [3] [4] [5] [6] [7] [8] [9] <span style="text-decoration: underline;" class="mycode_u">{10}</span> [11] [12] [13] [14] [15] [16] [17] [18] [19] <span style="text-decoration: underline;" class="mycode_u">{20}</span> [21] ... [29] <span style="text-decoration: underline;" class="mycode_u">{30}</span> ... <span style="text-decoration: underline;" class="mycode_u">{40}</span> [41] ... [48] [49]</span></div>
<br />
You see the locations are greatly apart but with constant interval, because one interval means one cycle of completion of the smaller digit. Here it is the imaginary Y variable. In translation, Z changes as Y changes, but Z moves a whole interval (10, which contains all possible values of Y) as X changes only by 1. This is just like the minute hand and second hand of (some types of) clocks. When the second hand completes a cycle, 60 units, the minute hand will move one unit.<br />
<br />
Concerning time, we can talk about TU in DC too. Randomly say, if I want a wait: value of 3:31:16 (3 minutes, 31 seconds and 16 frames in 30 fps), I need to combine all 3 numbers into TU. Examine the cycles first: 30 frames (TU) = 1 s, 60 s = 1 min; 31 s = 930 TU, 3 min = 180 s = 5,400 TU. Sum together, it is 6,346 TU. This seems a bit off-topic, but I want to say, a change of unit can make multiple variables into a single possible. For time values the exchange of units is obvious, 1 hour = 60 min = 3,600 s = 108,000 TU, but for some systems -- more on-topic -- colors, it is not. How can I say 256 units of blue = 1 unit of green? This is ridiculous.<br />
<br />
Really? No, in fact human can define many things. The original LF2 has 5 acts for each stage only. It is perfectly possible for Wong to define id: 0 to 4 for Stage 1, up to id: 20 to 24 for Stage 5. In this case every 5 id: units exchange to 1 stage, and the act number repeats the cycle and returns to the start again. When it moves to color, it is just the same -- when one cycle completes, another moves 1. Let's see RGB first.<br />
<br />
<br />
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">3</span></span></div>
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 3 - Linear Color Codes</span></span><br />
<br />
As mentioned in <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 1</span></span>, RGB may be one hexadecimal number. For example, the largest, static blue area on the top of the LF2 screen listing HP MP bars, that blue is coded #324D9A. In the three-variable decimal notation it is (50, 77, 154), which is the decimal numbers of 32h, 4Dh and 9Ah. But what if we directly exchange 324D9Ah into decimal? It will be 3,296,666, which seems to be meaningless, but it will not if we do some calculations. Why we can directly breakdown 324D9Ah into 32h, 4Dh and 9Ah, is because each color's available depths is 256, from the 8 bits per color system (see <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 1</span></span>), and 256 is delicately 100h. So now<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>-&nbsp;&nbsp;&nbsp;&nbsp;32&nbsp;&nbsp;&nbsp;&nbsp; h<br />
-&nbsp;&nbsp; * 10000 h<br />
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4D&nbsp;&nbsp; h<br />
-&nbsp;&nbsp;&nbsp;&nbsp; * 100 h<br />
-&nbsp;&nbsp; +)&nbsp;&nbsp; 9A h<br />
-&nbsp;&nbsp; -------<br />
-&nbsp;&nbsp;&nbsp;&nbsp;324D9A h<br />
<br />
324D9Ah = 32h * 10000h + 4Dh * 100h + 9Ah<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 50 * 65536&nbsp;&nbsp;+&nbsp;&nbsp;77 * 256&nbsp;&nbsp;+ 154 = 3296666</code></div></div><br />
After breaking down the number, it looks just the same no matter we change all of its elements into decimal or not.<br />
<br />
Let's try notating a number in RGB and 1-D decimal simultaneously. Say, we start from color #000000, and represent it by 0. If we treat the code as one number and add it by 1, it will be 1 or #000001, which is R0 G0 B1. Continuing the process, until 255 or #0000FF, separately it is R0 G0 B255. Next it is the critical point, where degree 255 of blue color "transform" into 1 green point; it is 256 or #000100, R0 G1 B0. The previously said weird color transform occurs. It is indeed weird if you move one unit by one unit on this line ranged from 0 to 16,777,215 which intend to represent a 3-dimensional array. If you move 3-D-ly, that is, cycle by cycle, it should be just fine. Let's go back to the #000100 code. Normally you adjust the base color directly, like adding degree 100 of green. Now one cycle of blue is 256 units, so every 256 (16^2) units in whole means degree one of green. Degree 100 would be 100 * 16^2. Add it to the #000100 or 256, will become #006500 or 25,856. Similarly, if I want another degree 16 of red, it is 16 * 16^4 = 1,048,576; add to the code it will be #106500 or 1,074,432.<br />
<br />
"Degree 256 of blue means degree 1 of green" still looks not very natural; we should rather say: degrees of red, green and blue moves in steps of 65,536, 256 and 1 unit respectively on the 1-D RGB color representation. To "decrypt" an 1-D color code, conversely we see how many steps of a certain base color it has taken. Take the previous #324D9A, in hexadecimal it is simple since red and green are moving in steps of 10000h and 100h units respectively. In decimal, it is still not that complicated, just require some division.<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">3296666 / 65536 = 50 ... 19866</span></div>
<br />
So it has taken 50 steps of red, which is 65536 units each, and something is left. Process that number,<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">19866 / 256 = 77 ... 154</span></div>
<br />
Thus 77 steps of green, 256 units each, is taken. The remainder represents blue degree since it is 1 unit each.<br />
<br />
You may wonder why I tell so much on RGB instead of our subject RECT, and even use such an unpopular decimal method to notate RGB codes. Well, the RECT mechanism is quite similar to this. We are approaching, but there are still some points to be clarified.<br />
<br />
<br />
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">4</span></span></div>
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 4 - Examining RECT Basics</span></span><br />
<br />
From YinYin's explanation, we (or I) learn that RECT codes are lying on an 1-D line representing sets of 3-variable color codes; from it and also <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 3</span></span>, we learn that if we put 3 color degrees into 1-D, 2 of the colors need to be represented by leaping certain intervals. Therefore, before experimenting we expect only one base color will change if we change the RECT value by certain amounts which are or are multiples of its intervals. The following are the actual samples I have taken using LF2.exe, LF2 Data Changer and Paint.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>rect&nbsp;&nbsp; R&nbsp;&nbsp; G&nbsp;&nbsp; B<br />
------ --- --- ---</code></div></div><div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7&nbsp;&nbsp; 7&nbsp;&nbsp; 7<br />
32&nbsp;&nbsp;&nbsp;&nbsp; 7&nbsp;&nbsp; 11&nbsp;&nbsp;7<br />
2015&nbsp;&nbsp; 7&nbsp;&nbsp; 255 255<br />
2016&nbsp;&nbsp; 8&nbsp;&nbsp; 3&nbsp;&nbsp; 7<br />
2048&nbsp;&nbsp; 15&nbsp;&nbsp;7&nbsp;&nbsp; 7<br />
4032&nbsp;&nbsp; 15&nbsp;&nbsp;255 7<br />
4063&nbsp;&nbsp; 15&nbsp;&nbsp;255 255<br />
4064&nbsp;&nbsp; 16&nbsp;&nbsp;3&nbsp;&nbsp; 7<br />
4095&nbsp;&nbsp; 16&nbsp;&nbsp;3&nbsp;&nbsp; 255<br />
4096&nbsp;&nbsp; 23&nbsp;&nbsp;7&nbsp;&nbsp; 7<br />
5984&nbsp;&nbsp; 23&nbsp;&nbsp;243 7<br />
6000&nbsp;&nbsp; 23&nbsp;&nbsp;243 135<br />
6016&nbsp;&nbsp; 23&nbsp;&nbsp;247 7<br />
6048&nbsp;&nbsp; 23&nbsp;&nbsp;251 7<br />
6079&nbsp;&nbsp; 23&nbsp;&nbsp;251 255<br />
6080&nbsp;&nbsp; 23&nbsp;&nbsp;255 7<br />
6090&nbsp;&nbsp; 23&nbsp;&nbsp;255 87<br />
6100&nbsp;&nbsp; 23&nbsp;&nbsp;255 167<br />
6110&nbsp;&nbsp; 23&nbsp;&nbsp;255 247<br />
6111&nbsp;&nbsp; 23&nbsp;&nbsp;255 255<br />
6112&nbsp;&nbsp; 24&nbsp;&nbsp;3&nbsp;&nbsp; 7<br />
6143&nbsp;&nbsp; 24&nbsp;&nbsp;3&nbsp;&nbsp; 255<br />
6144&nbsp;&nbsp; 31&nbsp;&nbsp;7&nbsp;&nbsp; 7<br />
6368&nbsp;&nbsp; 31&nbsp;&nbsp;35&nbsp;&nbsp;7<br />
6751&nbsp;&nbsp; 31&nbsp;&nbsp;79&nbsp;&nbsp;255<br />
6752&nbsp;&nbsp; 31&nbsp;&nbsp;83&nbsp;&nbsp;7<br />
65503&nbsp;&nbsp;255 255 255<br />
65504&nbsp;&nbsp;0&nbsp;&nbsp; 3&nbsp;&nbsp; 7<br />
65535&nbsp;&nbsp;0&nbsp;&nbsp; 3&nbsp;&nbsp; 255<br />
65536&nbsp;&nbsp;7&nbsp;&nbsp; 7&nbsp;&nbsp; 7<br />
71646&nbsp;&nbsp;23&nbsp;&nbsp;255 247<br />
262144 7&nbsp;&nbsp; 7&nbsp;&nbsp; 7</code></div></div><br />
You may find many equal values within one base color, and one seems to be out-of-pattern phoneme in red code (often jumps in 7 but very occasionally in 1) which will be explained in lower parts. Now let's follow my interpretation of the data collected.<br />
<br />
First, we can see the smallest changing in RECT represent the blue code, i.e. when RECT changes by one, it is likely only blue depth changes. Then, we see RECT is similar to RGB in fact -- red using largest intervals and green using moderate intervals, lastly for blue -- refer to RECT values 6079 to 6112, we see green value changes as blue completes a cycle; finally red is the largest, by comparing RECT: 0 and 2048, only red changes while green and blue are kept at 7. So, now we discover that in RECT, the base colors red, green and blue moves in steps of 2,048, 32 and 1 unit respectively.<br />
<br />
Green in steps of 32... this actually means there are 32 degrees of blue depth levels available in total. 32 is 32 divided by 1; similarly for green cycles, there are... 2,048 / 32 = 64 depth levels. This looks inconsistent but true, because green depths jumps in 4 in RGB, 256 divided by 4 that is 64; and for blue it jumps in 8, so only 32 depth levels are available. For red, first we must find out how much is one cycle of it. If you have noticed RECT: 0 and 65536 has all the same RGB representation, you know the answer. Everything in RECT repeats in cycles of 65,536 units. Lastly, 65,536 / 2,048 = 32 depth levels for red. (There are only 32 designed depths for red, not 64 as it seems. The reason of the phoneme will be discussed in <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6</span></span>.) This should clarify the error in YinYin's explanation, "goes from 7 to 255 in steps of 4, thus leaving you 32 colors." (In fact if a sequence goes from 7 to 255 in steps of 4, it has 63 members.) Only red and blue "go from 7 to 255" and "leave you 32 colors," and only green goes "in steps of 4."<br />
<br />
To shortly conclude, RECT is a 1-variable color code (designed to) provide 32, 64 and 32 red, green and blue color depths respectively. When representing in 1-D, red and green values are notated by steps of 2,048 and 32 units each.<br />
<br />
<br />
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">5</span></span></div>
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 5 - Secrets Disclosed in Binary RECT</span></span><br />
<br />
It is confusing to jump in 2,048 and 32 intervals to obtain the color depths. You may wonder is there a method to split the number into three parts, one base color each, as RGB do (324D9Ah is one hex number, but we can directly say it is R32h, G4Dh and B9Ah). Besides, you may want to learn more about why the available depths are allocated so strangely, why 32, 64, 32 but neither all-32 nor all-64.<br />
<br />
For the first question, it is a matter of numerical base. RGB can do so because the cycle is 256, which can be written in powers of 16, the base it applied, therefore when it comes to division as in <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 3</span></span>, it just looks the same as sticking all the digits into one number under base-16. For the acts of stages, both the base and cycle are 10, so using base-10 would obviously creates the similar effect. Now it is tricky when it comes to RECT. We need a base fits both the cycles of 32 and the cycle of 64. There is one -- considering 32 = 2^5 and 64 = 2^6 -- it is base-2, the binary system. You will see how it works after transforming RECT codes into binary. Let's see,<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>rect&nbsp;&nbsp; R&nbsp;&nbsp; G&nbsp;&nbsp; B&nbsp;&nbsp;&nbsp;&nbsp;rectBin (16 bits)&nbsp;&nbsp;&nbsp;&nbsp;R' G' B'<br />
------ --- --- ---&nbsp;&nbsp;-------------------&nbsp;&nbsp;-- -- --</code></div></div><div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7&nbsp;&nbsp; 7&nbsp;&nbsp; 7&nbsp;&nbsp;&nbsp;&nbsp;0000 0000 0000 0000&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0<br />
32&nbsp;&nbsp;&nbsp;&nbsp; 7&nbsp;&nbsp; 11&nbsp;&nbsp;7&nbsp;&nbsp;&nbsp;&nbsp;0000 0000 0010 0000&nbsp;&nbsp;0&nbsp;&nbsp;1&nbsp;&nbsp;0<br />
2015&nbsp;&nbsp; 7&nbsp;&nbsp; 255 255&nbsp;&nbsp;0000 0111 1101 1111&nbsp;&nbsp;0&nbsp;&nbsp;62 31<br />
2016&nbsp;&nbsp; 8&nbsp;&nbsp; 3&nbsp;&nbsp; 7&nbsp;&nbsp;&nbsp;&nbsp;0000 0111 1110 0000&nbsp;&nbsp;0&nbsp;&nbsp;63 0<br />
2048&nbsp;&nbsp; 15&nbsp;&nbsp;7&nbsp;&nbsp; 7&nbsp;&nbsp;&nbsp;&nbsp;0000 1000 0000 0000&nbsp;&nbsp;1&nbsp;&nbsp;0&nbsp;&nbsp;0<br />
4032&nbsp;&nbsp; 15&nbsp;&nbsp;255 7&nbsp;&nbsp;&nbsp;&nbsp;0000 1111 1100 0000&nbsp;&nbsp;1&nbsp;&nbsp;62 0<br />
4063&nbsp;&nbsp; 15&nbsp;&nbsp;255 255&nbsp;&nbsp;0000 1111 1101 1111&nbsp;&nbsp;1&nbsp;&nbsp;62 31<br />
4064&nbsp;&nbsp; 16&nbsp;&nbsp;3&nbsp;&nbsp; 7&nbsp;&nbsp;&nbsp;&nbsp;0000 1111 1110 0000&nbsp;&nbsp;1&nbsp;&nbsp;63 0<br />
4095&nbsp;&nbsp; 16&nbsp;&nbsp;3&nbsp;&nbsp; 255&nbsp;&nbsp;0000 1111 1111 1111&nbsp;&nbsp;1&nbsp;&nbsp;63 31<br />
4096&nbsp;&nbsp; 23&nbsp;&nbsp;7&nbsp;&nbsp; 7&nbsp;&nbsp;&nbsp;&nbsp;0001 0000 0000 0000&nbsp;&nbsp;2&nbsp;&nbsp;0&nbsp;&nbsp;0<br />
65503&nbsp;&nbsp;255 255 255&nbsp;&nbsp;1111 1111 1101 1111&nbsp;&nbsp;31 62 31<br />
65504&nbsp;&nbsp;0&nbsp;&nbsp; 3&nbsp;&nbsp; 7&nbsp;&nbsp;&nbsp;&nbsp;1111 1111 1110 0000&nbsp;&nbsp;31 63 0<br />
65535&nbsp;&nbsp;0&nbsp;&nbsp; 3&nbsp;&nbsp; 255&nbsp;&nbsp;1111 1111 1111 1111&nbsp;&nbsp;31 63 31<br />
65536&nbsp;&nbsp;7&nbsp;&nbsp; 7&nbsp;&nbsp; 7&nbsp;&nbsp;&nbsp;&nbsp;0000 0000 0000 0000&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0<br />
71646&nbsp;&nbsp;23&nbsp;&nbsp;255 247&nbsp;&nbsp;0001 0111 1101 1110&nbsp;&nbsp;2&nbsp;&nbsp;62 30<br />
262144 7&nbsp;&nbsp; 7&nbsp;&nbsp; 7&nbsp;&nbsp;&nbsp;&nbsp;0000 0000 0000 0000&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0</code></div></div><br />
From here, we first define another type of color code, R'G'B', used in RECT. It is just like RGB but with R' and B' ranged 0 to 31, and G' ranged 0 to 63 inclusive, instead of 0 to 255. 0 is the black end and their greatest number are their colored end. This system will be mentioned and used for quite a while, and no replacement until we discuss how to link R'G'B' to RGB.<br />
<br />
Binary numbers are too long and normally divided into groups of 4. In the current case, for our purpose you may group them in to 5, 6, 5, which would be even clearer; e.g. 00001 111110 00000 for RECT: 4032. Under this division, you can clearly see the last three columns of the above table is just the decimal representation of the three parts of the binary number, which is transformed from RECT. For the example just given, 00001 is 1, 111110 is 62, and 00000 is 0. RECT only recognize 16 bits, thus for values starting from 65536 (2^16), the cycle is just repeating. The exceeded amounts are ignored, see the last three sets of data in the table.<br />
<br />
Digital memories group 8 bits as 1 byte, thus it is normal to expect processing word sizes or the smallest memory units are in multiples of 8 bits, e.g. 8, 16, 24, 32, 64 or 128. If RECT adapts an all-32 allocation of color depths, only 15 bits will be used and 1 bit will be wasted. 1 bit means a lot -- a double of distinct colors available. <span style="font-style: italic;" class="mycode_i">I guess LF2 originally took this way in fact, until later changed green to have 64 levels, because we see all the starting points are 7 in RGB (see R'0 G'0 B'0 = R7 G7 B7), and G'63 = G3 which looks strange. If the authors were intended to use all 16 bits at the very start, the ranges RECT available in RGB should be 7 to 255, 3 to 255 and 7 to 255 as R'G'B' goes from 0 to 31, 0 to 63 and 0 to 31 respectively, instead of the current pattern of green that from 7 to 255 then completes on 3. If you acknowledge RECT runs in 16 bits, all-64 depths would be impossible since it requires 18 bits. Finally, for the reason why it is green being doubled in depth levels but not red or blue... other than the preferences of the authors it may be a matter of symmetry. Among all the combinations of two 5's and one 6, 5-6-5 looks better than 6-5-5 or 5-5-6.</span><br />
<br />
So now, if we think in binary form of RECT or R'G'B', it is much more clearer to see the advancement from cycle completions. When B' completes a cycle of 0 to 31, when it back to 0 G' will increase by 1. In binary, 32 is 100000, where the 1 is the sixth digit (count from the right), it is over the bound of the "blue area". Listing the whole binary RECT, it is 00000 000001 00000. For the sixth to eleventh digits, it is the business of green; for the last five digits, it is for red. Maybe you remember I said before this "some blue points transform to one green point" "advancement" is nonsense (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 3</span></span>). The replacement system is to move 3-D-ly or cycle by cycle. Here when you adapt this system, you change either R', G' or B', or say the 12th to 16th, 6th to 11th or 1st to 5th digits of the binary RECT in groups. The purpose we break RECT down to binary is to enable direct base color changes as in hexadecimal RGB. Use it, or think in this way.<br />
<br />
Recalling the basics; digital colors made up of three equally ranged base colors. We still have to transform R'G'B' code, which derived from RECT, to RGB in order to realize the colors digitally. When we have some concepts on RECT mechanism, we can now discuss how RECT related to RGB.<br />
<br />
<br />
<br />
<div style="text-align: center;" class="mycode_align">~</div><hr class="mycode_hr" />
<br />
<div style="text-align: center;" class="mycode_align">~</div>
<div style="text-align: right;" class="mycode_align"><span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">6</span></span></div>
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6 - The Jackpot and R'G'B' to RGB</span></span><br />
<br />
(For the meaning of R'G'B' which defined by me, please refer to the paragraph just below the table in <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 5</span></span> if you have skipped it.)<br />
<br />
When you see the starting point R'0 G'0 B'0 represents R7 G7 B7, ever think of the 777 Jackpot? <span style="font-style: italic;" class="mycode_i">But it is a joke to say the authors were inspired by the Jackpot in developing RECT. I can't say the possibility is 0%, but there are just reasons which are much more logical and reasonable, also are likely to replace it.</span><br />
<br />
In <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 4</span></span> we concluded RECT is a linear color representation designed to provide 32 red, 64 green and 32 blue color depths, and in <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 5</span></span> I proposed <span style="font-style: italic;" class="mycode_i">the depth levels available for green was originally also 32 as other colors, until further optimization</span>. At this moment we ignore the 64 depths and assume the system adapting all-32 depths. We are going to discuss why and how a 0 to 31 scale transform into a 7 to 255 scale.<br />
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: x-large;" class="mycode_size">6.1</span></div>
<span style="text-decoration: underline;" class="mycode_u">6.1 - 777 Jackpot</span><br />
<br />
The RGB system has 256 depths for each color, which is exactly 8 times of the degree-32 one. Even its density is much lower than RGB, it still has to spread evenly on the full scale from black to the corresponding base color. Then although the colors are far less detail than RGB, it still provides a variety of colors. To spread, we just multiply it by how much times its scale is less denser, 8 times. In a quick calculation, the scale 0 to 31 would become 0 to 248, so now it represents absolute black (0) and nearly approach the full saturation (255). It was 0 to 31 in steps of 1, now becomes 0 to 248 in steps of 8; both have 32 steps. Comparing 0-248 and 7-255, there is a difference of 7 units. <span style="font-style: italic;" class="mycode_i">The reason why having a value of 0 in RGB scale is avoided, is that at least one color with 0 can be produced by using nothing in backgrounds -- absolute black (#000000),</span> as said by YinYin. This is important because LF2 background files had a limit of 30 layers only before Ver 2.0. Saving one layer saves a lot. <span style="font-style: italic;" class="mycode_i">On the other hand, absolute white (#FFFFFF) is one of the most basic colors other than red, green and blue, so the scale is sticking to the 255 end to make this color available.</span> When the right end is 255, the left end, 31 steps apart with 8 units each, is 7, so creating the Jackpot starting.<br />
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: x-large;" class="mycode_size">6.2</span></div>
<span style="text-decoration: underline;" class="mycode_u">6.2 - B' and B Exchange</span><br />
<br />
So now we have discussed why RECT is roughly representing degrees 7 to 255 in the RGB scale. Let's start to see how to exchange the two system. Out of the three base colors, only blue in the actual R'G'B' or RECT system is exactly the same as the degree-32 <span style="font-style: italic;" class="mycode_i">old</span> system we have just discussed. But anyway let's see how to transform B' into B of RGB by a formula. I am giving it out first; it is<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">B = 8B' + 7</span></span></div>
<br />
8 is the magnification, and 7 is the constant such that RECT could give out a depth of full saturation (255). When B' is 0, B is 7; when B' is 1, B is 15; when B' is 2, 23; and so on. Now suppose we have selected a color and want its RECT, we need a inverse formula. It could be easily got by changing its subject, as follows<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">8B' + 7 = B<br />
<br />
8B' = B - 7<br />
<br />
<span style="text-decoration: underline;" class="mycode_u">B' = (B - 7) / 8</span></span></div>
<br />
Furthermore, we discover something; both RGB and RECT values are integers, so in this formula, we can see what is the condition for a certain color depth being available in RECT, using a mathematical method. RECT must be an integer, therefore B' must be also. By using the formula, the statement will be "(B - 7) / 8 must be an integer," and can be rewritten as "(B - 7) / 8 must be divisible by 1." Multiply the whole line by 8, we will get<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">(B - 7) must be divisible by 8.</span></span></div>
<br />
This presents our concepts on only using 7, 15, 23, 31, ... for B' in terms of RGB in a generalized way.<br />
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: x-large;" class="mycode_size">6.3</span></div>
<span style="text-decoration: underline;" class="mycode_u">6.3 - R' and R Exchange</span><br />
<br />
Next, we will temporarily skip green and first move on to the red code. Referring to the table in <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 4</span></span> or your own samples, R' should represent at most 64 distinct color depths in normal cases. They can be grouped into two sequences: the first being 7, 15, 23, ..., 247, 255 the same as blue, another one is adding this sequence by 1, into 8, 16, 24, ..., 248, 0. Sorry to delay (very bit though), but this mysterious +1 is related to the green code and thus will be discussed later. For now, please ignore it, so 7 and 8 are both treated as 7, 15 and 16 are both 15, etc. If you can tell yourself to accept this, then the story will be extremely simple, because it is just a copy and paste with little altering:<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">R = 8R' + 7<br />
<br />
R' = (R - 7) / 8<br />
<br />
(R - 7) must be divisible by 8</span>, under certain conditions.</div>
<br />
They indeed look very familiar. Done, now the last color.<br />
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: x-large;" class="mycode_size">6.4</span></div>
<span style="text-decoration: underline;" class="mycode_u">6.4 - G' and G Exchange</span><br />
<br />
To be mentioned last, the green code must be the most complicated one, being <span style="font-style: italic;" class="mycode_i">it was optimized into a cycle differs from other base colors, in the development of RECT</span>. There could be two interpretations of the green code; the more direct one is, similar to red and blue, spread the scale only instead in 64 intervals. The very first problem we face would be what the highest G' value represents in G of RGB -- G'62 is already G255, and then G'63 is G3. The formula can't work this way as far as we know now. But take a look, remember they are cycles, so it is not a great deal to use 259 to replace 3. If we say G'63 is G259, the problem is partly solved, and the formulas will be<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">G = 4G' + 7<br />
<br />
G' = (G - 7) / 4, where 7 &lt;= G &lt;= 259 and<br />
<br />
<span style="text-decoration: underline;" class="mycode_u">(G - 3) must be divisible by 4.</span></span></div>
<br />
Our only concern now would be getting a 259 output for G when we input G' as 63 in the first equation, as mentioned before. In look for a mathematical representation, there is a solution, but first I have to introduce a pair of arithmetic operators. (Arithmetic operators are symbols marking arithmetic operations, e.g. +, -, * and /.) They are <span style="font-weight: bold;" class="mycode_b">div</span> and <span style="font-weight: bold;" class="mycode_b">mod</span>. They are division-related, while <span style="font-weight: bold;" class="mycode_b">div</span> returns only the dividend (in integer), and <span style="font-weight: bold;" class="mycode_b">mod</span> returns the remainder. For example,<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">15 / 8 = 1.875</span> or <span style="font-weight: bold;" class="mycode_b">1 ... 7<br />
<br />
15 div 8 = 1<br />
<br />
15 mod 8 = 7</span></div>
<br />
In the above example, we can see only real values between 0 and <span style="font-weight: bold;" class="mycode_b">8</span> (include 0, exclude 8) will return for anything <span style="font-weight: bold;" class="mycode_b">mod 8</span>. Back to our case, now <span style="font-weight: bold;" class="mycode_b">259 mod 256 = 3</span>, and anything else on the scale <span style="font-weight: bold;" class="mycode_b">mod 256 =</span> anything else on the scale. So by editing the equation to the following the problem is solved.<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">G = (4G' + 7) mod 256</span></span></div>
<br />
However the inverse form is more tricky. You cannot move the <span style="font-weight: bold;" class="mycode_b">mod</span> operator to the another side, but since it outputs in cycles, we can write another formula which create the same results. Just like <span style="font-weight: bold;" class="mycode_b">sin x = sin (x + 2pi)</span>, we transform the inner function by one cycle into<br />
<br />
<div style="text-align: center;" class="mycode_align">G = 4G' - 249<br />
<br />
G' = (G + 249) / 4</div>
<br />
Because <span style="font-weight: bold;" class="mycode_b">mod</span> works not as our purpose when the inputs go across positive and negative; now I make G' always positive in the equation just above. Our G input here should be a number of the sequence 3, 7, 11, 15, ..., 251, 255, then the G' outputs would be integers from 63 to 126. To transform this range back to 0 to 63 correctly (64 to 0, 65 to 1, ... instead of 63 to 0, 64 to 1, ...), just <span style="font-weight: bold;" class="mycode_b">mod</span> the G' (which equals to [G + 249] / 4; putting "<span style="font-weight: bold;" class="mycode_b">mod</span> 64" to the left side does not work) is fine, so<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">G' = [(G + 249) / 4] mod 64</span></span></div>
<br />
This concludes the first interpretation.<br />
<br />
The another one sounds more complicated; breaking down G' into two parts, into a scale ranged from 0 to 31, and another one only gives 0 or 1, then sum up their results. The principle of this interpretation is to include the <span style="font-style: italic;" class="mycode_i">very first intended RECT mechanics</span>, as my theory in <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 5</span></span>, and separate out <span style="font-style: italic;" class="mycode_i">the later modification</span>. Recall the binary representation of RECT discussed in <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 5</span></span> again to show this new division; the binary RECT is now divided in the way like 00000 00000 0 00000 -- the 6 bits of green is further apart to become a group of 5 bits and 1 separated bit. What special about this system, is if you ignore the isolated bit by assuming it is always "0", the another three groups of 5 bits each, work all the same. All of them are in 32-step scales, from degree 7 to 255 of the RGB scale. Of course, nothing are to be ignored finally; the isolated bit actually represents an addition of a degree 4 of green. When it is 0, nothing happens; when it is 1, G will increase by 4.<br />
<br />
The 6-bit G' system records G' in a range from 0 to 63. Now, its first bit from the right is isolated to a 0-or-1 field, the remaining 5 bits are in a 0-to-31 scale. In terms of numerical value, the new 0-to-31 scale is actually a double of the previous 0-to-63 scale, since moving one binary digit means multiplying by 2. So, in terms of the previous scale, the new scale is listing from 0 to 62, in steps of 2, then all even numbers from 0 to 62 are available. Adding up the 0 or 1 of the remaining bit, odd numbers from 1 to 63 are now also available. Combining the two sequences, all integers from 0 to 63 are present.<br />
<br />
If we notate the transforming equation under this interpretation, it will be<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">G = (8g' + 7 + 4g'') mod 256</span><br />
<br />
4 (2g' + g'') = G - 7<br />
<br />
2g' + g'' = (G - 7) / 4<br />
<br />
<span style="text-decoration: underline;" class="mycode_u">2g' + g'' = [(G + 249) / 4] mod 64<br />
<br />
(G + 1) must be divisible by 4.</span></span></div>
<br />
Where g' and g'' are the depth values in the 0-to-31 and 0-or-1 new green scales respectively. Pay attention to the first equation; I put the variable g'' to the last, is for you to compare this equation with those of red and blue. You see basically only 4g'' is extra. And for the next equation, actually the previous paragraph is concluding <span style="font-weight: bold;" class="mycode_b">2g' + g'' = G'</span>. For the last statement of condition, you see "-" becomes the "+" sign. Actually it could be represented as an equation too,<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">(G + 1) mod 4 = 0</span></span></div>
<br />
When it is "<span style="font-weight: bold;" class="mycode_b">mod</span> 4", now you see it is fine to add or subtract anything in multiples of the divisible-by number. All the other conditions would be<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">(R + 1) mod 8 = 0; (R + 1) must be divisible by 8</span>, under certain conditions.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">(B + 1) mod 8 = 0; (B + 1) must be divisible by 8.</span></span></div>
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: x-large;" class="mycode_size">6.5</span></div>
<span style="text-decoration: underline;" class="mycode_u">6.5 - R'G'B' to RGB</span><br />
<br />
So far, all the separate exchanging formulas are listed, then it is time to transform them as a whole, since both RECT and (hexadecimal) RGB are 1-D systems. First, let's recall how they are made up of R', G', B', R, G and B.<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">RGB = 65536R + 256G + B</span> = R (16^4) + G (16^2) + B<br />
<br />
<span style="text-decoration: underline;" class="mycode_u">RECT = 2048R' + 32G' + B'</span> = R' [2^(6 + 5)] + G' (2^5) + B'</span></div>
<br />
Using all the equations we have made up above, this complicated looking task is very easy. Just substitude and get ...<br />
<br />
<div style="text-align: center;" class="mycode_align">RGB *= 65536 (8R' + 7) + 256 [(4G' + 7) mod 256] + (8B' + 7) ... (1)<br />
<br />
RECT *= [2048 (R - 7) / 8] + 32 {[(G + 249) / 4] mod 64} + (B - 7) / 8 ... (2)</div>
<br />
No, I did not simplify or underline them, because these are not the truth. And also look at this section's subtitle, equation (2) is not our business now. Let's focus on equation (1)... and besides, we still have not explained yet why there are 64 colors on red, but not 32 <span style="font-style: italic;" class="mycode_i">as intended</span>. Remember the reason for adding "<span style="font-weight: bold;" class="mycode_b">mod</span> 256", is because the G output of G' exceeds 255, and we have to limit it into the correct color cycle. But actually, the exceeded amount is just transformed into the next digit; for the digits responsible for green, they works the same. Here we should actually remove the operator, and (1) is now<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">RGB = 65536 (8R' + 7) + 256 (4G' + 7) + (8B' + 7)</span> ... (1a)</div>
<br />
As in <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 3</span></span> discussed, computers get the three base colors by performing division to the RGB code. This equation has deliberately broken down into the wanted three parts; (8R' + 7) is R, etc. We are ready to discuss the phoneme in red. Suppose we have R'0 G'63 B'0 (which is RECT: 2016, tested and shown in the table of <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 5</span></span>), substitute in (1a)<br />
<br />
<span style="font-weight: bold;" class="mycode_b">RGB<br />
= 65536 (7) + 256 (259) + (7)<br />
= [65536 (7) + 256 (256)] + 256 (3) + 7<br />
= 65536 (8) + 256 (3) + 7<br />
=</span> ...<br />
<br />
You see when the green value exceeds the limit, one cycle of green becomes degree one of red. This strange action is the same as we move point-by-point on the linear RGB or RECT system instead of cycle-by-cycle. <span style="font-style: italic;" class="mycode_i">The system itself runs this weirdly, because defining the color cycles into 1-D already strays away from normal concepts. When using, we makes it looks normal by avoiding certain moves, but they look nothing special to computers, since they just perform mathematical calculations. It is humans who define the outputs as colors.</span> Anyways, now we see the extra red degrees are come from color cycle exchanges. The demonstration also shows that the advancement takes place in RGB calculation, but not in RECT, or else the red degree will increase by 8. So R', G' and B' values lie in their own range, not overlapping others, only green with red after transforming into RGB due to the strange representation of G by G' (G'63 is G3).<br />
<br />
Remember the second interpretation of G'-to-G formula? It is to make all R', G' and B' work fine without "advancements", and transfer the responsibility to the isolated bit g''. Equation (1) under this interpretation would be<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">RGB = 65536 (8R' + 7) + 256 (8g' + 7 + 4g'') + (8B' + 7)<br />
<br />
RGB = 65536 (8R' + 7) + 256 (8g' + 7) + 256 (4g'') + (8B' + 7)</span> ... (1b)</div>
<br />
(To recall, <span style="font-weight: bold;" class="mycode_b">G' = 2g' + g''</span>, where g' and g'' are integers ranged 0 to 31 and 0 to 1 respectively.)<br />
<br />
Now, if g' is saturated (g' = 31, 8g' + 7 = 255), g' with a fourth of g'' would be part of R, otherwise it is to be combined with g''. For the same RECT: 2016, the example using (1b) would have an outcome of<br />
<br />
<span style="font-weight: bold;" class="mycode_b">RGB<br />
= 65536 (7) + 256 (255) + 256 (4) + (7)<br />
= 65536 (7) + 256 (255 + 1) + 256 (4 - 1) + 7<br />
= 65536 (8) + 256 (3) + 7<br />
=</span> ...<br />
<br />
I guess now we have explained everything concerning converting R'G'B' to RGB ..., except one, which leads me still do not underline the equations -- <span style="font-weight: bold;" class="mycode_b">mod</span>. What if R and the advancement from G combineded together? Refer to the <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 5</span></span> table, RECT: 65503 is not the upper limit for distinct outputs as YinYin said, but continues shortly until RECT: 65535. R' is 31 but R is 0 since RECT: 65504. In fact -- you should get it yourself by now -- the 0 is just a cycled degree 256, so we need a <span style="font-weight: bold;" class="mycode_b">mod</span> operator for RGB too. The following are modified equations (1a) and (1b), which should be correct.<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">RGB = [(16^4) (8R' + 7) + (16^2) (4G' + 7) + (8B' + 7)] mod (16^6)</span></span> ... (A)<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">RGB = [(16^4) (8R' + 7) + (16^2) (8g' + 7) + (16^2) (4g'') + (8B' + 7)] mod (16^6)</span></span> ... (B)</div>
<br />
We can now simplify them, to be<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">RGB = (524288R' + 1024G' + 8B' + 460551) mod (16^6)<br />
<br />
RGB = (524288R' + 2048g' + 1024g'' + 8B' + 460551) mod (16^6)</span></span></div>
<br />
Finally, here comes to an end, for exchanging the systems in terms of their components. Take a break for the completion of the long <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6</span></span>, and ready for long-awaited two-way formulas.<br />
<br />
<br />
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">7</span></span></div>
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 7 - RECT to RGB and its Inverse</span></span><br />
<br />
The real application of all we have discussed, is to understand what RECT means (RECT to RGB), and learn how to represent colors in RECT (RGB to RECT). Base on the concepts we have gone through, we can now talk about the transforming equations.<br />
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: x-large;" class="mycode_size">7.1</span></div>
<span style="text-decoration: underline;" class="mycode_u">7.1 - RECT to RGB</span><br />
<br />
RECT is not the same as R'G'B', so RECT to RGB differs from R'G'B' to RGB as above discussed. But of course R'G'B' is only derived from RECT, so there must be some transforming methods. We have listed something related to it at the beginning of <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6.5</span></span>, and described it long before, at the last sentence of <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 4</span></span>:<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">RECT = 2048R' + 32G' + B'</span></span> ... (3)</div>
<br />
This is the R'G'B' to RECT formula, while in <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6.5</span></span> ending, we have the R'G'B' to RGB formula; now we ultimately seek the RECT to RGB formula. <span style="font-style: italic;" class="mycode_i">By a principle similar to the Chain Rule of differentiation</span>, RECT to RGB can be obtained by considering RECT to R'G'B' to RGB. The second "to" can be achieved by simple substitutions, while the first "to" requires an inverse formula of R'G'B' to RECT. For R'G'B' to RECT, it is a 3-variable-to-1 formula, so its inverse requires 3 equations, and look like<br />
<br />
<div style="text-align: center;" class="mycode_align">R' = RECT ... ???<br />
<br />
G' = RECT ... ???<br />
<br />
B' = RECT ... ???</div>
<br />
It is not that difficult, we have done similar calculations before. See the ending of <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 3</span></span>, we were decoding RGB into R, G, B separately through division. The process involves dividends and remainders, so using <span style="font-weight: bold;" class="mycode_b">div</span> and <span style="font-weight: bold;" class="mycode_b">mod</span> (for their operations, see <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6.4</span></span>) are exactly the way we are looking for. Now R', G' and B' move in steps of 2048, 32 and 1 unit respectively, so we just have to count how many steps they have taken, and ignore the remainders. Our first draft would be<br />
<br />
<div style="text-align: center;" class="mycode_align">R' *= RECT div 2048<br />
<br />
G' *= RECT div 32<br />
<br />
B' *= RECT</div>
<br />
"<span style="font-weight: bold;" class="mycode_b">div</span> 1" means nothing as RECT must be integer. We can surely say at once that this draft is incorrect, just by considering B'. It should runs in cycles of 32 instead. Remember we successfully represent cycles by using <span style="font-weight: bold;" class="mycode_b">mod</span>, so it is to be applied here too. Therefore,<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">B' = RECT mod 32</span></span></div>
<br />
For G', <span style="font-weight: bold;" class="mycode_b">RECT div 32</span> gives you how many complete steps of 32 units each it has taken. Its cycle is 64 units, so to bound it within the range, we <span style="font-weight: bold;" class="mycode_b">mod</span> the result, leading to<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">G' = RECT div 32 mod 64</span></span></div>
<br />
Both operators have to same level of priority, so the calculation will be done from left to the right, and no brackets are needed. The R' equation is marked incorrect since we can input RECT values over 65535, as shown in the tables of <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 4</span></span> and <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">5</span></span>. To bound it, we need the same operation as in G' and B', which makes it<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">R' = RECT div 2048 mod 32</span> = RECT div 64 div 32 mod 32</span></div>
<br />
Finally, we now obtained the three inverse equations of R'G'B' to RECT. It is time to substitute them into R'G'B' to RGB. For (A) at the ending of <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6.5</span></span>, after substitution it will be<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">RGB = {(16^4) [8 (RECT div 2048 mod 32) + 7] + (16^2) [4 (RECT div 32 mod 64) + 7] + [8 (RECT mod 32) + 7]} mod (16^6)</span></span></div>
<br />
Even with the simplified form, (B), it is still very long.<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">RGB = [524288 (RECT div 2048 mod 32) + 1024 (RECT div 32 mod 64) + 8 (RECT mod 32) + 460551] mod (16^6)</span></span></div>
<br />
You cannot simplify the <span style="font-weight: bold;" class="mycode_b">div</span> and <span style="font-weight: bold;" class="mycode_b">mod</span> operations, or you will alter the equation. They are not simple divisions. This concludes RECT to RGB, which presenting the way computers process our RECT input in background files to RGB code for displaying. It directly exchanges the two system linearly.<br />
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: x-large;" class="mycode_size">7.2</span></div>
<span style="text-decoration: underline;" class="mycode_u">7.2 - RGB to RECT</span><br />
<br />
For RGB to RECT, it is even more complicated, because not all RGB values are permitted. In fact, as RGB is 24-bit and RECT is 16-bit, only one-256th of RGB colors are available on RECT. Therefore, very first we can imagine it is something like every 256 units on the RGB line there is 1 block permitted, and in fact they are not even equally spread "256 units a step". It is really hard to exchange one line to one line backwards as we just did in RECT to RGB, and a bit pointless.<br />
<br />
It is pointless because we usually read R, G, B separately. Even if it uses the linear form, it is still hexadecimal so that we can read the three colors two digits by two digits. We use them separately also. Our formulas are likely to be written in decimal, but no one bothers to transform three color depths into one huge decimal number up to 16 million, before the exchanging process. Actually what worth our discussion is the exchange between RECT and the set of R, G and B. We use only these two system, but not R'G'B' or RGB in decimal. Therefore, we should focus on what we need, and derive formulas in terms of them.<br />
<br />
Up to this moment, we are now separating the terms R, G, B and RGB. "R, G, B" means the three numbers are presented one by one, instead of like RGB a single number under a linear system. While for R'G'B' or "R', G', B'," it does not bother since for sticking up R', G' and B' as a single number, the system is named RECT, so we do not have to differentiate them. In summary,<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>References of Color Notating Systems<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Linear&nbsp;&nbsp; 3-D<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; system&nbsp;&nbsp; system<br />
<br />
RGB-related&nbsp;&nbsp;&nbsp;&nbsp;RGB&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R, G, B<br />
<br />
RECT-related&nbsp;&nbsp; RECT&nbsp;&nbsp;&nbsp;&nbsp; R'G'B'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or R', G', B' occasionally</code></div></div><br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: x-large;" class="mycode_size">7.3</span></div>
<span style="text-decoration: underline;" class="mycode_u">7.3 - R, G, B to RECT</span><br />
<br />
R, G, B to RECT means an equation with one side of RECT output and one side of R, G, B inputs, so it is a 3-variable-to-1 formula, similar to R', G', B' to RECT as (3) in <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 7.1</span></span>.<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">RECT = 2048R' + 32G' + B'</span></span> ... (3)</div>
<br />
Remember we have equation (2) in <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6.5</span></span> left to be discussed:<br />
<br />
<div style="text-align: center;" class="mycode_align">RECT *= [2048 (R - 7) / 8] + 32 {[(G + 249) / 4] mod 64} + (B - 7) / 8 ... (2)</div>
<br />
It is marked incorrect because it is substituted by separate base color cycles, without considering the green-to-red advancement discussed in later parts of that section. How about substituting the form without <span style="font-weight: bold;" class="mycode_b">mod</span> rounding? That is<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">R' = (R - 7) / 8<br />
<br />
G' = (G - 7) / 4<br />
<br />
<span style="text-decoration: underline;" class="mycode_u">B' = (B - 7) / 8</span></span></div>
<br />
Into RECT and becomes<br />
<br />
<div style="text-align: center;" class="mycode_align">RECT = 2048 (R - 7) / 8 + 32 (G - 7) / 4 + (B - 7) / 8<br />
<br />
<span style="font-weight: bold;" class="mycode_b">RECT = 256R + 8G + (B / 8) - 1848.875</span></div>
<br />
It seems that the advancement of green to red is considered since here R will increase if G' is 63, but actually, it is wrong because the conservation in the two systems are not equal. If we notate the green part without rounding the cycle, as above, one cycle of G', means one point of R', not R, will be lost if G' is 63. Then, R', not R, needs to be increased by 1 as a contradict action; now it is only R the scale increased. R is a scale 8 times more detailed than R', so even if R is advanced, R' would only increase by an eighth point. It needs to be a whole point if we need the formula works. On the other side, if we round the cycle by adding <span style="font-weight: bold;" class="mycode_b">mod</span> operations as (2), we need other operations to assume 8 is 7, ..., 0 is 255 in red mathematically. That means<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">R' = (R - 8) / 8</span> when G = 3,<br />
<br />
else <span style="font-weight: bold;" class="mycode_b">R' = (R - 7) / 8</span></div>
<br />
One approach to combine the two equations, assuming only permitted inputs (0, 7, 8, 15, ...) are received, is using <span style="font-weight: bold;" class="mycode_b">trunc( )</span>, a rounding down function. Then<br />
<br />
<div style="text-align: center;" class="mycode_align">R' = trunc[(R - 7) / 8]</div>
<br />
The only problem is we need to assume 0 as 255 too, but if R = 0 here, R' will output 0 (= <span style="font-weight: bold;" class="mycode_b">trunc</span> -0.875). We could use addition by a cycle and <span style="font-weight: bold;" class="mycode_b">mod</span> here again:<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">R' = trunc[(R + 249) / 8] mod 32</span></span></div>
<br />
Which can avoid the process takes place across 0.<br />
<br />
While for G', for <span style="font-weight: bold;" class="mycode_b">mod</span> cycling it should be<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">G' = [(G + 249) / 4] mod 64</span></span></div>
<br />
Therefore, finally<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">RECT = 2048 {trunc[(R + 249) / 8] mod 32} + 32 {[(G + 249) / 4] mod 64} + (B - 7) / 8</span></span></div>
<br />
This looks complex and time-consuming when operated by human. So, if we adjust the special red and green values in advance, we can use the basic equation. The whole R, G, B to RECT process would be<br />
<br />
<div style="text-align: center;" class="mycode_align">If G = 3, conduct<br />
<br />
1) assign G = 259, and<br />
2) subtract R by 1 or assign R = 255 if R = 0 originally.<br />
<br />
Then, apply <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">RECT = 256R + 8G + (B - 7) / 8 - 1848</span></span></div>
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: x-large;" class="mycode_size">7.4</span></div>
<span style="text-decoration: underline;" class="mycode_u">7.4 - RECT to R, G, B</span><br />
<br />
After then, we should talk about the inverse formula again. This is very similar to RECT to RGB, just being broken down into three parts. And this is easy to be obtained since we have discussed RECT to R'G'B' and all those R' to R and alike. They are<br />
<br />
<div style="text-align: center;" class="mycode_align">R *= 8R' + 7; <span style="font-weight: bold;" class="mycode_b">R' = RECT div 2048 mod 32 = RECT div 64 div 32 mod 32<br />
<br />
G = (4G' + 7) mod 256</span>; <span style="font-weight: bold;" class="mycode_b">G' = RECT div 32 mod 64<br />
<br />
B = 8B' + 7</span>; <span style="font-weight: bold;" class="mycode_b">B' = RECT mod 32</span></div>
<br />
The final concern would be the R' to R formula, as R will increase by 1 if G' = 63, reason discussed in <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6.5</span></span>. It has been concluded that the advancement is due to an absence of rounding G by <span style="font-weight: bold;" class="mycode_b">mod</span>. So, we can similarly apply the mechanics into the R' to R formula, i.e.<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">R = 8R' + (4G' + 7) div 256 + 7</span></span></div>
<br />
Then, when and only when G' = 63, <span style="font-weight: bold;" class="mycode_b">(4G' + 7)</span> will reach 256 and thus <span style="font-weight: bold;" class="mycode_b">(4G' + 7) div 256</span> will be 1. Finally, after substitution, the whole set of RECT to R, G, B equations are now derived:<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">R = 8 (RECT div 2048 mod 32) + [4 (RECT div 32 mod 64) + 7] div 256 + 7<br />
<br />
G = [4 (RECT div 32 mod 64) + 7] mod 256<br />
<br />
B = 8 (RECT mod 32) + 7</span></span></div>
<br />
All the two-way formulas are derived, but they seem to spread apart quite much and need summarizing. I will do this later in <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 9</span></span>, but not at once, because ... the calculations are not always true. There are a few preset RECT to RGB sets, which used in the official stage backgrounds. Only after discussing them, I could then show you the whole RECT and R, G, B converting algorithm. But before moving on, we have to tackle one last issue on the calculations.<br />
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: x-large;" class="mycode_size">7.5</span></div>
<span style="text-decoration: underline;" class="mycode_u">7.5 - Handling Negative RECT</span><br />
<br />
Although it is rare, but there might be people who playing tricks -- what if the RECT input is negative? For computers, <span style="font-style: italic;" class="mycode_i">usually they handle the negative values by Two's Compliment</span>, that is moving the whole set of negative to above the positive numbers. For example in a 16-bit Two's Compliment, -32,768 to -1 will be represented by binary numbers from 1000 0000 0000 0000 to 1111 1111 1111 1111, which is primarily 32,768 to 65,535 in decimal. It is possible since digital numbers must have a range, here it is -32,768 to 32,767, therefore it is not a problem to input negative values into RECT for the computer, it just read the number in the designed range. But in mathematics, both positive and negative signs tend to infinity, there is no representation to transfer a negative number to be a certain positive number within the range.<br />
<br />
The only method to handle negative inputs with our formulas is to write a conditional statement which makes use of infinity. This should be done:<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">If RECT &lt; 0, repeat adding 65536 to RECT, until RECT &gt;= 0.</span></span></div>
<br />
After this final issue regarding the formulas is settled, we can finally close the file, and move on the RECT-R, G, B conversion which have nothing do with the formulas. Sounds horrifying.<br />
<br />
<br />
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">8</span></span></div>
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 8 - Exceptional Cases</span></span><br />
<br />
It is mentioned at the very beginning of this entire article, the official maps that used RECT codes. It is mentioned for showing how common, useful or important to learn and use RECT, but actually only a small portion of these background's RECT follow all the formulas we have discussed! Obtained in LF2 ver 2.0a, At the first time I found this out, I thought I was screwed for experimenting:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>rect&nbsp;&nbsp;R&nbsp;&nbsp; G&nbsp;&nbsp; B&nbsp;&nbsp; bg&nbsp;&nbsp;Exceptional<br />
----- --- --- --- --- ---</code></div></div><div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>4705&nbsp;&nbsp;23&nbsp;&nbsp;83&nbsp;&nbsp;15<br />
4706&nbsp;&nbsp;16&nbsp;&nbsp;79&nbsp;&nbsp;16&nbsp;&nbsp;lf&nbsp;&nbsp;Yes<br />
4707&nbsp;&nbsp;23&nbsp;&nbsp;83&nbsp;&nbsp;31<br />
...<br />
16834 71&nbsp;&nbsp;63&nbsp;&nbsp;23<br />
16835 66&nbsp;&nbsp;56&nbsp;&nbsp;24&nbsp;&nbsp;qi&nbsp;&nbsp;Yes<br />
16836 71&nbsp;&nbsp;63&nbsp;&nbsp;39<br />
...<br />
21095 87&nbsp;&nbsp;83&nbsp;&nbsp;63<br />
21096 90&nbsp;&nbsp;78&nbsp;&nbsp;75&nbsp;&nbsp;sp&nbsp;&nbsp;Yes<br />
21097 87&nbsp;&nbsp;83&nbsp;&nbsp;79<br />
...<br />
25356 103 103 103 hkc<br />
...<br />
29582 119 119 119 hkc<br />
...<br />
34815 136 3&nbsp;&nbsp; 255<br />
34816 143 7&nbsp;&nbsp; 7&nbsp;&nbsp; ft<br />
34817 143 7&nbsp;&nbsp; 15<br />
...<br />
37769 151 119 79<br />
37770 154 110 90&nbsp;&nbsp;gw&nbsp;&nbsp;Yes<br />
37771 151 119 95<br />
...<br />
40179 159 163 159 hkc</code></div></div><br />
These cases are not common, but definitely worth notifying. Those marked "Yes" in the last column are values do not obey the exchange formulas, while the "bg" column specifies which background these RECT values are used in. There are four special values, RECT: 4706, 16835, 21096 and 37770. <span style="font-style: italic;" class="mycode_i">It is believed that there is a process, prior to the general exchange formulas, that check whether the RECT is one of the special values -- if yes, output the corresponding special RGB codes -- instead of hidden instructions exist in the official backgrounds.</span> The evidence is that, the output is still irregular even if we use one of these RECT values in custom backgrounds. All the RECT adjacent to the special values are normal.<br />
<br />
The RECT codes remained the same throughout LF2 ver 1.9 to 2.0, however, in versions since 1.9c only 32-bit color is expected, while in versions 1.9 and before only so for 16-bit color. The RECT to RGB process back in ver 1.9 is different, and has different outputs:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>--- ----- 16-bit mode 32-bit mode -- -- --<br />
bg&nbsp;&nbsp;rect&nbsp;&nbsp;R&nbsp;&nbsp; G&nbsp;&nbsp; B&nbsp;&nbsp; R&nbsp;&nbsp; G&nbsp;&nbsp; B&nbsp;&nbsp; R' G' B'<br />
--- ----- --- --- --- --- --- --- -- -- --<br />
lf&nbsp;&nbsp;4706&nbsp;&nbsp;16&nbsp;&nbsp;77&nbsp;&nbsp;16&nbsp;&nbsp;0&nbsp;&nbsp; 18&nbsp;&nbsp;98&nbsp;&nbsp;2&nbsp;&nbsp;19 2<br />
sp&nbsp;&nbsp;21096 82&nbsp;&nbsp;77&nbsp;&nbsp;66&nbsp;&nbsp;0&nbsp;&nbsp; 82&nbsp;&nbsp;104 10 19 8<br />
gw&nbsp;&nbsp;37770 148 113 82&nbsp;&nbsp;0&nbsp;&nbsp; 147 138 18 28 10<br />
qi&nbsp;&nbsp;16835 66&nbsp;&nbsp;56&nbsp;&nbsp;24&nbsp;&nbsp;0&nbsp;&nbsp; 65&nbsp;&nbsp;195 8&nbsp;&nbsp;14 3<br />
ft&nbsp;&nbsp;34816 140 0&nbsp;&nbsp; 0&nbsp;&nbsp; 0&nbsp;&nbsp; 136 0&nbsp;&nbsp; 17 0&nbsp;&nbsp;0<br />
hkc 40179 156 158 156 0&nbsp;&nbsp; 156 243 19 39 19</code></div></div><br />
Shortly regarding the 32-bit mode -- running LF2 ver 1.9 in 32-bit color -- now you see why there were greenish and bluish areas in the old version backgrounds. Try putting R, G, B into the to-RGB formula (first formula in <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6.5</span></span>). For the normal range of RECT of 0 to 65535, red depth here will never change from 0.<br />
<br />
Out of those in the 16-bit mode columns, Queen's Island has the perfect color match between the graphics and RECT-coded area, while Stanley Prison and The Great Wall match poorly; Forbidden Tower does not care since there is no need of matching. Compare the two tables in this section, we see the RGB values of the RECT-coded area of Queen's Island in the two versions are exactly the same, while in the poorly matched backgrounds there are nearly 20 points of difference in total, for each of them. <span style="font-style: italic;" class="mycode_i">None of the background .dat or .bmp files were edited</span>, but the color matching was fixed. <span style="font-style: italic;" class="mycode_i">It maybe the easiest and most perfect method to match colors by adding special conditions into the compiling process from RECT to RGB.</span> Now we see the RECT-coded areas match very well to the graphics in 32-bit versions, thanks to this edition. Remember there is strict limit of color availability under normal RECT to RGB formula, and all the four "perfect matching" colors are not available there. For the background does not require color matching, Forbidden Tower, there is no special color adjustment set for it as its RGB output follows the formula.<br />
<br />
In summary, RECT-coded colors in four of the official backgrounds are optimized to match other graphics by modifying their RGB output, <span style="font-style: italic;" class="mycode_i">instead of re-coding the whole RECT to RGB mechanism and editing the background files</span>. This could explain why there are a few RGB outputs are out-of-pattern. This leads to a special use of the four RECT values, and at the same time the shift of the four sets of permitted RGB: R16 G79 B16, R66 G56 B24, R90 G78 B75 and R154 G110 B90 are made available and can be directly link to the special RECT values; R23 G83 B23, R71 G63 B31, R87 G83 B71 and R151 G119 B87 are made unavailable dispute the other availability conditions.<br />
<br />
<br />
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">9</span></span></div>
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 9 - Mechanical Summary and Applications</span></span><br />
<br />
Every detailed cases regarding exchanging RECT and RGB have been mentioned so far. They should cover all the conditions we will face while exchanging the two systems. A lot of terms and converting formulas has been discussed and developed throughout this article, one by one about how they are derived. This section will summarize them by going through all the results once in an organized way, for an easier understanding of their usage.<br />
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: x-large;" class="mycode_size">9.1</span></div>
<span style="text-decoration: underline;" class="mycode_u">9.1 - Overview of Formulas</span><br />
<br />
First let's see what important component and final formulas we have derived. There are several categories based on both sides of the exchanging systems. The four systems we have made use of are (1) <span style="font-weight: bold;" class="mycode_b">R, G, B</span>, (2) <span style="font-weight: bold;" class="mycode_b">RGB</span>, (3) <span style="font-weight: bold;" class="mycode_b">R'G'B'</span>, and (4) <span style="font-weight: bold;" class="mycode_b">RECT</span>.<br />
<br />
- - Rules and system exchanges - -<ul class="mycode_list"><li>R, G, B to RGB (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 3, 6.5</span></span>)<ul class="mycode_list"><li>RGB = 65536R + 256G + B<br />
</li>
<li>Condition: 0 &lt;= (R or G or B) &lt; 256</li>
</ul>
</li>
</ul>
<ul class="mycode_list"><li>R'G'B' and replacement (defined in <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 4, 6.4</span></span>)<ul class="mycode_list"><li>Condition: R', G', B', g' and g'' are integers.<br />
</li>
<li>Condition: 0 &lt;= (R' or g' or B') &lt; 32<br />
</li>
<li>Condition: 0 &lt;= G' &lt; 64<br />
</li>
<li>Condition: 0 &lt;= g'' &lt; 2<br />
</li>
<li>Component: G' = 2g' + g''</li>
</ul>
</li>
</ul>
<ul class="mycode_list"><li>R'G'B' to RECT (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 4, 6.4, 6.5</span></span>)<ul class="mycode_list"><li>RECT = 2048R' + 32G' + B'<br />
</li>
<li>RECT = 2048R' + 64g' + 32g'' + B'</li>
</ul>
</li>
</ul>
<ul class="mycode_list"><li>RECT to R'G'B' (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 7.1</span></span>)<ul class="mycode_list"><li>R' = RECT div 2048 mod 32<br />
</li>
<li>G' = RECT div 32 mod 64<br />
</li>
<li>B' = RECT mod 32</li>
</ul>
</li>
</ul>
<ul class="mycode_list"><li>R'G'B' to R, G, B<ul class="mycode_list"><li>R = 8R' + (4G' + 7) div 256 + 7 (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6.3, 7.4</span></span>)<br />
</li>
<li>G = (4G' + 7) mod 256 (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6.4</span></span>)<br />
</li>
<li>B = 8B' + 7 (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6.2</span></span>)</li>
</ul>
</li>
</ul>
<ul class="mycode_list"><li>R, G, B available in RECT<ul class="mycode_list"><li>Condition: (R, G, B) are one of the four sets, which can be linked to RECT output directly: (16, 79, 16), (66, 56, 24), (90, 78, 75) or (154, 110, 90). (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 8</span></span>)<br />
</li>
<li>Condition: (R, G, B) are not either one of the four sets: (23, 83, 23), (71, 63, 31), (87, 83, 71) or (151, 119, 87). (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 8</span></span>)<br />
</li>
<li>Condition: When G &lt;&gt; 3, (R + 1) must be divisible by 8. (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6.3</span></span>)<br />
</li>
<li>Condition: When G = 3, R must be divisible by 8. (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 7.3</span></span>)<br />
</li>
<li>Condition: (G + 1) must be divisible by 4. (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6.4</span></span>)<br />
</li>
<li>Condition: (B + 1) must be divisible by 8. (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6.2, 6.4</span></span>)<br />
</li>
<li>(If the first condition is met, the remaining are to be ignored; otherwise, check the remaining, and if either one of them is not met, the input will be rejected.)</li>
</ul>
</li>
</ul>
<ul class="mycode_list"><li>R, G, B to R'G'B'<ul class="mycode_list"><li>R' = trunc[(R + 249) / 8] mod 32 (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6.3, 7.3</span></span>)<br />
</li>
<li>G' = [(G + 249) / 4] mod 64 (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6.4</span></span>)<br />
</li>
<li>B' = (B - 7) / 8 (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6.2</span></span>)</li>
</ul>
</li>
</ul>
<ul class="mycode_list"><li>RECT to R, G, B (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 7.4</span></span>)<ul class="mycode_list"><li>R = 8 (RECT div 2048 mod 32) + [4 (RECT div 32 mod 64) + 7] div 256 + 7<br />
</li>
<li>G = [4 (RECT div 32 mod 64) + 7] mod 256<br />
</li>
<li>B = 8 (RECT mod 32) + 7</li>
</ul>
</li>
</ul>
<ul class="mycode_list"><li>R, G, B to RECT (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 7.3</span></span>)<ul class="mycode_list"><li>For all cases: RECT = 2048 {trunc[(R + 249) / 8] mod 32} + 32 {[(G + 249) / 4] mod 64} + (B - 7) / 8<br />
</li>
<li>When G &lt;&gt; 3: RECT = 256R + 8G + (B - 7) / 8 - 1848</li>
</ul>
</li>
</ul>
<ul class="mycode_list"><li>Negative RECT to positive (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 7.5</span></span>)<ul class="mycode_list"><li>If RECT &lt; 0, repeat adding 65536 to RECT, until RECT &gt;= 0.</li>
</ul>
</li>
</ul>
<ul class="mycode_list"><li>Special RECT values (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 8</span></span>), assignments prior to all equations<ul class="mycode_list"><li>When RECT div 65536 = 4706, (R, G, B) = (16, 79, 16). When reversed, RECT = 4706.<br />
</li>
<li>When RECT div 65536 = 16835, (R, G, B) = (66, 56, 24). When reversed, RECT = 16835.<br />
</li>
<li>When RECT div 65536 = 21096, (R, G, B) = (90, 78, 75). When reversed, RECT = 21096.<br />
</li>
<li>When RECT div 65536 = 37770, (R, G, B) = (154, 110, 90). When reversed, RECT = 37770.</li>
</ul>
</li>
</ul>
<div style="text-align: right;" class="mycode_align"><span style="font-size: x-large;" class="mycode_size">9.2</span></div>
<span style="text-decoration: underline;" class="mycode_u">9.2 - The Exchange Cycle</span><br />
<br />
We have to spot on the final formulas out of these and make use of them. For the frame of the sequence of using the formulas, remember our purpose here, is "to understand what RECT means (RECT to RGB), and learn how to represent colors in RECT (RGB to RECT)" (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 7</span></span>). As we are not the original developers of LF2, everything of it were existed before our exploration. Therefore, we start from interpreting them, RECT to RGB, and be able to convert them back, RGB to RECT; the linked ends form the Exchange Cycle. Let's take a deeper look to this draft.<br />
<br />
As discussed in <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 7.2</span></span>, "RGB" is actually "R, G, B" since we do not use them as computers do -- a reminder. Breaking down the process from RECT to RGB; it would look like<br />
<br />
<blockquote class="mycode_quote"><cite>Exchange Cycle Algorithm ... Wrote:</cite><span style="font-weight: bold;" class="mycode_b">Read RECT</span> -&gt; Break to R'G'B' -&gt; Convert R'G'B' to R, G, B individually -&gt; <span style="font-weight: bold;" class="mycode_b">Get R, G, B</span></blockquote><br />
Under the standard calculations. However, we missed some the special cases which need to be checked beforehand: (1) the negative and (2) the four special RECT values. (1) should be prior to (2) since the conditions of (2) do not cover across zero. The whole flow is now drafted as<br />
<br />
<blockquote class="mycode_quote"><cite>Exchange Cycle Algorithm ... Wrote:</cite><span style="font-weight: bold;" class="mycode_b">Read RECT</span> -&gt; Put it back to positive (if needed) -&gt; Check if: It is one of the four special values<br />
<br />
If: It is -&gt; Check what RGB it refers to -&gt;<br />
If: It is not -&gt; Break RECT to R'G'B' -&gt; Convert R'G'B' to R, G, B individually -&gt;<br />
<br />
-&gt; <span style="font-weight: bold;" class="mycode_b">Get R, G, B</span></blockquote><br />
This is a more detailed version. Actually we can make use of some final equations to simplify it and get "<span style="font-weight: bold;" class="mycode_b">Read RECT</span> -&gt; Convert to R, G, B -&gt; <span style="font-weight: bold;" class="mycode_b">Get R, G, B</span>" by using RECT to R, G, B formulas (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 7.4</span></span>).<br />
<br />
The another half of the cycle is converting some RGB we want to RECT, which should be probably more useful. Let's discuss the steps one by one. Starting off on RGB, we first need to check if it is permitted. This can be done by applying the condition checks listed in "R, G, B available in RECT" of <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 9.1</span></span>. The first condition is special for handling the optimized colors (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 8</span></span>); if it is met, RECT result is got. For the remaining, the order of applying them does not bother much, since if either one of them does not satisfied, the whole RGB set will be rejected. The draft for this would be<br />
<br />
<blockquote class="mycode_quote"><cite>Exchange Cycle Algorithm ... Wrote:</cite><span style="font-weight: bold;" class="mycode_b">Input and read R, G, B</span> -&gt; Check if: (R, G, B) is one of the four sets: (16, 79, 16), (66, 56, 24), (90, 78, 75) or (154, 110, 90)<br />
<br />
If: It is one of them -&gt; Check what RECT it refers to -&gt;<br />
If: It is not -&gt; Check if: G &lt;&gt; 3<br />
<br />
If: It is (G &lt;&gt; 3) -&gt; Check if: (G + 1) is divisible by 4<br />
--- If: It is not -&gt; Reject the input<br />
--- If: It is divisible -&gt; Check if: (R + 1) is divisible by 8 --(Move on)--&gt;<br />
If: It is not (G = 3) -&gt; Check if: R is divisible by 8 --(Move on)--&gt;<br />
<br />
If: It is not -&gt; Reject the input<br />
If: It is divisible -&gt; Check if: (B + 1) is divisible by 8<br />
<br />
If: It is not -&gt; Reject the input<br />
If: It is divisible -&gt; Check if: (R, G, B) is one of the four sets: (23, 83, 23), (71, 63, 31), (87, 83, 71) or (151, 119, 87)<br />
<br />
If: It is one of them -&gt; Reject the input<br />
If: It is not -&gt; (Calculate R, G, B to RECT) -&gt;<br />
<br />
-&gt; <span style="font-weight: bold;" class="mycode_b">Get RECT</span></blockquote><br />
Looks complicated in text. Besides this, we can complete the cycle after filling up the calculation process. Similar to RECT to RGB, there are two algorithms, one with one step more, for being exchanging to R'G'B', finally then to RECT, instead of directly to RECT. The longer algorithm here is<br />
<br />
<blockquote class="mycode_quote"><cite>Exchange Cycle Algorithm ... Wrote:</cite>(If: The color is permitted) -&gt; Convert R, G, B to R'G'B' individually -&gt; Combine R'G'B' into RECT -&gt; <span style="font-weight: bold;" class="mycode_b">Get RECT</span></blockquote><br />
For the shorter algorithm, this time it is not that simple since there are two alternatives. It can be that simple if we take the general formula, but it is a bit complex for manual calculations and there is replacement for most cases, so an alternative is developed.<br />
<br />
<blockquote class="mycode_quote"><cite>Alternative 1: Exchange Cycle Algorithm ... Wrote:</cite>(If: The color is permitted) -&gt; Apply the general R, G, B to RECT formula -&gt; <span style="font-weight: bold;" class="mycode_b">Get RECT</span></blockquote><blockquote class="mycode_quote"><cite>Alternative 2: Exchange Cycle Algorithm ... Wrote:</cite>(If: The color is permitted) -&gt; Check if: G = 3<br />
<br />
If: Yes -&gt; Assign G = 259 -&gt; Check if: R = 0<br />
--- If: Yes -&gt; Assign R = 255 -&gt;<br />
--- If: No -&gt; Subtract R by 1 -&gt;<br />
If: No -&gt;<br />
<br />
-&gt; Apply the R, G, B to RECT formula for G &lt;&gt; 3 -&gt; <span style="font-weight: bold;" class="mycode_b">Get RECT</span></blockquote><br />
The cycle is now completed, in text or algorithms or pseudo-codes or whatever. It is quite hard to read and confuses us, maybe a graphical representation would be better. Here I present the only picture of this article:<br />
<br />
<div style="text-align: center;" class="mycode_align"><a href="http://s713.photobucket.com/user/deep19752/media/IMG_0003.jpg.html?sort=3&amp;o=0" target="_blank" rel="noopener" class="mycode_url"><img src="http://i713.photobucket.com/albums/ww138/deep19752/IMG_0003.jpg" alt="[Image: IMG_0003.jpg]" class="mycode_img" /></a><br />
(click for zoom in options)</div>
<br />
It is presented in a flowchart. Basically, rounded rectangles represent starting and ending points, parallelograms represent processes, and rhombuses represent conditional checks. Cases are one type of conditional check with multiple possibility, while normal checks only have "yes" or "no" -- "TRUE" or "FALSE" results. The "←" sign represents assignments, a process mentioned in <span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 7.3</span></span>, which set the value of the left-hand-side variable to the result of the right-hand-side. The symbol "=" with a "←" above means the same as "←" assignment, just to retain the equal sign since we have used it in all our equations discussed. By following this flowchart properly, you should be able to perform the necessary calculations.<br />
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: x-large;" class="mycode_size">9.3</span></div>
<span style="text-decoration: underline;" class="mycode_u">9.3 - Formulas for Secondary Base Colors</span><br />
<br />
At least, I have heard people asking for RECT values for perfect grey. From this, I also think about deriving perfect secondary base colors such as yellow (red + green), aqua (green + blue) and purple (red + blue). It is not complicated, only to assume two colors have the same depth, and one is always zero; or all colors have the same for grey. The only trick is to use g' instead of G'. Recall the R'g'B' to RECT formula,<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b">RECT = 2048R' + 64g' + 32g'' + B'</span></div>
<br />
For yellow, let it be Y', and Y' = R' = g', g'' = B' = 0. Formula:<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">RECT = 2112Y'</span></span></div>
<br />
For aqua, let it be A', and A' = g' = B', R' = g'' = 0. Formula:<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">RECT = 65A'</span></span></div>
<br />
For purple, let it be P', and P' = R' = B', g' = g'' = 0. Formula:<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">RECT = 2049P'</span></span></div>
<br />
For grey, let it be Gr', and Gr' = R' = g' = B', g'' = 0. Formula:<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">RECT = 2113Gr'</span></span></div>
<br />
Y', A', P' and Gr' are all integers in a scale ranged 0 to 31, as R', G' and B' do. Regarding the Y' to Y (in RGB scale), A' to A, etc. formulas, they are the same as the B' to B formula (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6.2</span></span>),<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">B = 8B' + 7</span></span></div>
<br />
With only a replacement of variable names.<br />
<br />
<br />
<br />
<div style="text-align: right;" class="mycode_align"><span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">10</span></span></div>
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Summary</span></span><br />
<br />
This short passage summarizes our discussion so far.<br />
<br />
RECT is a color code used in LF2 background files, uses integers ranged 0 to 65535 to represent three base colors linearly. The base colors are red, green and blue; there are 32, 64 and 32 distinct depths respectively available in RECT representation (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 4</span></span>). Representing colors linearly means combining the three variables into one, works like hexadecimal RGB (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 3</span></span>) or LF2 stage id: (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 2</span></span>). Component variables are stored in cycles. By performing division on RECT and consider the dividends and remainders, cycles and individual color depths can be "decrypted". By converting RECT into binary is also a possible method since the component ranges are in powers of 2 (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 5</span></span>). Due to the 32- and 64-depths sets nature, real RGB values jumps in 8 or in 4 as RECT changes (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6</span></span>). <span style="font-style: italic;" class="mycode_i">Because of a need of pure white and system optimization in developing RECT codes</span>, (R, G, B) starts from (7, 7, 7) as RECT starts from 0, and green ends a cycle at 3 in RGB scale weirdly as the green component of RECT reachs its peak (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6.1</span></span>).<br />
<br />
For the RECT and RGB exchanging formulas, they are discussed step by step. First from a derived system of R'G'B', from RECT (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 5</span></span>), lead to possibly discuss R' and R, G' and G, and B' and B exchanges (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 6</span></span>), then re-combined for exchanging RECT and R, G, B (Part 7), finally some special preset RECT to RGB linkages (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 8</span></span>). During these parts we gradually translate texts and ideas into mathematical equations, and repeatedly fixing them by considering wider possibilities of inputs. Towards the end, we are focusing on the systems RECT, and R, G, B separately as they are the two we data changers would use. To summarize all the mathematical discussions, all rules and formulas are listed (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 9.1</span></span>) and the Exchange Cycle has been drawn for the following of manually exchanging the two system (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 9.2</span></span>). Last but not least, at the very last part some other basic colors are also considered into deriving to-RECT formulas: perfect yellow, aqua, purple and grey (<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Part 9.3</span></span>).<br />
<br />
With completing the entire discussion, we now can understand how RECT works and is recorded, then make use of our understanding of the whole process to create our own backgrounds, or fix others'. However, due to the limitation of RECT, and digital storage is decreasingly being an issue nowadays, it is not a serious problem to use .bmp to replace the RECT-coded areas. Still, understanding one of the long-recognized more advanced coding systems in LF2 data changing in such extent, could be a nice satisfaction.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Tutorial For Measuring Coords. [EASIEST WAY]]]></title>
			<link>https://lf-empire.de/forum/showthread.php?tid=7866</link>
			<pubDate>Fri, 25 May 2012 15:33:39 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://lf-empire.de/forum/member.php?action=profile&uid=4504">Rhino.Freak</a>]]></dc:creator>
			<guid isPermaLink="false">https://lf-empire.de/forum/showthread.php?tid=7866</guid>
			<description><![CDATA[In case you STILL don't know how to measure the values for x,y,w,h please refer to this tutorial of mine, thanx, hope it helps ya! <img src="https://lf-empire.de/forum/images/smilies/biggrin.gif" alt=":D" title=":D" class="smilie smilie_20" /><br />
<br />
<img src="http://i45.servimg.com/u/f45/16/05/88/52/tut10.png" alt="[Image: tut10.png]" class="mycode_img" /><br />
<img src="http://i45.servimg.com/u/f45/16/05/88/52/tut210.png" alt="[Image: tut210.png]" class="mycode_img" />]]></description>
			<content:encoded><![CDATA[In case you STILL don't know how to measure the values for x,y,w,h please refer to this tutorial of mine, thanx, hope it helps ya! <img src="https://lf-empire.de/forum/images/smilies/biggrin.gif" alt=":D" title=":D" class="smilie smilie_20" /><br />
<br />
<img src="http://i45.servimg.com/u/f45/16/05/88/52/tut10.png" alt="[Image: tut10.png]" class="mycode_img" /><br />
<img src="http://i45.servimg.com/u/f45/16/05/88/52/tut210.png" alt="[Image: tut210.png]" class="mycode_img" />]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[cursed itr [Signed 32-bit 2^32-1]]]></title>
			<link>https://lf-empire.de/forum/showthread.php?tid=7523</link>
			<pubDate>Thu, 23 Feb 2012 18:13:46 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://lf-empire.de/forum/member.php?action=profile&uid=12">YinYin</a>]]></dc:creator>
			<guid isPermaLink="false">https://lf-empire.de/forum/showthread.php?tid=7523</guid>
			<description><![CDATA[this is, what i will call a cursed itr<br />
you have it implemented correctly when it hits a character twice (opponent/teammate/yourself whoever you want to curse)<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;DC-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="dc" style="font-family&#58;monospace;"><span style="color&#58; #800000; font-weight&#58; bold;">wait&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span>
<span style="color&#58; #008040; font-weight&#58; bold;">itr&#58;</span>
<span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span> <span style="color&#58; #800000; font-weight&#58; bold;">vrest&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">4</span> <span style="color&#58; #800000; font-weight&#58; bold;">fall&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">70</span> <span style="color&#58; #800000; font-weight&#58; bold;">bdefend&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">100</span> <span style="color&#58; #800000; font-weight&#58; bold;">injury&#58;</span> -<span style="color&#58; #000000; font-weight&#58; bold;">2147483648</span>
<span style="color&#58; #008040; font-weight&#58; bold;">itr&#95;end&#58;</span></pre></code></div></div>
		</td></tr></table><br />
the effect is, that it first kills and then revives you back to the exact amount of hp you had (injury: 2147483648 will work as well)<br />
you can do this with two separate itrs in different frames too but i thought this is the safest way<br />
<br />
now after being hit twice with this injury there are either of these two things changed about the hit character:<br />
<span style="font-style: italic;" class="mycode_i">either </span>empty, unlimited mp and no hp regain<br />
<span style="font-weight: bold;" class="mycode_b">[better than F6 but no dark red hp]</span><br />
<span style="font-style: italic;" class="mycode_i">or </span>empty mp and unlimited hp regain<br />
<span style="font-weight: bold;" class="mycode_b">[regaining hp over the limit of 500]</span><br />
i think i have also seen these two combined when using it multiple times<br />
or in fact nullified again - it's all a bit random<br />
<br />
help me test this to find out whether these effects are really random or have some kind of dependencies to get the one you want (a boss with truly unlimited mp or constant hp regain without some lousy hack anyone?)]]></description>
			<content:encoded><![CDATA[this is, what i will call a cursed itr<br />
you have it implemented correctly when it hits a character twice (opponent/teammate/yourself whoever you want to curse)<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;DC-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="dc" style="font-family&#58;monospace;"><span style="color&#58; #800000; font-weight&#58; bold;">wait&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">1</span>
<span style="color&#58; #008040; font-weight&#58; bold;">itr&#58;</span>
<span style="color&#58; #800000; font-weight&#58; bold;">kind&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">0</span> <span style="color&#58; #800000; font-weight&#58; bold;">vrest&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">4</span> <span style="color&#58; #800000; font-weight&#58; bold;">fall&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">70</span> <span style="color&#58; #800000; font-weight&#58; bold;">bdefend&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">100</span> <span style="color&#58; #800000; font-weight&#58; bold;">injury&#58;</span> -<span style="color&#58; #000000; font-weight&#58; bold;">2147483648</span>
<span style="color&#58; #008040; font-weight&#58; bold;">itr&#95;end&#58;</span></pre></code></div></div>
		</td></tr></table><br />
the effect is, that it first kills and then revives you back to the exact amount of hp you had (injury: 2147483648 will work as well)<br />
you can do this with two separate itrs in different frames too but i thought this is the safest way<br />
<br />
now after being hit twice with this injury there are either of these two things changed about the hit character:<br />
<span style="font-style: italic;" class="mycode_i">either </span>empty, unlimited mp and no hp regain<br />
<span style="font-weight: bold;" class="mycode_b">[better than F6 but no dark red hp]</span><br />
<span style="font-style: italic;" class="mycode_i">or </span>empty mp and unlimited hp regain<br />
<span style="font-weight: bold;" class="mycode_b">[regaining hp over the limit of 500]</span><br />
i think i have also seen these two combined when using it multiple times<br />
or in fact nullified again - it's all a bit random<br />
<br />
help me test this to find out whether these effects are really random or have some kind of dependencies to get the one you want (a boss with truly unlimited mp or constant hp regain without some lousy hack anyone?)]]></content:encoded>
		</item>
	</channel>
</rss>