Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

MCP inspect_map_region: passableForLandUnits is true for water and impassable cells

Abierto Apto para principiantes
#343 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
82/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
csharp
Área
backend

Línea de trabajo

Empieza en src/MapEditorMCP/Infos/CellInfo.cs, en el cálculo de passableForLandUnits, y compáralo con los lugares que llaman a la sobrecarga int de Helpers.IsLandTypeImpassable. Actualiza la transitabilidad indicada para que use el tipo de terreno TMP sin procesar y, después, ejecuta las pruebas pertinentes o compila para verificar que el agua y las celdas intransitables no se indiquen como transitables para unidades terrestres.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Version: 1.9.6 (d4e297f, also current master)

What happens

inspect_map_region (and other MCP tools that return CellInfo) report
passableForLandUnits: true for cells that are water or impassable.
Observed on a TEMPERATE river map: cells with landType: "Tunnel" (raw TMP
terrain type 9, river water) come back with passableForLandUnits: true and
passableForNavalUnits: true; cells with landType: "15" (impassable) also
come back land-passable.

Why

src/MapEditorMCP/Infos/CellInfo.cs (lines 72-76) casts the TMP terrain type
to the LandType enum and calls Helpers.IsLandTypeImpassable(LandType, true).
That overload only knows LandType.Rock (7) and LandType.Water (10):

public static bool IsLandTypeImpassable(LandType landType, bool considerLandUnitsOnly)
    => landType == LandType.Rock || (considerLandUnitsOnly && landType == LandType.Water);

Every other caller (MapIssueChecker, the overlay mutations,
TerrainGenerationMutation, MapView) uses the int overload, which treats
0x1-0x4, 0x9 and 0xA as water and 0x7, 0x8 and 0xF as impassable.
passableForNavalUnits is correct, because
IsLandTypeImpassableForNavalUnits(LandType) forwards to the int overload.

Suggested fix

!Helpers.IsLandTypeImpassable(subTileInfo.TmpImage.TerrainType, true)

Related, smaller: landType is ((LandType)TerrainType).ToString(), so
raw values 11-15 are printed as numbers and raw 9 (water in YR TMPs) is
printed as "Tunnel". MCP clients that read the name get the wrong idea;
exposing the raw value as well (e.g. landTypeId) would help.

Found while building an MCP client for the editor; we now classify by the raw
code on our side.

Lenguaje dominante
C#
Estrellas
148
Forks
49
Merge medio
4 d 9 h
PR fusionados (30 d)
1

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de CnCNet/WorldAlteringEditor

Todos los issues de CnCNet/WorldAlteringEditor

Issues similares

Más issues de C#

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.