diff --git a/Source/automap.cpp b/Source/automap.cpp index 2e141bd8b..652ec2a94 100644 --- a/Source/automap.cpp +++ b/Source/automap.cpp @@ -732,7 +732,7 @@ void DrawAutomap(const Surface &out) for (int playerId = 0; playerId < MAX_PLRS; playerId++) { auto &player = Players[playerId]; - if (player.plrlevel == myPlayer.plrlevel && player.plractive && !player._pLvlChanging) { + if (player.plrlevel == myPlayer.plrlevel && player.plractive && !player._pLvlChanging && (&player == &myPlayer || player.friendlyMode)) { DrawAutomapPlr(out, myPlayerOffset, playerId); } } diff --git a/Source/lighting.cpp b/Source/lighting.cpp index 6273444f3..9e4e5ec23 100644 --- a/Source/lighting.cpp +++ b/Source/lighting.cpp @@ -1131,10 +1131,23 @@ void ProcessVisionList() if (vision._ldel) continue; + MapExplorationType doautomap = MAP_EXP_SELF; + if (!vision._lflags) { + doautomap = MAP_EXP_OTHERS; + for (const auto &player : Players) { + // Find player for this vision + if (!player.plractive || player.plrlevel != currlevel || player._pvid != vision._lid) + continue; + // Check that player allows automap sharing + if (!player.friendlyMode) + doautomap = MAP_EXP_NONE; + break; + } + } DoVision( vision.position.tile, vision._lradius, - vision._lflags ? MAP_EXP_SELF : MAP_EXP_OTHERS, + doautomap, vision._lflags); } bool delflag;