I believe this behavior is working as intended.
If you want to make this facing-dependent, I think you can use
yanfly's encounter aid as a workaround. Don't turn on the encounter direction lock, and just have your pillar events include a wrapper based on "
this.checkEventFacingPlayerFront()". That should mean that the pillar events all turn to face the player when they get interacted with, but only the one that the player is facing towards is going to actually trigger your code.
It might be a decent idea to safety-proof things a bit by making the colliders on map tiles one-way pointing out, so a character that gets stuck inside a wall can always move to an adjacent clear spot. IIRC that's how RMMV handles characters embedded in walls already.
Wouldn't eliminate the problem entirely, but does mean that nobody's getting softlocked by clipping one tile into a wall.
Late response but, it is because I'm trying to give this plugin another chance
I still have the issue, and your solution won't work as it also triggers both events of the same direction
If there's two NPCs standing next to each other and I press the action button while standing right between them, it will trigger both event and the dialogue box will open twice.
EDIT : I added a
break statement in the loop after the starting of an event when the script looks for triggerable events. It seems to work but anyone can tell me if I should do that ?
here's the portion of code I'm talking about :
JavaScript: // Test collision with characters
for ( var ii = 0; ii < events.length; ii++ ) {
var entryX = events[ii]._x;
var entryY = events[ii]._y;
if ( loopMap[events[ii]] == 1 ) { entryX += $gameMap.width(); }
else if ( loopMap[events[ii]] == 2 ) { entryX -= $gameMap.width(); }
else if ( loopMap[events[ii]] == 3 ) { entryY += $gameMap.height(); }
else if ( loopMap[events[ii]] == 4 ) { entryY -= $gameMap.height(); }
else if ( loopMap[events[ii]] == 5 ) { entryX += $gameMap.width(); entryY += $gameMap.height(); }
else if ( loopMap[events[ii]] == 6 ) { entryX -= $gameMap.width(); entryY += $gameMap.height(); }
else if ( loopMap[events[ii]] == 7 ) { entryX += $gameMap.width(); entryY -= $gameMap.height(); }
else if ( loopMap[events[ii]] == 8 ) { entryX -= $gameMap.width(); entryY -= $gameMap.height(); }
if ( events[ii].isNormalPriority() && Collider.intersect( this._x + vx, this._y + vy, collider, entryX, entryY, events[ii].collider() ) ) {
// Normal priority player-touch/event-touch
events[ii].start();
break; //THE BREAK I ADDED
} else if ( events[ii]._trigger === 2 ) {
// Event touch is encasing
if ( Collider.encase( entryX, entryY, events[ii].collider(), this._x, this._y, collider ) || Collider.encase( this._x, this._y, collider, entryX, entryY, events[ii].collider() ) ) {
events[ii].start();
}
} else if ( Collider.intersect( this._x, this._y, collider, entryX, entryY, events[ii].collider() ) ) {
events[ii].start();
}
}
EDIT 2 : I have another issue unrelated to the first one. When using the MOVE TO command of YEP_MoveRouteCore, the game starts to terribly lag