icarus prospector

Icarus Prospector

A web-based character editor for Icarus. Served at /prospector on the portal as a Flask Blueprint. Covers inventory management, talent trees, workshop progression, and meta-inventory editing.


Project Details

Field Value
GitLab Project icarus/prospector
GitLab Project ID 8
Repository https://git.eurekaendeavors.com/icarus/prospector
Visibility private
License GPL v3
Portal route /prospector
Package name icarus-prospector
Depends on icarus/core, icarus/data-catalog (icons)
Status ✅ Live

What It Does

Users upload character save files and edit their Icarus characters entirely in the browser. The editor handles multiple save artifacts and provides a unified Apply/Download workflow.

Save Files

File Contents Required
Character .json Character data (inventory, equipment, talents, stats) — UE4 binary blob Yes
Profile.json Account-level meta-progression (workshop talents, currencies) Optional
MetaInventory.json Loadout item storage pool + legendary weapons (Bio-Lab) Optional

Editor Tabs

Inventory Tab - Drag & drop inventory editor with slot validation - Equipment slots (head, chest, legs, feet, hands, backpack) - Item stack management (auto-split for quantities exceeding max stack) - Add items from game database with search - Remove items, move between slots - Dynamic capacity system (weight/slot limits recomputed on equipment changes) - Game asset icons — 97% item coverage via multi-stage icon mapping

Talents Tab - 4 archetypes: Survival, Combat, Construction, Exploration - 14 talent trees, 280 talents - Click-to-cycle rank editing (0 → 1 → ... → max → 0) - Topological sort by prerequisite chain (Kahn's algorithm) - Reroute node resolution (92 invisible connector nodes, 331 references resolved) - Stat reward humanization: BaseMaximumHealth_++10/25/50 Maximum Health - 100% icon coverage (128px talent icons from catalog) - 98% reward coverage (6 flag-only talents have no stat rewards) - Chain depth visualization with color-coded indentation

Solo Talents Tab - Single tree, 28 talents - Same rendering and editing as character talents - Shared _talent_card.html partial (DRY)

Workshop Tab (requires Profile.json upload) - Three sub-pills: Loadout | Workshop | Bio-Lab - Persistent currency bar (Credits, Refund, Biomass, Exotics, Licence) - Workshop: 22 category accordions with progress bars, prerequisite chains - Workshop talent editing wired into unified Apply flow - Loadout: MetaInventory items view (read-only for now) - Bio-Lab: Legendary weapons view (read-only for now)

Unified Apply/Download

One Apply button flushes ALL pending operations: - Inventory moves (add, remove, move, stack split) - Talent edits (character + solo + workshop)

One Download returns a zip containing all modified artifacts: - Modified character .json - Modified Profile.json (if workshop talents changed) - Modified MetaInventory.json (if meta-inventory changed)


Architecture

Services

  • character_service.py — Character parsing, talent edit application, save reconstruction
  • editor_service.py — Inventory edit operations (add, remove, move)
  • item_service.py — Item database, icon mapping (multi-stage: direct prefix → display name → stripped key → fuzzy)
  • capacity_service.py — Weight/slot capacity with dynamic recompute
  • talent_service.py — Talent tree building, topological sort, stat humanization, reroute resolution
  • workshop_service.py — Profile parsing, workshop trees, meta-inventory parsing

Key Implementation Details

  • Optimistic UI: All edits tracked client-side, zero server calls until Apply
  • Slot type derivation: From item row_name patterns, not explicit game data
  • Capacity system: Recomputes dynamically from D_ItemsStatic.json on equipment changes
  • Deferred operations: Moves queued as ops, flushed on Apply in dependency order
  • GUID management: Clone gets fresh IcarusActorGUID, create includes GUID field

Client-Side

  • editor.js — Unified apply/download, drag & drop inventory
  • talent-editor.js — Click-to-cycle ranks, pending op tracking, window.TALENT_EDITOR API
  • character.js — Profile/meta-inventory upload handlers

Bug History

Issue Problem Fix
#121 Remove item doesn't update UI immediately Optimistic UI for remove (same as add/move)
#122 Download includes all files even when only some modified Track modified_files, zip only changed ones
#123 Large quantity doesn't split into multiple stacks Auto-split with max_stack_size from game data
#126 Download enabled before Apply Button disabled until Apply succeeds

Monetization

The Prospector editor is designated as a 100% premium feature in the monetization roadmap. See issue #136. Free tools: Pets, Prospects (reset only), Catalog.

Back to Catalog