Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
SurveyorMap
Client-side configurable HUD minimap for R.E.P.O. with optional safe enemy markers.
CHANGELOG
Changelog — SurveyorMap
Este arquivo contém versão em Português e em Inglês. O Português vem primeiro; o English version is below.
This file includes Portuguese and English versions. Portuguese comes first; English version is below.
Português
v1.0.1 — 2026-06-04
Compatibilidade: R.E.P.O. Build 23250495 · BepInEx 5.4.2100
- Sem alterações de código. Publicação com categorias corretas no Thunderstore (Mods, Client-side, Quality Of Life) e badge atualizado no README.
v1.0.0 — 2026-06-02 (patch 11 — log mínimo, controles F8 invertidos, zoom fora do F8)
Compatibilidade: R.E.P.O. + BepInEx 5.4.2100
- Log mínimo com
DebugLogging=false. Com a config padrão, o SurveyorMap emite exatamente uma linha:[SurveyorMap] v1.0.0 loaded. BuildTag md5=<hash>. Tudo o mais (caminho da DLL, resumo de config, Edit mode ON/OFF, Edit mode reset) foi movido paraLogDbg, visível somente comDebugLogging=true. - Controles do F8 edit mode invertidos. Scroll do mouse agora controla o tamanho do minimapa (scroll para cima = maior, scroll para baixo = menor).
+/-agora controlam o zoom (zoom in = visão mais próxima/detalhada, zoom out = visão mais ampla).Shift+scrollremovido (redundante). - Nova config
EnableZoomHotkeysOutsideEdit = true(seção[EditMode]). Com esta opção ativa,+/-(teclado principal e numpad) ajustam o zoom do minimapa durante gameplay normal, sem precisar entrar no modo F8. Só funciona quando o minimapa está visível, o modo de edição está desativado e o TAB não está aberto. - Nenhuma alteração em minimap nativo, TAB, M, F8 camera freeze, inimigos, cores/formas ou RevealRoomsMode.
v1.0.0 — 2026-06-02 (patch 10 — congelar câmera via InputManager.DisableAiming)
Compatibilidade: R.E.P.O. + BepInEx 5.4.2100
- Correção definitiva do F8 edit mode. Diagnóstico completo do pipeline de mouse-look:
CameraAim.Update()→SemiFunc.InputMouseX/Y()→InputManager.GetMouseX/Y(), que verifica internamenteInputManager.disableAimingTimer. O patch anterior (CameraAimEditModePatch) nunca foi testado (o jogo rodou com DLL anterior). A correção real chamaInputManager.instance.DisableAiming()a cada frame enquanto o edit mode está ativo.InputManager.FixedUpdate()decrementa o timer a cada physics step; chamando noUpdate()a cada frame, o timer nunca expira eGetMouseX/Yretorna 0 constantemente. CameraAimEditModePatchmantido como segunda camada de proteção (suprimeCameraAim.Update()inteiramente quandoEditModeActive).- Nenhuma alteração em minimap, TAB, M, R reset, inimigos, cores/formas, cleanup ou RevealRoomsMode.
v1.0.0 — 2026-06-02 (patch 9 — câmera real congelada, logs silenciosos, config limpa, ícone premium)
Compatibilidade: R.E.P.O. + BepInEx 5.4.2100
- Câmera realmente congelada no F8. A abordagem anterior (
CameraAim.OverridePlayerAimDisable) não bloqueava o input de forma confiável. Substituída por patch Harmony emCameraAim.Update: enquanto o modo F8 está ativo, o método é suprimido inteiramente, impedindo que qualquer mouse delta chegue à câmera. Ao sair do F8, a supressão é removida eInput.ResetInputAxes()limpa qualquer delta acumulado. ShowEnemiesInUnexploredRoomsremovida como config pública. A feature era instável e já estava marcada como no-op. A entrada foi removida do código e do arquivo de configuração. Nenhuma funcionalidade foi perdida — todos os marcadores ativos já eram exibidos.DebugLogging=falseagora realmente silencia o log. ChamadasLog.LogInfo()eLog.LogDebug()diretas emNativeMapMirror.cs(TAB open/close, câmera encontrada, activeTexture null) foram convertidas paraLogDbg(). ComDebugLogging=false, o SurveyorMap emite apenas: BuildTag md5=, v1.0.0 loaded, config summary, Edit mode ON/OFF, Edit mode reset, warnings e erros reais. (O logging foi reduzido ainda mais no Patch 11: no estado final de release, apenas uma linha é emitida em condições normais.)- Novo ícone premium aplicado.
package/icon.pngsubstituído pelo arquivosurveyormap-v2-256.png(256×256). Master 1024px salvo emassets/icon/. - Nenhuma alteração em minimap, TAB, M, R reset, inimigos, cores/formas, cleanup ou RevealRoomsMode.
v1.0.0 — 2026-06-02 (patch 8 — suspensão de câmera no F8 edit mode)
Compatibilidade: R.E.P.O. + BepInEx 5.4.2100
- Nova config
FreezeCameraInEditMode = true(seção[EditMode]). Ao entrar no modo F8, a câmera do jogador é suspensa automaticamente usando a API nativa do jogo (CameraAim.OverridePlayerAimDisable). Mover o mouse edita o minimapa sem girar a câmera. - O controle da câmera é restaurado ao sair do modo F8, junto com o cursor.
- Implementação via API pública do jogo — sem patches, sem Windows API, sem simulação de ESC.
- Se
CameraAim.Instancefor nulo (fora de gameplay), o mod emite um aviso e continua sem travar. - Nenhuma alteração funcional: minimap, TAB, M, R reset, inimigos, cleanup, DebugLogging inalterados.
v1.0.0 — 2026-06-02 (patch 7 — cursor automático no F8 e revisão de documentação)
Compatibilidade: R.E.P.O. + BepInEx 5.4.2100
- Nova config
UnlockCursorInEditMode = true(seção[EditMode]). O cursor é liberado automaticamente ao pressionar F8 para entrar no modo de edição, sem precisar apertar ESC. O estado anterior do cursor é restaurado ao sair do modo de edição. - A liberação do cursor é reaplicada a cada frame enquanto o modo de edição estiver ativo, garantindo que o jogo não reloque o mouse durante a edição.
- Ao alternar o modo de edição,
Input.ResetInputAxes()é chamado para evitar movimento residual da câmera. - Se o jogo ainda capturar o mouse após F8, pressione ESC uma vez para liberar manualmente.
- Revisão editorial da documentação: acentuação e pontuação em português corrigidas em README e CHANGELOG.
- Nenhuma alteração funcional: minimap, TAB, M, R reset, inimigos, cleanup, DebugLogging inalterados.
v1.0.0 — 2026-06-02 (patch 6 — log cleanup: DebugLogging=false)
Compatibilidade: R.E.P.O. + BepInEx 5.4.2100
- Nova config
DebugLogging = false(seção[Debug]). Por padrão, o log fica silencioso em uso normal. AtiveDebugLogging = trueapenas para diagnóstico de classificação de inimigos, sweep e room tracking. - Logs movidos para debug condicional:
Sweep: active=,Enemy marker: id=,Map.AddCustom OK,Room explored (new),AddMarker skipped,M toggle,Patched EnemyHealth.*. - Logs que continuam sempre visíveis (à época deste patch): BuildTag md5=, plugin carregado, resumo de config, Edit mode ON/OFF, Edit mode reset, warnings e erros reais. (O escopo foi reduzido nos patches 9 e 11; no estado final de release, apenas uma linha é emitida.)
- Nenhuma alteração funcional: cores, formas, cleanup, scale, TAB/M/F8/R inalterados.
v1.0.0 — 2026-06-02 (patch 5 — alinhamento visual: cor = ameaça)
Compatibilidade: R.E.P.O. + BepInEx 5.4.2100
- Forma e cor agora representam o mesmo nível de ameaça (redundantes). Círculo+verde-gelo = Easy; Quadrado+azul = Medium; Triângulo+lilás = High; Estrela+vermelho = Elite/Crítico.
- Removido modelo
Cor = Família: cor por tipo/comportamento (Common/Small/Special/Brute) removida. A cor agora deriva exclusivamente do threat tier, igual à forma. - Keywords de nome/tipo continuam servindo apenas para elevar o threat tier; nunca para escolher cor separada.
- Log de classificação atualizado: campo
family=removido; mantidosdiff=,threat=,shape=,color=,elevated=,names=.
v1.0.0 — 2026-06-01 (patch 4 — sistema visual de inimigos v2)
Compatibilidade: R.E.P.O. + BepInEx 5.4.2100
- Novo modelo visual: Forma = Ameaça, Cor = Família (substituído no patch 5).
- Elevação de ameaça por palavra-chave:
veryheavy,trudge,slow walker,boss,elite. - Quadrado substitui losango: forma Medium agora é quadrado.
ShowEnemiesInUnexploredRoomsdepreciado: filtro por sala removido da lógica ativa.EnemyMarkerSizepadrão 0.95 (era 0.65). Aplica em ~2s via REPOConfig sem reiniciar.
v1.0.0 — 2026-06-01 (patch 3 — UX inimigos + reset editmode)
Compatibilidade: R.E.P.O. + BepInEx 5.4.2100
- Cor separada da forma: cor = nível de perigo/dificuldade; forma = tipo/família do inimigo.
- Filtro pré-spawn em
AddMarker: inimigos mortos, inativos ou comCurrentState=Despawnrejeitados. - Tecla
Rno modo de edição: reseta para os valores padrão (PosX=24, PosY=120, W=260, H=260, Zoom=2.25, Opacity=0.85). Funciona apenas com F8 ativo.
v1.0.0 — 2026-06-01 (patch 2 — marcadores e edit mode)
Compatibilidade: R.E.P.O. + BepInEx 5.4.2100
- Cleanup de marcadores por registry: sweep a cada 2s, ClearAll no carregamento do nível.
- Marcadores com formas (círculo/losango/triângulo/estrela) e cores por dificuldade.
- Modo de edição F8: mover, redimensionar pelo canto, zoom com scroll,
Shift+wheel,+/-, salvar ao sair. RevealRoomsMode = Vanillacomo padrão seguro.NativeGlobalé opt-in e também afeta o TAB.
v1.0.0 — 2026-06-01
Compatibilidade: R.E.P.O. + BepInEx 5.4.2100
- Rebuild v2 com arquitetura limpa baseada no espelho do mapa nativo.
- Minimapa persistente via câmera nativa
activeTexture. - Comportamento TAB-safe: o minimapa some enquanto o TAB nativo está aberto.
- Toggle
Mpara mostrar/esconder o minimapa. - Marcadores de inimigos via
MapCustom, com cleanup por despawn. RevealRoomsMode:Vanilla(padrão, sem SetExplored),NativeGlobal(afeta TAB),MinimapOnlybloqueado.
v1.0.0 — 2026-05-31
- Rebuild inicial da arquitetura v2.
- Remoção de RuntimeLoop, RuntimeProbeBehaviour, CenterOnPlayer, overlays falsos, RenderTexture próprio e proof HUD.
- Baseline de minimapa nativo, M toggle, TAB-safe, RevealRooms global e ShowEnemies inicial.
English
v1.0.1 — 2026-06-04
Compatibility: R.E.P.O. Build 23250495 · BepInEx 5.4.2100
- No code changes. Published with correct Thunderstore categories (Mods, Client-side, Quality Of Life) and updated README badge.
v1.0.0 — 2026-06-02 (patch 11 — minimal log, inverted F8 controls, zoom outside F8)
Compatibility: R.E.P.O. + BepInEx 5.4.2100
- Minimal log with
DebugLogging=false. With the default config, SurveyorMap emits exactly one line:[SurveyorMap] v1.0.0 loaded. BuildTag md5=<hash>. Everything else (DLL path, config summary, Edit mode ON/OFF, reset) has been moved toLogDbg, visible only whenDebugLogging=true. - F8 edit mode controls inverted. Scroll wheel now controls minimap size (scroll up = bigger, scroll down = smaller).
+/-now control zoom (zoom in = closer/more-detailed view, zoom out = wider view).Shift+scrollremoved (redundant). - New config
EnableZoomHotkeysOutsideEdit = true(section[EditMode]). When enabled,+/-(main keyboard and numpad) adjust minimap zoom during normal gameplay without entering F8 edit mode. Only active when the minimap is visible, edit mode is off, and the TAB map is not open. - No changes to native minimap, TAB, M, F8 camera freeze, enemy markers, colours/shapes, or RevealRoomsMode.
v1.0.0 — 2026-06-02 (patch 10 — camera freeze via InputManager.DisableAiming)
Compatibility: R.E.P.O. + BepInEx 5.4.2100
- Definitive F8 edit mode camera fix. Full pipeline analysis:
CameraAim.Update()→SemiFunc.InputMouseX/Y()→InputManager.GetMouseX/Y(), which checksInputManager.disableAimingTimerinternally. The previous patch (CameraAimEditModePatch) was never tested (the game ran with an older DLL). The real fix callsInputManager.instance.DisableAiming()every frame while edit mode is active.InputManager.FixedUpdate()decrements the timer every physics step; by calling it inUpdate()every frame, the timer never expires andGetMouseX/Yalways returns 0. CameraAimEditModePatchretained as a second layer (suppressesCameraAim.Update()entirely whenEditModeActive).- No changes to minimap, TAB, M, R reset, enemy markers, colours/shapes, cleanup, or RevealRoomsMode.
v1.0.0 — 2026-06-02 (patch 9 — real camera freeze, silent logs, config cleanup, premium icon)
Compatibility: R.E.P.O. + BepInEx 5.4.2100
- Camera actually frozen during F8. The previous approach (
CameraAim.OverridePlayerAimDisable) did not reliably block mouse-look input. Replaced with a Harmony prefix patch onCameraAim.Update: while F8 edit mode is active, the method is suppressed entirely, preventing any mouse delta from reaching the camera. On exit, suppression is removed andInput.ResetInputAxes()clears any accumulated delta. ShowEnemiesInUnexploredRoomsremoved as a public config. The feature was unstable and already a no-op. The config entry has been removed from code and from the config file. No functionality lost — all live markers were already shown unconditionally.DebugLogging=falsenow truly silences the log. DirectLog.LogInfo()andLog.LogDebug()calls inNativeMapMirror.cs(TAB open/close, camera found, activeTexture null) were converted toLogDbg(). WithDebugLogging=false, SurveyorMap only emits: BuildTag md5=, v1.0.0 loaded, config summary, Edit mode ON/OFF, Edit mode reset, real warnings and errors. (Logging was reduced further in Patch 11: in the final release state, only one line is emitted under normal conditions.)- New premium icon applied.
package/icon.pngreplaced withsurveyormap-v2-256.png(256×256). 1024px master saved toassets/icon/. - No changes to minimap, TAB, M, R reset, enemy markers, colours/shapes, cleanup, or RevealRoomsMode.
v1.0.0 — 2026-06-02 (patch 8 — camera suspension during F8 edit mode)
Compatibility: R.E.P.O. + BepInEx 5.4.2100
- New config
FreezeCameraInEditMode = true(section[EditMode]). When entering F8 edit mode, the player camera look is suspended automatically using the game's own API (CameraAim.OverridePlayerAimDisable). Moving the mouse edits the minimap without spinning the camera. - Camera control is restored when you exit F8 edit mode, together with cursor state.
- Implemented via the game's public API — no patches, no Windows API, no ESC simulation.
- If
CameraAim.Instanceis null (e.g. not in gameplay), the mod emits a warning and continues without crashing. - No functional changes: minimap, TAB, M, R reset, enemy markers, cleanup, DebugLogging unchanged.
v1.0.0 — 2026-06-02 (patch 7 — automatic cursor in F8 edit mode and documentation review)
Compatibility: R.E.P.O. + BepInEx 5.4.2100
- New config
UnlockCursorInEditMode = true(section[EditMode]). The cursor is unlocked and made visible automatically when you press F8 to enter edit mode — no need to press ESC first. The previous cursor state is restored when you exit edit mode. - Cursor unlock is reapplied every frame while edit mode is active, ensuring the game cannot re-lock the cursor during editing.
Input.ResetInputAxes()is called when toggling edit mode to prevent residual camera movement.- If the game still captures the mouse after pressing F8, press ESC once to release it manually.
- Editorial review of documentation: corrected accents and punctuation in the Portuguese README and CHANGELOG.
- No functional changes: minimap, TAB, M, R reset, enemy markers, cleanup, DebugLogging unchanged.
v1.0.0 — 2026-06-02 (patch 6 — log cleanup: DebugLogging=false)
Compatibility: R.E.P.O. + BepInEx 5.4.2100
- New config
DebugLogging = false(section[Debug]). Log is silent by default for end users. SetDebugLogging = trueonly for diagnostics (enemy classification, sweep, room tracking). - Moved to conditional debug:
Sweep: active=,Enemy marker: id=,Map.AddCustom OK,Room explored (new),AddMarker skipped,M toggle,Patched EnemyHealth.*. - Always visible (at the time of this patch): BuildTag md5=, plugin loaded, config summary, Edit mode ON/OFF, Edit mode reset, real warnings and errors. (Scope was reduced further in patches 9 and 11; in the final release, only one line is emitted.)
- No functional changes: colours, shapes, cleanup, scale, TAB/M/F8/R unchanged.
v1.0.0 — 2026-06-02 (patch 5 — visual alignment: colour = threat)
Compatibility: R.E.P.O. + BepInEx 5.4.2100
- Shape and colour now represent the same threat level (redundant). Circle+ice-green = Easy; Square+blue = Medium; Triangle+lilac = High; Star+red = Elite/Critical.
- Removed
Colour = Familymodel: colour-by-behaviour-type (Common/Small/Special/Brute) removed. Colour is now derived exclusively from threat tier, same as shape. - Name/type keywords still serve only to elevate threat tier, never to choose a separate colour.
- Classification log updated:
family=field removed;diff=,threat=,shape=,color=,elevated=,names=retained.
v1.0.0 — 2026-06-01 (patch 4 — enemy visual system v2)
Compatibility: R.E.P.O. + BepInEx 5.4.2100
- New visual model: Shape = Threat, Colour = Family (superseded by patch 5).
- Threat elevation by keyword:
veryheavy,trudge,slow walker,boss,elite. - Square replaces diamond: Medium threat shape is now a square.
ShowEnemiesInUnexploredRoomsdeprecated: room-based filtering removed from active logic.EnemyMarkerSizedefault 0.95 (was 0.65). Applies within ~2s via REPOConfig without restart.
v1.0.0 — 2026-06-01 (patch 3 — enemy UX + edit mode reset)
Compatibility: R.E.P.O. + BepInEx 5.4.2100
- Colour separated from shape: colour = danger/difficulty level; shape = enemy type/family.
- Pre-spawn filter in
AddMarker: dead, inactive, orCurrentState=Despawnenemies rejected. Rkey in edit mode resets to default values. Only works when F8 edit mode is active.
v1.0.0 — 2026-06-01 (patch 2 — markers and edit mode)
Compatibility: R.E.P.O. + BepInEx 5.4.2100
- Registry-based marker cleanup: 2s sweep, ClearAll on level load.
- Marker shapes (circle/diamond/triangle/star) and colours by difficulty.
- F8 edit mode: move, resize from corner, scroll zoom,
Shift+wheel,+/-, save on exit. RevealRoomsMode = Vanillaas safe default.NativeGlobalis opt-in and also affects TAB.
v1.0.0 — 2026-06-01
Compatibility: R.E.P.O. + BepInEx 5.4.2100
- v2 rebuild with a clean native-map mirror architecture.
- Persistent minimap through the native map camera
activeTexture. - TAB-safe behaviour: the minimap hides while the native TAB map is open.
Mtoggle to show/hide the minimap.- Enemy markers through
MapCustom, with cleanup on despawn. RevealRoomsMode:Vanilla(default, no SetExplored),NativeGlobal(also affects TAB),MinimapOnlyblocked.
v1.0.0 — 2026-05-31
- Initial v2 architecture rebuild.
- Removed RuntimeLoop, RuntimeProbeBehaviour, CenterOnPlayer, fake overlays, owned RenderTexture, and proof HUD.
- Baseline native minimap, M toggle, TAB-safe behaviour, global RevealRooms, and initial ShowEnemies.