Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

Save the following code as a .js file and place it directly beneath this plugin - should fix your issue.

(() => {

  if (!Imported.Drag_TilemapMask || !Drag.TilemapMask) {

    console.warn("Drag_TilemapMask_MultiMaskNoFlashFix: Drag_TilemapMask.js is required.");

    return;

  }

  let _isRestoringMasks = false;

  const _originalSetMask = Drag.TilemapMask.setMask;

  Drag.TilemapMask.setMask = function(startX, endX, startY, endY, z, r, g, b, opacity, fadeInShaderDuration, excludeTransparentTiles) {

    if (!_isRestoringMasks) {

      $gameMap._tileMaskDataList = $gameMap._tileMaskDataList || [];

      $gameMap._tileMaskDataList.push({

        startX, endX, startY, endY,

        z, r, g, b,

        opacity, fadeInShaderDuration,

        excludeTransparentTiles

      });

    }

    _originalSetMask.apply(this, arguments);

  };

  const _originalClearMask = Drag.TilemapMask.clearMask;

  Drag.TilemapMask.clearMask = function() {

    _originalClearMask.apply(this, arguments);

    $gameMap._tileMaskDataList = [];

  };

  const _Scene_Map_start = Scene_Map.prototype.start;

  Scene_Map.prototype.start = function() {

    const maskList = $gameMap._tileMaskDataList;

    if (maskList && maskList.length > 0) {

      _isRestoringMasks = true;

      for (const mask of maskList) {

        Drag.TilemapMask.setMask(

          mask.startX, mask.endX,

          mask.startY, mask.endY,

          mask.z, mask.r, mask.g, mask.b,

          mask.opacity, mask.fadeInShaderDuration,

          mask.excludeTransparentTiles

        );

      }

      _isRestoringMasks = false;

    }

    _Scene_Map_start.call(this);

  };

})();