Skip to content

Major accessibility overhaul: redesigned menus, column painting, info cards, DLC support, and dozens of fixes#106

Draft
aaronr7734 wants to merge 135 commits intoAccessMods:masterfrom
aaronr7734:next-pr
Draft

Major accessibility overhaul: redesigned menus, column painting, info cards, DLC support, and dozens of fixes#106
aaronr7734 wants to merge 135 commits intoAccessMods:masterfrom
aaronr7734:next-pr

Conversation

@aaronr7734
Copy link
Collaborator

This is a big one. Four rounds of changes spanning most of the mod's feature surface — schedule and assign menus rebuilt from scratch, column painting generalized across all supported tables, universal Alt+I info cards, a full tile info overhaul, and a ton of DLC features (Biotech gene inspection, mechanitor control groups, growth moments, Royalty permits, Ideology roles, Odyssey fishing zones). There are also significant improvements to the game setup flow, bill configuration, policy editors, quest system, colonist bar navigation, and the scanner.

Bug fixes touch everything from soft-locks on Biotech dialogs to keyboard layout issues, Escape key isolation, slider direction consistency, and speech sanitization. A detailed changelog and updated documentation will be included before this PR leaves draft.

- Change permadeath from toggle to two radio button options (Up/Down)
- Add MenuHelper for navigation (respects WrapNavigation setting)
- Add TypeaheadSearchHelper for storyteller and difficulty search
- Add Home/End navigation for all three sections
- Add position announcements (X of Y)
- Auto-select first item on first visit to each section
- Simplify mode announcements (removed verbose help text)
Add accessible custom difficulty settings navigation during character
creation. When selecting "Custom..." difficulty, press Enter to open a
2-level menu for editing all difficulty settings.

Features:
- Navigate sections with Up/Down, Enter to drill into settings
- Adjust sliders with Left/Right arrows
- Toggle checkboxes with Enter/Space
- Typeahead search in both sections and settings
- Alt+R to jump directly to playstyle reset section
- Escape to go back or exit to difficulty selection

Refactored difficulty settings into shared DifficultySettingsHelper
used by both character creation and in-game storyteller selection,
removing ~550 lines of duplicate code.
- Add MapSize and StartingSeason to unified field menu with (Advanced) label
- Sync slider values from game on init (fixes navigation starting from wrong position)
- Use MenuHelper for navigation respecting user settings
- Add TypeaheadSearchHelper for field search
- Add Home/End navigation
- Support all 7 slider values for Rainfall/Temperature/Population/LandmarkDensity
- Add dev mode options: 5% coverage with (dev) marker, extra map sizes
- Use game translation strings for all labels and warnings
- Add warnings for 100% coverage, large maps, and winter start
- Values clamp instead of wrap
When using PageUp/PageDown to cycle through pawns in the scanner,
the announcement now includes the pawn's current activity (e.g.,
"cooking four lavish meals", "sleeping"). Respects the existing
ShowPawnActivityOnMap setting.
- Add FactionsNavigationState for faction list and add menu navigation
- Tab/Shift+Tab toggles between World Params and Factions sections
- Up/Down/Home/End navigates faction list with typeahead search
- Alt+A opens add faction menu, Delete removes selected faction
- Faction announcements include full description with xenotype info
- Block Enter/Escape appropriately to prevent unintended page navigation
- Fix storyteller screen to show position on initial entry
When the cursor moves to a door or when cycling through doors in the
scanner, the announcement now includes whether the door is open or
closed (e.g., "wooden door (open)" or "autodoor (closed)").
- Add fish species and population to key 2 (terrain info) when Odyssey DLC
  is active, matching what sighted players see in the mouseover readout
- Add colons after stat labels in terrain info (beauty:, cleanliness:, path cost:)
- Update light info (key 4) to show percentage with translated label
  (e.g., "light: 50% (Lit)") matching sighted player display
- Add temperature label to light info for consistency
- Create FishingZoneMenuState for keyboard navigation of fishing zone settings
- Support repeat mode, target count, minimum population, and fish species list
- Add tooltips from game UI for fish population and minimum population fields
- Integrate with inspection system via TabRegistry and InspectionTreeBuilder
- Register in KeyboardHelper to properly block conflicting keys
- Add InfoCardState check to yield control when viewing fish info cards
- Use rounded fish population values for consistency with game display
The game plays a sound when drafting and undrafting pawns via the UI.
Now the mod's R key shortcut plays the same sound.
Previously, activating a Dialog_NodeTree option that navigates to a
sub-dialog (like 'Request trade caravan' -> trader type selection)
would immediately close the dialog instead of showing the sub-menu.

Now correctly checks DiaOption's resolveTree, link, and linkLateBind
fields to determine whether to close the dialog or refresh to show
the new dialog node's options.
…controls

Ability Targeting:
- When targeting a psycast, announces ability name, range, AOE radius, psyfocus cost, and neural heat
- Press R during targeting to check distance to cursor and line of sight status
- Press T during targeting to hear which pawns are in the area of effect (AOE abilities only)
- Clear error messages for out of range, no line of sight, psychic immunity, and missing targets
- Support for two-phase abilities like Skip (target selection then destination selection)
- World map targeting support for abilities like Farskip

Neural Heat Gizmo:
- Renamed "Psychic Entropy" to "Neural Heat" (the player-facing term)
- Gizmo now shows limiter state: "Neural heat: 0/80, Psyfocus: 39%, Limiter: ON"
- Press Enter on the gizmo to toggle the neural heat limiter on/off

Ability Gizmo Improvements:
- Psycast gizmos now announce their costs when browsing: "Vertigo pulse (M). Costs 2% psyfocus, requires 50%, Neural heat: 30"
- Shows both the psyfocus cost (consumed when casting) and minimum required (band threshold)

Bug Fixes:
- Fixed rich text tags appearing in letter/message announcements (e.g., "(*Name)Mikaela(/Name)" now shows as "Mikaela")
- Fixed targeting using mouse position instead of accessibility cursor position
…criptions

Animal Attack Target (Odyssey DLC):
- Announce range from master when entering targeting mode
- Press R during targeting to check distance to cursor and range status
- Pre-validate range before executing, with clear error on out-of-range
- Keep targeting open on range failure so user can adjust cursor and retry
- Detect attack commands by icon match against game's AttackTargetTexture
- Use game's Pawn_TrainingTracker.AttackTargetRange const for range value

Ability Gizmo Descriptions:
- Psycast gizmos now include the spell description after name and cost
- Pull description from ability.def.description instead of Command.Desc
  (which is only populated during mouse hover rendering)
- Reorder announcement: name, hotkey, cost, then description

Dialog Tree Navigation:
- Fix dialog option close logic to not depend on resolveTree flag
…and destination phase tracking

- Detect all ability verbs via IAbilityVerb interface (not just Verb_CastAbility),
  supporting Verb_AbilityShoot and modded ability verbs automatically
- Add self-cast feedback: abilities with targetRequired=false now announce
  "Casting {name}" instead of producing no feedback
- Track destination phase for dual-target abilities (Skip): R key reports
  distance from selected target using destination comp's range
- Handle touch/zero-range abilities: announce "Touch range" instead of
  misleading range values, skip range pre-validation
- Add range and effect radius to ability gizmo descriptions (after cost,
  before description), with world map and self-cast variants
- Add affected pawns announcement for world-targeting AOE abilities (Farskip)
- Fix location-targeting AOE abilities (Solar Pinhole) showing misleading
  "No pawns in radius" on target confirmation
- Use verb.EffectiveRange for range calculations (respects equipment bonuses)
- Separate cost stats with periods for natural screen reader pauses
- Move hotkey to end of ability announcements
- Add animal attack range to gizmo description
- Clean up stale I key documentation from Abilities CLAUDE.md
Check if announcement already ends with a period before appending
period-separated sections for attack range and ability info.
Toggle gizmos previously only announced label and ON/OFF state.
Now includes the tooltip description that sighted players see on
hover, giving screen reader users the same context (e.g., "Animals
attack: OFF. While this is on, mastered animals are sent forth to
attack distant targets. While it is off, they remain near and guard
the master.").
- Add Predator column and sort predators to top (closes AccessMods#74)
- Replace mod-added columns (Age, BodySize, Health, Pregnant) with
  vanilla columns (ManhunterOnDamage, ManhunterOnTameFail)
- Add column tooltips announced only on left/right navigation, not
  up/down, for both wildlife and animals menus
- Add jump-to-animal on Enter for wildlife Name column
- Fix Hunt/Tame columns showing empty text by using Yes/No translations
… tree enrichments

Add Alt+I keyboard shortcut across all major menus and states to open
info cards for the currently selected item. This brings RimWorld's
hyperlink-based info card system to screen reader users who previously
had no way to access it.

Info card access points (15 contexts):
- Map cursor: opens info card for thing/terrain at cursor position,
  with float menu selection when multiple things occupy the same cell
- Architect menu: opens info card for selected building designator
- Plant selection menu: info card for selected plant def
- Storage settings: info card for selected ThingDef filter item
- Bills menu: info card for selected bill's product
- Bill config: info card for the bill's produced item
- Gizmo navigation: handles Command_Ability (ability def),
  Designator_Build (building def with stuff), and fallback to owner
- Colony inventory: info card for selected inventory item
- Research menu: info card for selected research project
- Research detail: info card for project, unlocked items (things/recipes)
- Colony animals menu: info card for selected animal
- Wildlife menu: info card for selected wild animal
- Float menus: extracts Def from shownItem/iconThing/revalidateClickTarget
- Info card itself: nested info cards via vanilla's hyperlink system

Nested info card navigation:
- State stack (SavedCardState) preserves cursor position, expansion
  state, and visible items when drilling into a linked def
- Escape pops back to the outer card; final Escape closes entirely
- Multi-hyperlink stat entries present a float menu for selection
- closingFromAccessibility flag prevents PostClose from interfering
  with stack-managed transitions
- onlyOneOfTypeAllowed set to false to allow multiple Dialog_InfoCard
  instances on the WindowStack simultaneously

Info card tree improvements:
- Stat entry labels now include hyperlink def names inline (sighted
  users see clickable links; screen reader users now hear the names)
- "Inspectable" hint appended to announcements for stat entries that
  have hyperlinks, guiding users to press Alt+I
- Stat expandability checked upfront via GetExplanationText; stats
  with no explanation are marked non-expandable instead of showing
  "No items to show" on expand
- Empty-children edge case now corrects IsExpandable dynamically

Typeahead search fix (all menus):
- Alt+key combos no longer accidentally trigger typeahead search input
- Added !Event.current.alt guard to ~15 typeahead handlers across
  UnifiedKeyboardPatch, BuildingInspectPatch, StorageSettingsMenuPatch,
  PlantSelectionMenuState, WindowlessFloatMenuState, and others
- Info card typeahead switched from ev.character to KeyCode-based input
  (matching all other menus), with progressive backspace deletion and
  Up/Down match navigation during active search

Pawn data improvements:
- Xenotype genes now carry GeneDef reference for future info card use
- Melanin skin color genes get descriptive shade names (very light,
  light, fair, medium, tan, brown, dark brown) based on luminance
  calculation, replacing the generic "Skin color" label
- Health capacity tooltips now use HealthCardUtility.GetPawnCapacityTip
  (showing impactors: hediffs, body parts, genes) instead of the
  always-empty capacityDef.description
- Capacity tooltip text split into individual tree lines per impactor
- Skill passion labels changed from * / ** to readable text:
  "(Minor passion)" / "(Major passion)"

Permits system overhaul (Royalty DLC):
- Shows ALL permits per faction matching vanilla's PermitsCardUtility
  layout, not just the pawn's granted permits
- Status reflects actual state: Granted, Granted (on cooldown),
  Available (X points), Locked (requires prerequisite/title)
- Adds current title, unused permit points, and royal favor per faction
- Required title shown in permit detail expansion

Bug fixes:
- Zone rename category comparison uses literal "Rename" instead of
  translated string (fixes potential locale mismatch)
- Removed duplicate MenuHelper.GetLevelSuffix call in research detail
- Research detail announcements trim trailing punctuation before
  appending state/position info
- BillsMenuState passes ProducedThingDef to FloatMenuOption for
  info card extraction
- KeyboardHelper.IsBlockingPanelActive includes InfoCardState
- StorageSettingsMenuPatch returns early when InfoCardState is active
- ArchitectMenuPatch skips input when InfoCardState is active
- InfoCardDataExtractor extracts worldObject, hediff, titleDef,
  faction, and stuff fields for comprehensive title generation
- InfoCardTreeBuilder generates proper titles for WorldObject, Hediff,
  AbilityDef, RoyalTitleDef, Faction, and ThingDef+stuff combinations
Apply the same skin color descriptors (very light, light, fair, medium,
tan, brown, dark brown) from InfoCardDataExtractor to the unborn baby
gene tree. Skin colors now route through a dedicated DescribeSkinShade
method using perceptual luminance (0.299r + 0.587g + 0.114b) instead
of the generic brightness-based labels (medium-dark, etc.). Hair and
other cosmetic colors retain their existing hue-based descriptions.
Sighted players see fertility in the mouse-over tooltip but it was
missing from the key 2 terrain announcement. Now shows fertility
right after the terrain name, e.g. "Rich soil (140% fertility)".
- Move pregnancy approach menu after Relationship line instead of end
- Use game's i18n methods (GetLabel/GetDescription) for pregnancy approach
- Add CanEverProduceChild check with translated reason
- Consolidate duplicate certainty into single item with change rate
- Use translated labels (IdeoRoles, NoRoleAssigned, Effects, Certainty)
- Fix cursor jumping after role/pregnancy actions via parent walk-up
- Allow ITab_Genes through Hidden tab filter for gene inspection
- Add Alt+I to open info cards for gear, hediffs, and genes
- Show "Inspectable." suffix on items with available info cards
- Set LinkedDef on gene tree nodes for info card navigation
…tech DLC)

Integrates the Biotech DLC's "Try Romance" feature into the accessible
Social tab tree with keyboard navigation. Viable targets show success
chance percentages, Enter initiates romance, and Alt+I opens a factor
breakdown via StatBreakdownState. Gated behind Biotech DLC, pawn
eligibility, and Full inspection mode. Includes duplicate job guard
and Dialog_MessageBox passthrough for relationship warning dialogs.
Rearchitect starting site selection to share the same navigation
experience as the in-game F8 world map. World gen now supports the
scanner, Z search, number keys 1-5, 3D compass navigation, and
biome descriptions announced on biome change.

- Add WorldNavContext enum (InGame/WorldGen) to WorldNavigationState
- Add BiomeDescriptionTracker for MUD-style biome descriptions
- Add StartingSiteContext for world-gen-only features (I-menu, R random,
  Ctrl+arrows biome jump, faction warnings, tile validation)
- Rewrite StartingSitePatch to route through shared WorldNavigationState
- Add context guards to caravan/quest methods (InGame only)
- Relax ProgramState.Playing checks for scanner search and tile info keys
- Guard EARLY BLOCK and F8 handler with InGame context
- Remove StartingSiteNavigationState (migrated to shared system)
- Remove dead code: CycleToNext/PreviousSettlement, CheckOffRoadOrRiver,
  wasOnRoad/wasOnRiver fields, lastAnnouncedInfo field,
  BiomeDescriptionTracker.SetCurrentBiome, ValidateTileForSettlement
…ing filtering

Replace static DefDatabase recipe query with vanilla's ingredient-aware
filtering (PotentiallyMissingIngredients, Worker.AvailableReport, HasHediff)
so the operations list dynamically shows/hides recipes based on available
items on the map.

Modernize HealthTabState with MenuHelper navigation (Home/End, wrapping),
TypeaheadSearchHelper for recipe and body part lists, and streamlined
announcements without redundant instructional text.

Fix Enter key leak where ActivateAction continued running after OnActivate
closed the inspection state, causing a spurious "No items to inspect"
announcement.
…rgeting

Items like sentience catalyst and mech serums use CompUsable/CompTargetable
targeting which was silently ignored by the mod. Now announces targeting start
using the game's own mouse-attached label text, provides error feedback on
invalid targets, and handles multi-phase targeting (e.g., select colonist
then select animal).
Fix Home/End keys jumping to wrong bulk group for mineables by checking
HasTerrainRegions in addition to IsTerrain in JumpToCurrent() and
ReadDistanceAndDirection(). Allow scanner keys during ViewingModeState
and ShapePlacementState by adding them to inPlacementMode check.
WeatherDef.maxRangeCap defaults to -1 (no limit), but the range check
unconditionally applied Mathf.Min(targetingRange, weatherCap), producing
rangeClamped=-1. Guard on rangeClamped>0 instead of targetingRange>0 to
match vanilla's validator pattern.
Use keyCode range checks instead of Event.current.character to detect
typeahead input, matching the pattern in HandleBillsMenuInput. The old
approach only caught the second IMGUI event (character='t'), letting the
first event (keyCode=T) leak to UnifiedKeyboardPatch where it triggered
game shortcuts like time announcements.
Add ExpandAllSiblings() method matching ThingFilterNavigationState's
WCAG tree view pattern. Wire up * key (KeypadMultiply and Shift+8) in
HandleThingFilterInput, and exclude Shift+number from typeahead to
prevent Shift+8 from being consumed as digit input.
The keyCode==None guard at UnifiedKeyboardPatch line 108 killed character-
only IMGUI events before they reached the policy editor handler, making
the Event.current.character-based typeahead detection dead code. Switch to
keyCode range checks to catch the first IMGUI event directly.
When a baby transitions to child at age 3, a ChoiceLetter_GrowthMoment
is created with only work type info and no passion/trait choices. The
auto-opened dialog was undismissable because GrowthMomentState consumed
all input without providing a close path for the no-choices case.
…rash

TransportersInGroup() returns a static shared list that RimWorld reuses
across calls. Iterating it during gizmo announcement could crash when
the game's rendering code called the same method mid-iteration.
Rewrite the character creation screen as an accessible treeview with
pawns grouped under Selected/Left behind headers, expandable categories
(Bio, Traits, Skills, Health, Possessions), and full keyboard navigation.

Key features: Page Up/Down preserves tree position across pawns,
Ctrl+Up/Down reorders, Alt+R randomizes, Alt+N renames with Title field,
] context menu with Biotech dev stage/xenotype submenus, typeahead search.

Fixes treeview not rebuilding after rename (was checking WindowStack for
intercepted dialog), improves start-game confirmation to list pawn names,
adds xenotype gene drill-down in info cards, and applies localization to
several hardcoded strings across world/site modules.
Add XenotypeEditorState and XenotypeEditorPatch to provide full keyboard
accessibility for Dialog_CreateXenotype during character creation. Uses
tabbed treeview architecture (Selected Genes, Gene Library, Controls)
with the same navigation patterns as XenogermState.

Key features:
- Gene library organized by GeneCategoryDef categories
- Individual gene toggle (add/remove from selected)
- Controls: biostats, name, name lock, inheritable, ignore restrictions,
  load custom/premade, save and apply
- Rename flow with TextInputHelper
- Front-loaded gene info (biostats + description) in collapsed labels,
  shortened to gene name on expand, restored on collapse
- Control tooltips announced during navigation
- Entry from both xenotype editor button and pawn context menu
- Right bracket key blocked to prevent input leak

Also improves GeneTreeBuilder for all gene browsing contexts:
- Rich collapsed labels with biostats and full description
- includeCategory parameter for context-appropriate labels
- Label restore on collapse in all gene inspection states
…ter creation

Add a full pawn filter editor (Alt+F or context menu) that lets players
set criteria for auto-rerolling pawns during character creation. Filters
include per-skill level/passion requirements, total passion range, total
skill points range, traits (required/excluded), age range, gender,
health conditions, and work incapabilities.

The filter uses a flat menu with section headers, typeahead search,
Page Up/Down section jumping, and a working copy pattern (Alt+S to save,
Escape to discard). When randomizing, pawns are rerolled in a loop until
a match is found or the configurable limit is reached, with time-based
progress announcements for long searches via screen reader.

Trait descriptions use the game's GrammarResolver API for proper
placeholder resolution with zero hardcoded strings.
Add all remaining RandomPlus features to the pawn filter:
- Gene-affected hediff exemption in health filters
- OnlyStartCondition health filter mode
- Optional trait pool system with required-from-pool setting
- Trait conflict prevention and roll chance display in picker
- Skill counting options (highest attack only, passion skills only)
- Save/load filter presets in RandomPlus-compatible format
- Higher reroll limits (up to 50,000)
- Fast reroll algorithm using reflection-based pawn generation
- Descriptive tooltips for skill counting options

Preset files use the exact same RandomPlus.xml format and location,
enabling blind RimWorld Access users and sighted RandomPlus users to
share presets seamlessly. Includes duplicate name detection on save
and proper character input routing for typeahead and name fields.
Add full keyboard-navigable ideology tab (F12 > Ideology) with two-panel
interface: ideology list + details tree view.

Details tree includes all sections matching vanilla's UI:
- Overview with leader title, worship room, adjective, member name
- Style categories with buildable/styled item lists and override tracking
- Memes as expandable nodes with all detail fields (unlocked roles,
  rituals, traits, research, conflicting precepts, etc.)
- Precepts, roles, rituals, buildings, relics, weapons, animals, apparel
- Role required apparel items with descriptions and Alt+I info cards
- Deities with name, type, gender, related meme
- Fluid ideology development points
- Appearance section with browsable hair/beard/tattoo styles by category
- Ritual ambience sound preview via Enter key with music silencing

Precept tooltips are parsed and consolidated into navigable child nodes.
Ability descriptions are enhanced inline. Style dominance/override info
shown using vanilla's translation keys.
Add keyboard accessibility to the ideology selection screen
(Page_ChooseIdeoPreset) during world generation. Two-tab interface:

- Options tab: Navigate Classic, Custom Fluid/Fixed, Load options
- Presets tab: TreeView organized by category (Mild/Strong/Intense)
  with expandable presets showing meme descriptions
- Alt+S/Alt+Y: Structure and style selection via windowless menus
- Full tree navigation, typeahead search on both tabs
- Block starting site input while ideology page is active
Add full keyboard accessibility to Dialog_ChooseNewWanderers (the
post-colony-death settler creation screen), reusing the existing
chargen tree navigation and RandomPlus filter system.

New wanderer dialog features:
- Full tree navigation with all existing shortcuts
- Alt+A to add pawns (up to 6), Delete to remove (min 1)
- Enter to confirm with safety dialog, Escape to close
- RandomPlus filter and reroll fully functional mid-game

Reroll algorithm improvements:
- Remove Normal mode, optimize Fast as the only algorithm
- Skip RedressPawn during search (called once on match)
- Conditionally skip health/work generation when not filtering
- Fix gender bug: fast reroll now sets gender from filter
- Fix mid-game crash: reuse age tracker to avoid
  LifeStageWorker null reference on unspawned pawns
- Frame-split reroll with time-boxed batches for responsive UI
- Escape cancels reroll, all other keys blocked during search
- Block Page.DoBack during reroll to prevent accidental navigation

Filter UI fixes:
- Fix duplicate "None" labels: NoPain/AllowNone now distinct
- Fix NoAddiction/NoDumbLabor using wrong translation keys
- Remove algorithm choice from UI (no longer needed)
- Add Shift+Home/End to jump sliders to min/max values
Same-TraitDef different-degree traits (e.g., Psychically hypersensitive
and Psychically deaf) are now excluded from the Required/Optional trait
picker when another degree of the same TraitDef is already required.
This complements the existing ConflictsWith check which only handled
cross-TraitDef conflicts and exclusion tags.
- Skip Page DoWindowContents when WindowlessFloatMenuState is active
  to prevent IMGUI context conflicts with Enter/Escape
- Add meme descriptions to structure menu items
- Remove redundant pre-announcements from structure/style menus
- Add one-time hint about Alt+S/Alt+Y when first tabbing to presets
Expanded nodes now announce only the section name (e.g., "Memes")
instead of the full aggregated content. Collapsed nodes still show
the full summary. Matches the StartingPawnState tree pattern for
consistent UX across the mod.
Expand/collapse actions now announce just the section name and state
(e.g., "Memes, expanded, 3 items"). Navigating to a collapsed node
still reads the full aggregated summary. Navigating to an expanded
node reads just the section name since children are visible below.
Add comprehensive gravship accessibility including destination selection,
landing placement with coordinate correction, layer cycling on world map,
and disconnected substructure detection with scanner integration.
…ility

Replace 70+ hard-coded English strings with RimWorld translation keys
across the options menu, storyteller selection, scenario selection, and
custom difficulty screens. Add tooltip announcements for 14 settings
that have game-provided tooltips (volumes, compression, camera, etc.).

Fix language selection menu opening an inaccessible vanilla FloatMenu
by routing through WindowlessFloatMenuState instead. Fix the same bug
for the soundtrack submenu. Add !WindowlessFloatMenuState.IsActive
guard to the options menu input handler so float menus can receive
keyboard input.

Use FriendlyNameNative for language labels so users see native names.
Localize On/Off checkbox values, day labels, permadeath mode labels,
and option category names via OptionCategoryDefOf.
Fix broken FavoriteColorTooltip translation in StartingPawnHelper
by providing required named arguments (PAWN, COLOR, PERCENTAGE,
ORIDEO) matching the game's CharacterCardUtility resolution.

Add favorite color to the info card Bio tab and the inspect
treeview Character section so it appears in both views. Guarded
by IdeologyActive and non-baby developmental stage checks.

Note: not yet thoroughly tested in-game.
Verb_Jump (Jump Pack, Locust Armor) extends Verb directly, not
Verb_CastAbility/IAbilityVerb, so it was undetected by the existing
ability targeting system. Add JumpTargetingState to provide full
accessibility during jump targeting: opening announcement with range
and charges, per-tile validity prefixes on arrow navigation, R key
for detailed range info, and specific error messages on Enter.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant