Colonist History (1.6 Port)
== UNOFFICIAL 1.6 PORT == Original mod "Colonist History" by 民火 (tammybee). Ported and optimized for RimWorld 1.6 by lejunior4. I am not the original author. All credit for the original concept and implementation goes to 民火. Original mod: --- Records information about your coloni
== UNOFFICIAL 1.6 PORT ==
Original mod "Colonist History" by 民火 (tammybee).
Ported and optimized for RimWorld 1.6 by lejunior4.
I am not the original author. All credit for the original concept and implementation goes to 民火.
Original mod: https://github.com/tammybee/RimWorldMod_ColonistHistory
---
Records information about your colonists at regular intervals, viewable as tables and time-series graphs.
# Features
- Automatic recording at a configurable interval (default: every 24h).
- "Colonist History" tab with three sub-pages:
- Home: manually trigger a recording and export data as XML.
- Table: browse recorded snapshots per colonist over time.
- Graph: visualize any numeric stat as a time-series graph.
## Recorded Information
- Skill levels (integer and real number)
- Hediffs (injuries, diseases, implants…)
- Primary equipment
- Biological age
- Statistics — Misc (kills, damage dealt, meals cooked…)
- Statistics — Time (time hunting, constructing, hauling…)
Supports RecordDef added by other mods.
# Settings
- Recording interval: from 1 hour to 60 days.
- Lightweight save mode (experimental): only saves differences to reduce file size.
- Show/hide colonists from other factions.
- Graph curve width, zero-fill options, and per-category output toggles.
---
# Changes in this port (vs original)
## RimWorld 1.6 Compatibility
- Replaced removed API calls (SaveGameFilesUtility, GenFilePaths.FolderUnderSaveData).
- Fixed DoWindowContents abstract base call removed in 1.6.
- Added missing Unity DLL references (IMGUIModule, TextRenderingModule).
- Wrapped ColonistBar and WorldGrid accesses with null guards.
- Cached reflection calls (VisibleHediffGroupsInOrder) for stability.
## Performance Optimizations
- GameComponentTick() reduced from 60 checks/sec to 1 check/sec (−98% CPU overhead).
- ColonistHistoryDataList.AvailableRecords now cached and only rebuilt on changes.
- LightWeightSaver rewritten with local dictionaries (no shared state, no manual Clear()).
- FirstRecordTick computed with a direct loop instead of LINQ allocations.
- ExistExtraNoPlayerFactions uses index-based loops to avoid iterator allocations.
## New Features
- Redesigned graph selector: searchable, grouped by category, with current stat highlighted.
- "Normalize by days in colony" option: divides Misc and Time stats by the colonist's days in colony, making veterans and newcomers fairly comparable.
- Graph updates immediately when toggling normalization.
- Save folder is auto-created on first export if it doesn't exist.
## Translations
- Full translation added for all languages supported by the base game.
- All mod-specific UI text (tabs, buttons, dialogs, tooltips) is fully localized.