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 reconstructioneditor_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 recomputetalent_service.py— Talent tree building, topological sort, stat humanization, reroute resolutionworkshop_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_namepatterns, not explicit game data - Capacity system: Recomputes dynamically from
D_ItemsStatic.jsonon 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 inventorytalent-editor.js— Click-to-cycle ranks, pending op tracking,window.TALENT_EDITORAPIcharacter.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.