Release covering all changes from v1.5 through v2.5.0.
A full Create/Edit Secret tab for creating and editing DataTable objects directly in the Secrets Source JSON files.
- Left pane: Browsable list of mod-only items per category (buildings, weapons, armor, tools, items, flora, loot) with type-to-filter search
- Right pane: Structured forms matching the Secrets tab layout with labeled fields, dropdowns, checkboxes, and material rows
- Base-game rows are automatically filtered out so only user-added objects appear
- Buildings: Construction Recipe (placement, materials, unlocks, sandbox) + Construction Definition (actor, icon, tags)
- Weapons: Item Recipe + Weapon Definition (damage, speed, durability, armor pen, stamina/energy cost, repair cost)
- Armor: Item Recipe + Armor Definition (damage reduction, protection, repair cost)
- Tools: Item Recipe + Tool Definition (durability, carve hits, mining rate, stamina/energy cost, repair cost)
- Items: Item Recipe + generic Item Definition (portability, stack size, trade value)
- Flora: Flora Definition only (growth timing, drop amounts, farming properties)
- Loot: Loot Definition only (drop chance, quantity range, required tags)
- Template dropdown: Construction, Recipe, or Both
- Construction: Renders blank recipe + definition forms with game-accurate defaults
- Recipe: Blank item recipe form for weapons, armor, tools
- Both: Shared Row Name field linked between construction recipe and definition sections
- On save, rows are injected into Secrets Source JSON files (Architecture, Constructions, Recipes)
- Click any item to view/edit its properties in structured forms
- Save writes edited values back to JSON with type conversion (int, float, bool, string)
- Delete with confirmation (type DELETE to confirm)
- Display names resolved from string table JSON files
- Search bar added to Mod Builder, Secrets, Constructions, and Object Editor right panes
- Three modes: Search by Property names, Values, or Both via dropdown
- Substring replacement: Replace matches within values (not full-value overwrite)
- Replace All: Batch replace across all visible fields
- Shared logic centralized in
shared_utils.py
- Comparison algorithm now detects
GameplayTagContainerPropertyDatachanges (previously silently skipped) - Properly handles individual tag additions and removals within containers like
ExcludeItemsandAllowedItems - Set-based comparison: reports each added/removed tag individually
<delete>elements for tag removals from containers<change>elements for value modifications and tag additions<change>with<add_property>for adding new properties- Handles
SetPropertyDataalongsideArrayPropertyData - Generic fallback for unhandled property types
- Category now derived from DataTable filename (e.g.,
DT_Storage->Storage) instead of parent directory path (which was always "Items") - Complete mapping for 20+ DataTable names plus prefix fallbacks (
GE_*-> Buffs,Curve_*-> Buffs,Properties_*-> Ores)
<delete>handling widened to work on all GameplayTagContainer properties (not just hardcodedExcludeItems/AllowedItems)- Runtime detection of GameplayTagContainers via
$type,StructType, and innerValuemarkers _is_gameplay_tag_container()method replaces hardcoded property name checks
- Batch rendering: 8 cards at a time with font caching for Mod Builder performance
- Original Value field: Non-editable field showing the original value in Mod Builder change cards
- Material rows: Lazy frame packing — empty materials section takes no space, expands on first "+ Add Material" click
- Button ordering: Create/Edit Secret positioned between Secrets and Constructions tabs
- Dead code removal: ~500 lines of unused methods removed across buildings_view, constructions_view, and object_editor_view
- Removed unused imports: 7 unused imports cleaned up
- Narrowed exception handling: Bare
exceptcatches replaced with specific exception types - Pylint score: 9.84/10 on object_editor_view, 9.97/10 on other modules
- Comments overhaul: Redundant comments stripped, replaced with workflow-focused documentation
- Application documentation: New
docs/APPLICATION.md— comprehensive 16-section technical reference
- 275 tests across 6 test files, all passing
- 64 new tests added in
test_main_window.py: definition XML parsing, original value lookup, search/replace semantics, version validation
- Created by John B Owens II
- Create DEF functionality by Sqitey
- Co-Authored-By: Claude Opus 4.6
Full Changelog: https://github.com/jbowensii/MoriaModCreator/compare/v1.5...v2.5.0