Author Topic: [BUG][PLAYER] Zombies don't always infect Blockers  (Read 1580 times)

0 Members and 1 Guest are viewing this topic.

Offline Crane

  • Posts: 1081
    • View Profile
[BUG][PLAYER] Zombies don't always infect Blockers
« 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.
« Last Edit: September 25, 2019, 03:14:36 PM by Crane »

Offline Crane

  • Posts: 1081
    • View Profile
Re: [BUG][PLAYER] Zombies don't always infect Blockers
« Reply #1 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.

Offline namida

  • Administrator
  • Posts: 12399
    • View Profile
    • NeoLemmix Website
Re: [BUG][PLAYER] Zombies don't always infect Blockers
« Reply #2 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.
My Lemmings projects
2D Lemmings: NeoLemmix (engine) | Lemmings Plus Series (level packs) | Doomsday Lemmings (level pack)
3D Lemmings: Loap (engine) | L3DEdit (level / graphics editor) | L3DUtils (replay / etc utility) | Lemmings Plus 3D (level pack)

Offline Crane

  • Posts: 1081
    • View Profile
Re: [BUG][PLAYER] Zombies don't always infect Blockers
« Reply #3 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).

Offline namida

  • Administrator
  • Posts: 12399
    • View Profile
    • NeoLemmix Website
Re: [BUG][PLAYER] Zombies don't always infect Blockers
« Reply #4 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.
My Lemmings projects
2D Lemmings: NeoLemmix (engine) | Lemmings Plus Series (level packs) | Doomsday Lemmings (level pack)
3D Lemmings: Loap (engine) | L3DEdit (level / graphics editor) | L3DUtils (replay / etc utility) | Lemmings Plus 3D (level pack)

Offline namida

  • Administrator
  • Posts: 12399
    • View Profile
    • NeoLemmix Website
Re: [BUG][PLAYER] Zombies don't always infect Blockers
« Reply #5 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."
My Lemmings projects
2D Lemmings: NeoLemmix (engine) | Lemmings Plus Series (level packs) | Doomsday Lemmings (level pack)
3D Lemmings: Loap (engine) | L3DEdit (level / graphics editor) | L3DUtils (replay / etc utility) | Lemmings Plus 3D (level pack)