Skip to content

Have a living heart create workers until the seat has four - #201

Open
Rokk001 wants to merge 136 commits into
tomluchowski:shaders-improvementfrom
Rokk001:pr/dungeon-heart-h4
Open

Rokk001 wants to merge 136 commits into
tomluchowski:shaders-improvementfrom
Rokk001:pr/dungeon-heart-h4

Conversation

@Rokk001

@Rokk001 Rokk001 commented Sep 27, 2026 •

Copy link
Copy Markdown

What

While a seat with a living heart has fewer than four workers, the heart creates one of the seat's own worker type at its tile every five seconds, until there are four. The creation clock is server-side only and resets whenever the heart creates none, so a long turn still creates at most up to the target. The existing no-worker notice stays and only shows until the first worker appears.

Saves

The clock is not saved with the level; after a load it simply starts over at zero. Old maps and saves keep working.

Stacking

This PR stacks on #197 (pr/defeat-sequence-2026-09-25), #198 (pr/dungeon-heart-h1), #199 (pr/dungeon-heart-h2) and #200 (pr/dungeon-heart-h3). Until all are merged, the diff against the base branch also shows their commits; the new work is the last commit. To see only this step, compare this branch against the head of #200.

Validation

  • Release build of the stacked branch succeeds (2026-09-27).
  • check_heart_auto_workers.py (15 checks: the first worker after about five seconds, four by about twenty seconds, none at four or more workers, none for a destroyed heart, a heart without its object, a seat without a worker class, the count starting at one, and the long-turn cap) and check_heart_mana.py (46 checks) pass.
  • Verified in game: a new seat gains its first worker after about five seconds and stops at four.

Supersedes #151, closed and force-pushed by mistake; recreated with the same content and cleaned-up commit trailers.

Rokk001 and others added 30 commits September 7, 2026 00:29
Embed per-monitor DPI awareness and maintain the verified OGRE 13.6.5 renderer patch required for context-safe window replacement, runtime GL options and correct fullscreen client geometry.

Validation: clean Release build, DPI and 3440x1440 fullscreen probes, three GL3Plus variants and the patch reverse check passed; version 0.7.1 remains unchanged because this is unreleased work and the project has no changelog.
Apply display, input, audio, gameplay, minimap, shadow and negotiated nickname changes to the running session while preserving rollback for failed window or input transitions and keeping the 3440x1440 navigation visible.

Validation: clean Release and Debug builds, packet tests, DPI, layout and GL3Plus probes passed; the user confirmed the reported resolution, fullscreen, cursor, flicker and navigation failures are fixed. Version 0.7.1 remains unchanged because this is unreleased work and the project has no changelog.
The spells tab put its ten buttons in a single row of 60 pixel squares running
out to x=700. The pane they live in is the window width minus the 200 pixels of
minimap, so at the 800 wide minimum window it is 600 pixels across, and the last
two spells, Weakness and the Eye of Evil, hung past its right edge where they
could be neither seen nor clicked. Only a window at least 900 wide showed the
whole row, and nothing said so.

The rooms tab solved the same problem long ago: two rows of 40 pixel buttons.
The spells tab now uses the same shape, five spells to a row, ending at x=300
with room to spare at any size the game accepts. The cooldown bar inside each
button now covers exactly its button too, instead of overhanging 20 pixels on
both sides, which with narrower buttons would have bled half way across the
neighbours.

The rooms tab had the tail of the same bug: the temple and portal buttons the
editor uses sat at x=570 to 690, past the same edge. They join the end of the
second row instead.

(cherry picked from commit 10db1cb)
@Rokk001
Rokk001 force-pushed the pr/dungeon-heart-h4 branch from c7362f1 to 251944c Compare September 30, 2026 05:00
Rokk001 added 29 commits October 8, 2026 21:59
…th packets

A packet that is too short only triggered a log message and left the
conqueror seat, the heart tile, the seat count and the heart health values
uninitialised. They now start as unknown (-1, no seats, a full heart).
Pi, the notify tolerance, the golden angle of the rubble layout and the
shake, pulse and flicker frequencies get names. The arithmetic is unchanged.
The diffuse and highlight terms were copied into both well functions; they
are now two small helpers. Pi and the degree/radian factors come from the ring
header, and the half segment width is derived from the segment size. The values
are unchanged.
The Windows scripts read the dependency, Visual Studio and Python locations
from one shared script, now named windows-paths.ps1 with the variables
taskDependencyRoot and taskPythonCmakeRoot. The locations can still be set
with OD_DEPS_ROOT, OD_PYTHON_ROOT and OD_VS_PATH.
Brings in the later changes of the defeat sequence and heart badge branch:
- packet values of the defeat, statistics and heart health messages are initialised
- the heart HP values of the heartHealth notification are documented
- named constants for the heart health ring and the heart burst
- if/else instead of nested ternaries for the badge ring colour
- named functions instead of lambdas in the defeat notification check
Brings in the later changes of the dungeon heart health branch:
- named critical heart fraction and legacy health per tile
- critical heart warning fires again after healing, defeat and heart health packet values initialised
- named constants for the heart burst and the notify tolerance of the heart ring
The six segment ring and the rendered badges of this branch are kept.
Brings in the later changes of the heart badge branch:
- shared lighting of the badge wells and named angle conversions
- named critical heart fraction and legacy health per tile
- initialised packet values and named constants for the heart burst and ring
- heart health ring, forged badges and rendered heart and coin symbols are unchanged
The defeat sequence adds materials/textures/DefeatFireball.png, but the credits
file had no entry for it. The texture is AI-generated for this project and
released under GPLv3+, same wording as the other generated textures.
Brings in the CREDITS line for the AI-generated defeat fireball texture so this
branch lists the asset it carries.
Brings in the CREDITS line for the AI-generated defeat fireball texture so this
branch lists the asset it carries.
Take over the shared script locations so the Windows scripts no longer contain a personal home folder path: the dependency, Visual Studio and Python locations are read from windows-paths.ps1.
The defeat sequence adds materials/textures/DefeatFireball.png, but the credits
file had no entry for it. The texture is AI-generated for this project and
released under GPLv3+, same wording as the other generated textures.
Take over the shared script locations so the Windows scripts no longer contain a personal home folder path: the dependency, Visual Studio and Python locations are read from windows-paths.ps1.
Take over the shared script locations so the Windows scripts no longer contain a personal home folder path: the dependency, Visual Studio and Python locations are read from windows-paths.ps1.
Take over the shared script locations so the Windows scripts no longer contain a personal home folder path: the dependency, Visual Studio and Python locations are read from windows-paths.ps1.
Take over the shared script locations so the Windows scripts no longer contain a personal home folder path: the dependency, Visual Studio and Python locations are read from windows-paths.ps1.
The defeat sequence adds materials/textures/DefeatFireball.png, but the credits
file had no entry for it. The texture is AI-generated for this project and
released under GPLv3+, same wording as the other generated textures.
Bring the latest tip of pr/defeat-sequence-2026-09-25 into this branch so it contains everything its predecessor now has.
Bring the latest tip of pr/defeat-sequence-2026-09-25 into this branch so it contains everything its predecessor now has.
Bring the latest tip of pr/dungeon-heart-h1 into this branch so it contains everything its predecessor now has.
Bring the latest tip of pr/dungeon-heart-h2 into this branch so it contains everything its predecessor now has.
Bring the latest tip of pr/dungeon-heart-h3 into this branch so it contains everything its predecessor now has.

This branch has not been deployed

No deployments
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.

2 participants