Aquileo | Recent changes to 690: Vanilla compatible bossactionshttps://sourceforge.net/p/doomlegacy/bugs/690/Recent changes to 690: Vanilla compatible bossactionsenWed, 23 Aug 2023 10:30:01 -0000Aquileo | #690 Vanilla compatible bossactionshttps://sourceforge.net/p/doomlegacy/bugs/690/?limit=25#31f1<div class="markdown_content"><p>This problem is similar to my voodoo doll problem from #688.<br/>
The switch was already present, but I overlooked it.</p>
<p>Today it seems that nobody uses Doom Legacy for testing new WADs anymore.<br/>
People use Crispy for Limit removing, PrBoom+/DSDA for Boom, Woof for MBF and GZDoom otherwise to test if their new WAD "works".<br/>
Very few new WADs are created for Doom Legacy and its specific features.</p>
<p>Speaking as a player, not as a developer:<br/>
Facing reality I would propose to change the default behaviour to follow the engines listed above, for maximum compatibility, so that playing new WADs "just work".<br/>
Currently many of the new WADs do not work with Doom Legacy and the reasons are often minor "fixes", like in this case, not completely missing features like UMAPINFO.<br/>
It is annoying to search for such things every time, even if I get it working at the end.</p>
<p>To not break existing WADs, that use such specific Doom Legacy features, switches must be present to activate them again.<br/>
Maybe only a single switch "Activate old Doom Legacy behaviour"?<br/>
Otherwise, would it be possible to at least group them into a separate menu like "Doom Legacy specific features"?</p></div>Michael BäuerleWed, 23 Aug 2023 10:30:01 -0000https://sourceforge.net085845a87fc8851722a460fb8a95c7a2ce86d897Aquileo | #690 Vanilla compatible bossactionshttps://sourceforge.net/p/doomlegacy/bugs/690/?limit=25#c5ae<div class="markdown_content"><ul>
<li><strong>assigned_to</strong>: Wesley Johnson</li>
</ul></div>Wesley JohnsonTue, 22 Aug 2023 04:57:04 -0000https://sourceforge.netdda3023f0e286142096db8f9e9549c2b80a7d9e8Aquileo | Vanilla compatible bossactionshttps://sourceforge.net/p/doomlegacy/bugs/690/<div class="markdown_content"><p>Doom Legacy 1.48.12 uses a modified death check for boss actions.<br/>
Line 3548 in function A_Bosstype_Death():</p>
<div class="codehilite"><pre><span></span><code><span class="w"> </span><span class="o">//</span><span class="w"> </span><span class="k">Check</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">really</span><span class="w"> </span><span class="n">dead</span><span class="w"> </span><span class="ow">and</span><span class="w"> </span><span class="n">finished</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">death</span><span class="w"> </span><span class="k">sequence</span><span class="p">.</span>
<span class="w"> </span><span class="o">//</span><span class="w"> </span><span class="o">[</span><span class="n">WDJ</span><span class="o">]</span><span class="w"> </span><span class="n">Corpse</span><span class="w"> </span><span class="n">has</span><span class="w"> </span><span class="n">health</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mf">0.</span>
<span class="w"> </span><span class="o">//</span><span class="w"> </span><span class="k">If</span><span class="w"> </span><span class="n">two</span><span class="w"> </span><span class="n">monsters</span><span class="w"> </span><span class="k">are</span><span class="w"> </span><span class="n">killed</span><span class="w"> </span><span class="k">at</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">same</span><span class="w"> </span><span class="nc">time</span><span class="p">,</span><span class="w"> </span><span class="n">this</span><span class="w"> </span><span class="n">test</span><span class="w"> </span><span class="n">may</span><span class="w"> </span><span class="n">occur</span>
<span class="w"> </span><span class="o">//</span><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="k">first</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="n">corpse</span><span class="w"> </span><span class="ow">and</span><span class="w"> </span><span class="k">second</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="ow">not</span><span class="p">.</span><span class="w"> </span><span class="n">But</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">simple</span><span class="w"> </span><span class="n">health</span>
<span class="w"> </span><span class="o">//</span><span class="w"> </span><span class="n">test</span><span class="w"> </span><span class="n">may</span><span class="w"> </span><span class="k">trigger</span><span class="w"> </span><span class="n">twice</span><span class="w"> </span><span class="n">because</span><span class="w"> </span><span class="k">second</span><span class="w"> </span><span class="n">monster</span><span class="w"> </span><span class="n">already</span><span class="w"> </span><span class="n">has</span>
<span class="w"> </span><span class="o">//</span><span class="w"> </span><span class="n">health</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="n">during</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="k">first</span><span class="w"> </span><span class="n">death</span><span class="w"> </span><span class="n">test</span><span class="p">.</span>
<span class="w"> </span><span class="k">if</span><span class="p">(</span><span class="w"> </span><span class="n">mo2</span><span class="o">-></span><span class="n">health</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">//</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="k">old</span><span class="w"> </span><span class="n">test</span><span class="w"> </span><span class="p">(</span><span class="n">doom</span><span class="w"> </span><span class="n">original</span><span class="w"> </span><span class="mf">1.9</span><span class="p">)</span>
<span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="err">!</span><span class="p">(</span><span class="n">mo2</span><span class="o">-></span><span class="n">flags</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="n">MF_CORPSE</span><span class="p">)</span>
<span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="n">mo2</span><span class="o">-></span><span class="k">state</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">P_FinalState</span><span class="p">(</span><span class="n">mo2</span><span class="o">-></span><span class="n">info</span><span class="o">-></span><span class="n">deathstate</span><span class="p">)</span><span class="w"> </span><span class="p">)</span>
<span class="w"> </span><span class="err">{</span>
<span class="w"> </span><span class="o">//</span><span class="w"> </span><span class="n">other</span><span class="w"> </span><span class="n">boss</span><span class="w"> </span><span class="ow">not</span><span class="w"> </span><span class="n">dead</span>
<span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="nl">no_action</span><span class="p">;</span>
<span class="w"> </span><span class="err">}</span>
</code></pre></div>
<p>This can break WADs that expect the original behaviour. Example:<br/>
<a href="https://www.doomworld.com/idgames/levels/doom2/megawads/atone" rel="nofollow">https://www.doomworld.com/idgames/levels/doom2/megawads/atone</a><br/>
Map 01: Walk forward to the switch behind the first door. It will kill the enemies, but the doors do not open.</p>
<p>It works with the original test, like this:</p>
<div class="codehilite"><pre><span></span><code><span class="w"> </span><span class="nf">if</span><span class="p">(</span><span class="w"> </span><span class="n">mo2</span><span class="o">-></span><span class="n">health</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="c1">// the old test (doom original 1.9)</span>
<span class="cp">#if 0</span>
<span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="o">!</span><span class="p">(</span><span class="n">mo2</span><span class="o">-></span><span class="n">flags</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="n">MF_CORPSE</span><span class="p">)</span>
<span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="n">mo2</span><span class="o">-></span><span class="n">state</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">P_FinalState</span><span class="p">(</span><span class="n">mo2</span><span class="o">-></span><span class="n">info</span><span class="o">-></span><span class="n">deathstate</span><span class="p">)</span>
<span class="cp">#endif</span>
</code></pre></div>
<p>Maybe there should be a config option for this (I would suggest a default behaviour similar to vanilla Doom).</p></div>Michael BäuerleMon, 21 Aug 2023 14:06:36 -0000https://sourceforge.netcc948ee9f171339e2cbdc1a77b704f74232b57beAquileo | Vanilla compatible bossactionshttps://sourceforge.net/p/doomlegacy/bugs/690/<div class="markdown_content"><p>Ticket 690 has been modified: Vanilla compatible bossactions<br/>
Edited By: Wesley Johnson (wesleyjohnson)<br/>
Owner updated: None => 'wesleyjohnson'</p></div>Michael BäuerleMon, 21 Aug 2023 14:06:36 -0000https://sourceforge.net5b7d10ad3d0aa1655db47c7b40bb8bf7337895b4