Repository navigation
Releases: ricker72/ricker72.github.io
Release list
Clientes
LegacyX version 1.9.6
πΊοΈ LegacyX Editor β Release Notes
v1.9.8 β Search / Jump RME Parity + Ctrl+G Cleanup
Tibia 10.98 Β· .NET 10 Β· Windows Forms Β· C# Β· D3D11 / GDI+
LegacyX Editor is crafted exclusively by @Ricker β 100% C# / .NET 10 / Windows Forms.
No second runtime Β· No C++ in production Β· No invented IDs Β· No vibe coding.
RMEhampusborgos/rme@da7152esource/is the only external authority.
π
Release Date: 2026-09-04 Β |Β π¦ Distribution: Release-Latest/ (single build) Β |Β π Commit: da7152ec94031c76732e997de4624c8f1c010225
π Table of Contents
- β¨ Executive Summary
- π― Highlights v1.9.8
- π Detailed Changelog
- ποΈ Complete Feature History
- π§ Technical Deep Dive
- β Validation Matrix
- π¦ Installation & Clean Build
- π€ Author & Credits
- π License
β¨ Executive Summary
LegacyX has surpassed RME. The classic parity (P0/P1) is Certified, and the editor now operates at evolved level: an ingame emulator Sim+GOD (OTClient src/client + framework) embedded in the editor itself, plus NPC MAKER, Spell Creator, Theme & Language, God Mode, Planner and Live Collaboration β all in a single C# runtime.
RME is the authority for classic behavior. Proprietary enhancements never break OTBM, official materials, or the single Brush Engine transaction route.
| Area | Status |
|---|---|
| Client DAT/SPR/OTB/XML 10.98 | π’ Certified |
| OTBM + XML roundtrip | π’ Certified |
| Ground / AutoBorder / Wall / Doodad | π’ Certified |
| Render GDI+ / D3D11 / Texture2DArray | π’ Certified |
| Palettes (7) + RAW 577 | π’ Certified |
| Ingame Simulation Sim+GOD | π’ Certified v1.8.1 |
| Global Map Operations (Γ4) | π’ Certified |
| Live Collaboration | π’ Certified |
π― Highlights v1.9.8
πFind RME 4-Column |
πJump to Item |
β¨οΈCtrl+G = Go To Position |
π¨Theming 100% Dark |
+ Search for Item β 800Γ600 Β· 5 modes Β· 9 Types Β· 15 Props Β· live filter 800ms
+ Jump to Item β same dialog, commits RAW brush at click
! Ctrl+G β now ONLY Go To Position (RME parity) β God Mode via menu
# Close Map β custom dark dialog ES/EN/PT instead of white MessageBox
# 459/460 β hardcoded yellow/red tint RME map_drawer.cpp:1091
# Camera picking β floor offset (7-ViewZ)*32 β paint under cursor on low floorsπ Detailed Changelog
β 1.9.8 β Search / Jump RME Parity + Ctrl+G Cleanup
Parity target:
source/find_item_window.cppΒ· Dialog:SharpMapTracker/FindItemDialog.csΒ· Wiring:SharpMapTracker/MainForm.cs:2618/5419
π FindItemDialog β 4 columns, 800Γ600 β Exact RME Replica
| Column | Content | RME Source |
|---|---|---|
| Left | GroupBox 5 RadioButton β Server IDs / Client IDs / Name / Types / Properties + SpinCtrl 0-65535 + TextCtrl Name + OK/Cancel StdDialogButtonSizer |
find_item_window.cpp: FindItemDialog |
| Types | GroupBox 9 radios β Depot Mailbox Trash Container Door Magic Field Teleport Bed Key |
find_item_window.cpp: Types |
| Properties | GroupBox 15 CheckBox β Unpassable Unmovable Block Missiles Block Pathfinder Readable Writeable Pickupable Stackable Rotatable Hangable Hook East Hook South Has Elevation Ignore Look Floor Change + onlyPickupables gate |
find_item_window.cpp: Properties |
| Result | GroupBox ListBox 230Γ512 + info label β filtered list + Timer 800ms for Name mode |
find_item_window.cpp: Result |
Logic β FindItemDialog.cs:
setSearchMode()enables/disables groups per radio β identical toFindItemDialog::setSearchModein RME.RefreshContentsInternal()iteratesg_items.getMinID() β maxID+raw_brushcatalog, filters byOtItemTypeflags β byte-identical predicate chain.inputTimer 800msdebounce ontxtSearch.TextChangedβ matches RMEwxTimerfor Name search.onlyPickupablesgatesPickupableproperty whenTypes=Containeretc β RME conditional.
Dual entry points β MainForm.cs:
// MainForm.cs:2618 β Search for Item
findItemToolStripMenuItem_Click => new FindItemDialog(otItems, tibiaItems, "Search for Item")
=> ShowMapSearch(ItemId) // highlights on map, no brush change
// MainForm.cs:5419 β Jump to Item
jumpToItemMenuItem_Click => new FindItemDialog(otItems, tibiaItems, "Jump to Item")
=> new RawBrush(itemId) // commits RAW brush, ready to paintSame dialog, same screenshots as RME β separated functions, identical UI. Screenshots in RME show indistinguishable Search/Jump windows.
β¨οΈ Ctrl+G β Only Go To Position (RME map_display.cpp parity)
| Before | After | Reason |
|---|---|---|
Ctrl+G β ToggleGodMode (custom) |
Ctrl+G β Go To Position |
source/map_display.cpp + CMakeLists β RME binds Ctrl+G to Go To Position |
MainForm.cs:1408 ProcessCmdKey + menu ShortcutKeys=Ctrl+G for God Mode |
Removed β godModeToggle.ShortcutKeys = None, text "Toggle God Mode" without (Ctrl+G) |
God Mode only via Ingame Simulation > God Mode / View > Ingame Simulation > God Mode |
MainForm.Designer.cs:651 gotoPositionMenuItem.ShortcutKeys = Ctrl+G |
Kept β sole owner of Ctrl+G |
Parity restored |
No silent fallback β disabled shortcut shows no hint, menu clearly states new location.
Files: FindItemDialog.cs (new, 800Γ600, 4-column), MainForm.cs:2618,5419,752,806,1408, MainForm.Designer.cs:651 Β· Validation: visual A/B vs RME find_item_window.cpp + Ctrl+G manual test.
β 1.9.7 β Theming Fixes β Close Map oscuro + BrushComposition splitter
π Close Map β No more white MessageBox
- Problem:
MessageBox.Show("Close Map?")rendered white on dark theme + English only + invisible on themed hosts. - Fix β
MainForm.cs:4323:// Before: MessageBox.Show("This map has unsaved changes...") // After: Form dark 45,45,48 + Warning icon + LanguageManager keys // dialog.closeMap.title / message / yes / no // ES: "Cerrar Mapa / Este mapa tiene cambios sin guardar. ΒΏCerrar de todas formas? / SΓ / No"
- Uses
LegacyXStyles.CreateAdaptiveButton+CreateCenteredButtonPanel+StyleDialog+ThemeManager.ApplyThemeβ consistent withTheme & Language v1.8.0. - Bilingual
Data/Lang/{es,en,pt}.jsonβ all three languages. - Crash report closed:
2026-09-04T10:54:07Zβ white dialog was the trigger for user confusion.
π§ BrushCompositionDialog β SplitterDistance crash fix
- Crash:
InvalidOperationException: SplitterDistancewhen openingEdit composition...onearthbrush βPanel1MinSize/Panel2MinSize+SplitterDistance = 0.58*Widthset in constructor beforeHandlecreated. - Fix β
Viewport/BrushCompositionDialog.cs:43:// Moved to Shown event + clamp min/max + try/catch Shown += (s,e) => { splitter.SplitterDistance = Math.Clamp((int)(Width*0.58), Panel1MinSize, Width-Panel2MinSize); }
- Theming fix:
OwnerDrawheaderDrawColumnHeadertext232,229,218on45,45,48,detailBoxsame,compositionList.ForeColorfixed. AppliedLegacyXStyles.StyleDialog + ThemeManagerinLoad. - Context menu fix β
Viewport/PalettePanel.cs:360:Editar composiciΓ³n...now usesLegacyXTheme.ApplyContextMenu(Surface 24,23,20/Whitetext) instead ofToolStripProfessionalRenderer(black on dark = invisible).
β 1.9.6 β RME Hardcoded Stairs + Camera Picking
π‘π΄ Ugly Hack da7152e β map_drawer.cpp:1091 β 459/460 tint
RME comment:
// ugly hack for stairsβ hardcoded overlay foritem 459(yellow) and460(red) to visualize stair direction.
| ...