Minimap floor tiles and note

This commit is contained in:
dazedanon 2025-12-20 12:11:11 -06:00
parent 714a90759c
commit 1f1bd5e300
2 changed files with 32 additions and 12 deletions

View file

@ -132480,7 +132480,7 @@
"addLog",
"テキストをログウィンドウに追加",
{
"text": "Note \\C[6]\\v[313]\\c[0] inserted into the notebook"
"text": "Memo \"\\C[6]\\v[313]\\c[0]\" put in notebook"
}
]
},

View file

@ -379,29 +379,49 @@
const tiles = $gameMap.allTiles(x, y);
let hasFloorTile = false;
// Look for actual floor/ground tiles (A1, A2, A5 are typically ground)
// Look for actual floor/ground tiles
// RPG Maker MZ Tileset Layout:
// A1 (animated/water): 2048-2815 - water, waterfalls, poison swamps, lava
// A2 (ground): 2816-4351 - grass, dirt, stone floors
// A3 (buildings): 4352-5887 - roofs and building exteriors
// A4 (walls): 5888-8191 - wall tops
// A5 (normal tiles): 1536-1663 - simple ground tiles
// B-E tiles: start at different offsets for decoration
for (const tileId of tiles) {
if (tileId === 0) continue;
// A1 (animated tiles) start at 2048 in autotile range but have ID < 256 after processing
// A2 (ground) tiles: 2816-4351
// A5 (normal ground): 1536-1663
// B-E tiles: 0-255 (in tileset index)
// Check if this is a typical ground tile
// A5 tiles (ground): 1536-1663
// A5 tiles (simple ground): 1536-1663
if (tileId >= 1536 && tileId < 1664) {
hasFloorTile = true;
break;
}
// A1 tiles (water/animated - including poison, lava, swamps): 2048-2815
if (tileId >= 2048 && tileId < 2816) {
hasFloorTile = true;
break;
}
// A2 tiles (ground autotiles): 2816-4351
if (tileId >= 2816 && tileId < 4352) {
hasFloorTile = true;
break;
}
// A1 tiles (water/animated): 2048-2815 - these are NOT ground
// A3 tiles (building): 4352-5887 - could be walls
// A4 tiles (wall top): 5888-8191 - definitely walls
// B-E tiles can also be walkable floors (tile ID encoding varies)
// These are typically in lower ranges and used for details/overlays
// If a B-E tile is passable, it should be considered ground
if (tileId > 0 && tileId < 1536) {
// This is a B-E tile, check if it's passable via flags
const flags = $gameMap.tilesetFlags();
const flag = flags[tileId];
if (flag !== undefined && (flag & 0x10) === 0) {
// Not star passability (not an overlay) - could be floor
if ((flag & 0x0F) !== 0x0F) {
// Not fully blocked
hasFloorTile = true;
break;
}
}
}
}
// Consider passable only if: passage check passes AND has a floor tile