The latest *Shogun Exodus* devlog update introduces significant visual and UI enhancements, starting with a complete greyscale calibration of the game’s material palette. This overhaul standardizes the source art for ores and ingots to ensure consistent color grading, while newly added persistent hair-color generation offers more diverse, moddable appearance options for Servants and the Shogun. Additionally, players will find refined user interface elements, including new ink window art assets, smoother opening animations, and optimized layout behaviors for the Jobs grid and action buttons.
On the gameplay front, stairs have been fully integrated into the advanced-placeable construction pipeline, allowing player-built and automatically generated stairs to inherit material-specific stats, colors, and values. This patch also delivers key bug fixes, resolving missing dead-servant portraits on the HUD and addressing a pathfinding issue where undertakers could become permanently stuck during corpse-hauling tasks.
Raw Patch Notes
- Created new 5 new art assets for ink window UI. - Created 10 new art assets for UI elements, such as checkboxes, sliders, and more. - Added the larger `ThickLongBig` frame and animation as a sixth data-driven variant, available to every main ink window through the existing automatic selector. Opening animations now conceal direct content roots with transparency and temporarily stop their processing while preserving container layout; large windows such as Jobs therefore keep their final size throughout the sequence instead of jumping larger on the static frame. This deliberately avoids tracking dynamic descendant controls, which menus may rebuild during the animation. - Corrected MediumLong and ThickLongBig animation exports to their standardized 285x500 and 316x500 canvases. Added a shared opening-ended signal/state contract to `InkPanelContainer`; Jobs and Container Overview now wait until the animation handoff is complete before starting their periodic 0.5-second refresh timers, avoiding an expensive redundant content rebuild on the final animation frame and providing the same hook for future refreshing menus. - Jobs priority buttons now set the existing action-style exclusion metadata when created, so the initial styling pass preserves their intended compact 56x34 grid geometry instead of briefly expanding them to ordinary menu-action buttons before the first refresh. - Button artwork follow-up (2026-07-17): ordinary action buttons and narrow/wide dropdown rows now use their new hover textures. Their backgrounds render at 75% opacity without fading text, and each style's horizontal safe margins now match at the previously larger side (action 50px, narrow 35px, wide 33px). - Jobs grid follow-up (2026-07-17): reduced only the Work Hours cell outlines to 50% opacity; enabled-hour fill and cell contents remain unchanged. UPDATE 2026-07-17 #150 - Greyscale-Calibrated Material Palette - Graphics update: Updated visuals for the Stairs graphics to better fit and connect with rooms, and created material mask. - Graphics update: Greyscaled various items to fit new corrected/universal colour grading. - Graphics update: Fixed certain hairstyles to be more in line with default black colour as other hair styles. - Graphics update: Fixed minor issues on loading screen images. - Recalibrated every base ore/ingot `visual_adjustments` entry for true neutral greyscale source art while preserving the established material palette: cool Iron, bright Aluminum, warm Copper, blue Zinc, dark Lead, Gold, Silver, Tin, Carbon, Steel, and Bronze. - Corresponding ores and ingots now share the same revised grading values. Colored materials use direct greyscale-origin hues; neutral materials no longer depend on negative saturation offsets that only worked with the old subtly coloured source art. - Verified the revised palette through the existing `ItemVisuals` adjustment formula against the greyscale Vent artwork and ran the main project with no current-run errors. Art assets were intentionally not converted as part of this change. - Files: `Data/Items/materials.json`, `current-game-setup.txt`, `mod-guide.txt`, `update-log.txt`. - Corrective follow-up: removed stale editor-cache references to the deleted one-use calibration script that had left its old parse error visible, and explicitly set the Castle Camera2D to the physics callback Godot was already applying automatically under physics interpolation. This suppresses the interpolation warning without changing camera behavior. A runtime-only lineup of all 11 ingots was spawned across the ground floor for immediate visual testing; it is intentionally not persisted in project data. - Follow-up file: `Scenes/Base.tscn`. UPDATE 2026-07-17 #151 - Materialized Buildable Stairs - Converted stairs into the normal advanced-placeable pipeline while preserving their existing W/S climb behavior and scene-owned climb geometry. Stairs now cost 10 of one ingot-tagged material, inherit the selected material's name, colour, Beauty, Value, Toughness, Conductivity, Heat Resistance, and Weight at 1x, and use the existing rust/clean-rust condition flow. They remain structural, non-carryable, non-inventory, and non-dismantleable. - Player-built stairs can be constructed on an ordinary width-1 placement knob before an upper room exists. Placement reuses the building's stair connection geometry and refreshes the cached navigation snapshot only when stairs are added/removed; a staircase into empty space simply has no usable upper destination yet. - Automatically generated stairs now receive the same placeable instance, material visuals, stats, conditions, and saved mutable state. `BuildingSpawner` can inherit material settings from the active style or override them in the Inspector with fixed, seeded-per-Castle, or seeded-per-stair selection plus editable fixed material/pool fields. Base style defaults to fixed Iron and provides Iron/Steel/Bronze for deterministic variation modes. - Stair texture materialization reuses `ItemVisuals`' cached mask/condition pipeline with the active theme texture as the base, adding no stairs-specific per-frame work or repeated tree scan. Generated-stair state is captured only during the existing save/rebuild flow, and navigation refresh requests are deferred/coalesced. - Corrected player-built stairs to use the same absolute z layer as generated stairs, keeping them in front of floor dividers even when their placement knob belongs to another relative canvas layer. - Files: `Data/Items/placeables.json`, `Data/LoadingScreenText.json`, `Config/Buildings/Styles/building_style_themes.json`, `Scenes/Buildings/Stairs.tscn`, `Scripts/Buildings/BuildingSpawner.gd`, `Scripts/Buildings/GeneratedPlacementKnob.gd`, `Scripts/Buildings/GeneratedStairs.gd`, `Scripts/Placeables/PlaceableBase.gd`, `Autoload/ItemVisuals.gd`, `current-game-setup.txt`, `mod-guide.txt`, `update-log.txt`. - Intentional data change: the built-in `stairs` placeable ID and `stairs_materials` style block are new mod-facing contracts. BuildingSpawner save state advances to schema version 3 to include generated-stair state; no legacy compatibility layer was added. - Right-click inspection now falls back to each placeable Sprite's complete image rectangle when no physics provider is found. This makes the full visible bounds of generic placeables and stairs inspectable without expanding their gameplay `UseArea` or climb geometry; overlapping image bounds prefer the visually uppermost candidate. - Follow-up file: `Scripts/ClickSelect.gd`. UPDATE 2026-07-17 #152 - Dead-Servant Portraits & Corpse-Haul Recovery (bug fixes) - Fixed: a dead Servant's portrait vanished from the building portrait row instead of showing the death (skull) portrait. The HUD excluded every "dead" actor from the roster, so the skull the slot already knew how to draw was never displayed. The row now keeps a dead Servant's skull portrait until its corpse has been hauled to the entrance and disposed (while it is still in the "corpses" group), then drops it on the next refresh. `_collect_building_roster` now includes dead actors and `_actor_belongs_to_building` admits dead actors that are still registered corpses. - Fixed: an undertaker could get permanently wedged holding a corpse "at the door" without ever delivering it. Delivery depended solely on reaching a fixed radius of the entrance point, with no recovery if the pawn parked just short or could not path there, and CorpseSystem never reassigned the corpse while the haul was still "active". Carrying now also delivers once navigation has parked the pawn at the entrance (arrived and idle), and if the entrance cannot be pathed to at all the pawn drops the corpse where it stands and releases the haul so CorpseSystem can reassign it (mirrors the existing give-up path used while walking TO a corpse). - Not addressed: a separate report of a rebuilt scaffold freezing its build progress after the original builder died mid-construction. It could not be reproduced (non-deterministic pawn behavior) and no confident root cause was isolated, so no change was made. - Files: `Scripts/UI/BuildingPortraitHUD.gd`, `Scripts/BasicWanderAI.gd`, `current-game-setup.txt`, `update-log.txt`. UPDATE 2026-07-17 #153 - Persistent Moddable Hair Colours - Added persistent hair-colour generation for Servants and the Shogun through the existing appearance recipe. The base palette contains unchanged greyscale black at exactly 50%, with blue-black, ash brown, dark brown, warm brown, chestnut, mahogany, auburn, copper brown, and golden brown sharing the remaining probability equally. - Hair colour is baked once before the paired front/back layers are composited. The bake preserves the source greyscale value, alpha, and contrast while applying only the selected hue/saturation; black skips processing entirely. Finished cached textures automatically carry the result into world actors, portraits, damage flashes, and floor reflections with no per-frame tint system. - Added a bounded transient style/colour source cache for spawn bursts, released alongside full-resolution appearance sources after the existing idle window. Hair-colour work runs only while building a missing appearance plan, never from ticks, stats, or frame processing. - Appearance generation palettes and profile tint rules deep-merge through `Data/Characters/appearance_generation.json`. Recipes persist `shared_tints.hair`; missing values in existing saves generate on normalization. Specific spawn profiles and the `SpecificPawnSpawner` Inspector can force a stable `hair_color_id`, while modded pre-coloured parts/layers can opt out of tinting. - Files: `Autoload/CharacterAppearanceService.gd`, `Scripts/DevTools/SpecificPawnSpawner.gd`, `Scripts/Player.gd`, `Data/Characters/appearance_generation.json`, `Data/Characters/appearance_slots.json`, `Data/SpawnProfiles/character_spawn_profiles.json`, `current-game-setup.txt`, `mod-guide.txt`, `update-log.txt`.
*This is an automated post, using Python and LLMs to summarize game updates. Mistakes, while rare, may happen.

Leave a Reply