The one thing that comes to mind is when should the blocker field be removed?
In the case of teleporters, should it disappear immediately and be restored only when the lemming is "freed" from the receiver?
In the case of a trap, should it remain until the trap animation is finished?
The reason for putting this forward is that we already have one special case where a blocker field remains on a non-blocker - when the blocker becomes an OhNoer.
There is one difference: OhNoers are still standing at the blocker's position and act of their own will (as much as lemmings ever do that). So they can still communicate to other lemmings that they should turn around.
Teleporting lemmings on the other hand are simply nowhere on the level, so how can they interact with other lemmings? And when would we switch the position of the blocker field to the receiver? If we do when the receiver starts working, then the blocker field appears before the lemming arrives there. If we only add it once the receiver animation is finished, then we have a blocker field in front of a non-working teleporter for a time.
For lemmings that are killed by traps: I personally consider them dead the moment the animation starts, because in the last frames of the animation, the bits and pieces that remain are certainly no longer a living lemming. And I have a hard time believing, that a dead lemming within a trap can still maintain a blocker field, especially if the trap moves the lemming away as e.g. the chameleon or the rope trap (pillar style) do. (On a side note: As we currently remove lemmings when triggering a trap, keeping blocker fields would mean rather big changes in the code here).
For these reasons, the blocker fields for teleported or trapped lemmings are currently removed on encountering the trigger area, and only reset (in the case of teleporters) when the lemming appears again at the receiver.
Also - what you describe with splitters would not happen, I don't think. Unless you've changed this, when a lemming enters a splitter's trigger area (regardless of whether or not it causes a change in direction), it gains immunity to that splitter (but not other splitters) until it has spent one frame outside the splitter's trigger area.
Thanks, I forgot about this. But either way, splitters don't interact with blockers, so no harm in keeping the current code.
Otherwise, one alternative solution could simply be to add Ohnoer to the conditions that are not eligible to disarm (and thus they would get trapped). This already applies for most other states that aren't walkers.
Very good point. OhNoers disarming traps doesn't make any sense. This bug was even present before changing the blocker behavior:
Using the trick of LPIII, Fierce 1 "Dead is the new black", it is already possible to get OhNoers onto trigger areas, if the trigger areas reach exactly to the top of the terrain, but not above*. They then start disarming and forget to explode...
* Actually due to another bug introduced by doing intermediate checks, the trigger area may sometimes reach one or two pixels above the terrain and will still get disarmed. The lemming will then disarm the trap while hovering in the air...