Lemmings Forums

NeoLemmix => Bugs & Suggestions => Closed => Topic started by: Crane on September 25, 2019, 03:08:29 PM

Title: [BUG][PLAYER] Zombies don't always infect Blockers
Post by: Crane on September 25, 2019, 03:08:29 PM
If a Blocker is on a 45-degree slope, zombies walking downhill towards it will get turned around, but will not turn the Blocker into a zombie (unlike what happens if the Blocker is on flat ground).

My suggestion here to fix it, so as to not mess up some of the more precise levels when it comes to their field of influence, is to make an exceptional check... if a zombie is to be turned around by a Blocker's force field, it will always infect the Blocker that owns it.
Title: Re: [BUG][PLAYER] Zombies don't always infect Blockers
Post by: Crane on September 25, 2019, 03:28:20 PM
Here's a level showcasing it.  Also, there might be another bug there... look at the Walker icon.
Title: Re: [BUG][PLAYER] Zombies don't always infect Blockers
Post by: namida on September 25, 2019, 06:44:11 PM
I'm aware of (and have already fixed, in the source code) the Walker icon bug: https://www.lemmingsforums.net/index.php?topic=4385.0

I actually quite like your proposed solution here. I don't believe there are - or at least, there shouldn't be - any levels that already rely on the "blocker doesn't get infected" behaviour; and if there are, I feel they fall into "you really obviously shouldn't do this, so I'm not too worried if the level that does so breaks". The only question is how easy it would be to implement, as currently, a blocker check doesn't go as far as "which blocker turned the lemming around?", though the lack of ability to overlap blockers should make this easy enough to figure out.
Title: Re: [BUG][PLAYER] Zombies don't always infect Blockers
Post by: Crane on September 25, 2019, 10:54:39 PM
I dare say, I thought that a Blocker and its force fields are intrinsically tied together, since you have to make sure you remove the force fields if the Blocker ceases to be one (granted, just because something like TBlocker.LeftField exists doesn't mean that TField.Owner exists).
Title: Re: [BUG][PLAYER] Zombies don't always infect Blockers
Post by: namida on September 26, 2019, 12:38:15 AM
Quote
I dare say, I thought that a Blocker and its force fields are intrinsically tied together, since you have to make sure you remove the force fields if the Blocker ceases to be one (granted, just because something like TBlocker.LeftField exists doesn't mean that TField.Owner exists).

Not as linked as you're thinking. The blocker map just consists of "turn left here", "turn right here" or "can't assign blockers here but don't change direction of lemmings" data for each pixel. Removing a blocker field would simply be done by clearing the entire blocker map, then re-writing all fields of remaining blockers to it.
Title: Re: [BUG][PLAYER] Zombies don't always infect Blockers
Post by: namida on September 27, 2019, 04:45:39 AM
Fixed in commit c31015c (though the previous commit lays most of the groundwork for it).

The fix is done via a new rule: "When a zombie turns on a blocker, that blocker gets infected regardless of zombie trigger areas."