<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.zzt.org/w/index.php?action=history&amp;feed=atom&amp;title=Blink_wall</id>
	<title>Blink wall - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.zzt.org/w/index.php?action=history&amp;feed=atom&amp;title=Blink_wall"/>
	<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Blink_wall&amp;action=history"/>
	<updated>2026-04-16T14:44:50Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=Blink_wall&amp;diff=559&amp;oldid=prev</id>
		<title>RT-55J: Ejection logic correction</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Blink_wall&amp;diff=559&amp;oldid=prev"/>
		<updated>2025-12-23T01:01:15Z</updated>

		<summary type="html">&lt;p&gt;Ejection logic correction&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 01:01, 23 December 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l35&quot;&gt;Line 35:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 35:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Player Ejection ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Player Ejection ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;If the &quot;restart on zap&quot; flag for a board is set, then the player is sent back to the start of the board when they are hit.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;If the &quot;restart on zap&quot; flag for a board is set, then the player is sent back to the start of the board when they are hit&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. Otherwise, the game attempts to eject the player&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;If the player is hit by a horizontal blink wall ray, the game &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;tries &lt;/del&gt;to &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;eject &lt;/del&gt;them &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;up one tile&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;If that is not possible &lt;/del&gt;the game &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;tries &lt;/del&gt;to &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;eject &lt;/del&gt;them &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;down one tile&lt;/del&gt;. If &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;that &lt;/del&gt;is &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;not possible &lt;/del&gt;the game &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;damages &lt;/del&gt;the player &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;again&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;If the player is hit by a horizontal blink wall ray, the game &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;first checks if the tile &lt;/ins&gt;to &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the north is empty and ejects &lt;/ins&gt;them &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;there if so&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Otherwise, &lt;/ins&gt;the game &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;checks if the tile &lt;/ins&gt;to &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the south is empty and ejects &lt;/ins&gt;them &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;there if so&lt;/ins&gt;. If &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;neither tile &lt;/ins&gt;is &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;empty, &lt;/ins&gt;the game &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;instantly kills &lt;/ins&gt;the player.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;If the player is hit by a vertical blink wall ray, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;due &lt;/del&gt;to &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;a bug &lt;/del&gt;the game &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;will &lt;/del&gt;&#039;&#039;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;always&lt;/del&gt;&#039;&#039; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;try &lt;/del&gt;to &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;eject &lt;/del&gt;the player to &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the right&lt;/del&gt;. If &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;that &lt;/del&gt;is &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;not possible &lt;/del&gt;the game &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;damages &lt;/del&gt;the player &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;again&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;If the player is hit by a vertical blink wall ray, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the game first checks if the tile &lt;/ins&gt;to &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the east is empty and ejects them there if so. Otherwise, &lt;/ins&gt;the game &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;checks if the tile to the &lt;/ins&gt;&#039;&#039;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;west&lt;/ins&gt;&#039;&#039; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;is empty, and ejects them &lt;/ins&gt;to &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the &#039;&#039;east&#039;&#039; if so. This bug allows &lt;/ins&gt;the player to &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;clip through solid walls&lt;/ins&gt;. If &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;neither the tile to the east or west &lt;/ins&gt;is &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;empty, &lt;/ins&gt;the game &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;instantly kills &lt;/ins&gt;the player.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{ElementsNavbox}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{ElementsNavbox}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>RT-55J</name></author>
	</entry>
	<entry>
		<id>https://wiki.zzt.org/w/index.php?title=Blink_wall&amp;diff=556&amp;oldid=prev</id>
		<title>RT-55J: Created page with &quot;{{Element |zzt-oop name=Blink Wall |id={{Byte|29}} |char={{CharSwatch|206}} |category=Terrain |stats=yes |x-y step=Wall Direction |cycle=1 |p1=Starting time |p2=Period |p3=Timer |destructible=No |effect on movement=Wall |uses zzt-oop color=Yes }}  A &#039;&#039;&#039;blink wall&#039;&#039;&#039; is a device that periodically emits blink wall rays, which can act as obstacles to the player, enemies, and objects.  When emitting a blink wall ray, the game iterates over every tile in th...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.zzt.org/w/index.php?title=Blink_wall&amp;diff=556&amp;oldid=prev"/>
		<updated>2025-12-23T00:31:16Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;{{Element |zzt-oop name=Blink Wall |id={{Byte|29}} |char={{CharSwatch|206}} |category=Terrain |stats=yes |x-y step=Wall Direction |cycle=1 |p1=Starting time |p2=Period |p3=Timer |destructible=No |effect on movement=Wall |uses zzt-oop color=Yes }}  A &amp;#039;&amp;#039;&amp;#039;blink wall&amp;#039;&amp;#039;&amp;#039; is a device that periodically emits &lt;a href=&quot;/wiki/Blink_wall_ray&quot; title=&quot;Blink wall ray&quot;&gt;blink wall rays&lt;/a&gt;, which can act as obstacles to the player, enemies, and objects.  When emitting a blink wall ray, the game iterates over every tile in th...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Element&lt;br /&gt;
|zzt-oop name=Blink Wall&lt;br /&gt;
|id={{Byte|29}}&lt;br /&gt;
|char={{CharSwatch|206}}&lt;br /&gt;
|category=Terrain&lt;br /&gt;
|stats=yes&lt;br /&gt;
|x-y step=Wall Direction&lt;br /&gt;
|cycle=1&lt;br /&gt;
|p1=Starting time&lt;br /&gt;
|p2=Period&lt;br /&gt;
|p3=Timer&lt;br /&gt;
|destructible=No&lt;br /&gt;
|effect on movement=Wall&lt;br /&gt;
|uses zzt-oop color=Yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
A &amp;#039;&amp;#039;&amp;#039;blink wall&amp;#039;&amp;#039;&amp;#039; is a device that periodically emits [[blink wall ray|blink wall rays]], which can act as obstacles to the player, enemies, and objects.&lt;br /&gt;
&lt;br /&gt;
When emitting a blink wall ray, the game iterates over every tile in the direction it is facing placing rays until it runs into a tile that is non-empty and non-destructible ([[breakable|breakable walls]] are non-destructible for this purpose). If the blink wall hits a player, the game tries to eject the player, and stops if it cannot do so.&lt;br /&gt;
&lt;br /&gt;
When deleting a blink wall ray, the game deletes every tile in the direction of the blink wall until it runs into a tile that is not the corresponding type of blink wall ray &amp;#039;&amp;#039;and&amp;#039;&amp;#039; is not the same color as the blink wall itself.&lt;br /&gt;
&lt;br /&gt;
Blink walls support non-standard x/y-step values, If the x-step of a blink wall is 0, then it emits vertical blink wall rays. Otherwise, it emits horizontal blink wall rays.&lt;br /&gt;
&lt;br /&gt;
Because blink walls use their x and y steps as parameters and act every tick by default, they are especially vulnerable to the &amp;quot;[[diemove]]&amp;quot; bug.&lt;br /&gt;
&lt;br /&gt;
== Timing Details ==&lt;br /&gt;
&lt;br /&gt;
Blink walls run at cycle 1 by default. On their first cycle, the game sets their internal timer (P3) to the value of &amp;lt;code&amp;gt;P1 + 1&amp;lt;/code&amp;gt;. This internal timer decreases every tick until it reaches 1.&lt;br /&gt;
&lt;br /&gt;
When the internal timer (P3) reaches 1, the blink wall spends a cycle either emitting or erasing a blink wall ray, and then sets the internal timer to the value of &amp;lt;code&amp;gt;(P2 * 2) + 1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
A blink wall determines whether it should emit or erase a blink wall ray based on whether the first tile in front of it is a ray of the proper element type and color. Due to this fact, it is possible under particular circumstances for them to become desynchronized by half a cycle (e.g. because of a bomb explosion).&lt;br /&gt;
&lt;br /&gt;
== Player Ejection ==&lt;br /&gt;
&lt;br /&gt;
If the &amp;quot;restart on zap&amp;quot; flag for a board is set, then the player is sent back to the start of the board when they are hit.&lt;br /&gt;
&lt;br /&gt;
If the player is hit by a horizontal blink wall ray, the game tries to eject them up one tile. If that is not possible the game tries to eject them down one tile. If that is not possible the game damages the player again.&lt;br /&gt;
&lt;br /&gt;
If the player is hit by a vertical blink wall ray, due to a bug the game will &amp;#039;&amp;#039;always&amp;#039;&amp;#039; try to eject the player to the right. If that is not possible the game damages the player again.&lt;br /&gt;
&lt;br /&gt;
{{ElementsNavbox}}&lt;/div&gt;</summary>
		<author><name>RT-55J</name></author>
	</entry>
</feed>