Skip to content

Strider Hub: Caretaker-built striders, dedicated Strider tab, grid-power requirement - #5843

Draft
amnykon wants to merge 7 commits into
ZeroK-RTS:masterfrom
amnykon:claude/caretaker-strider-hub-u37qtu
Draft

amnykon wants to merge 7 commits into
ZeroK-RTS:masterfrom
amnykon:claude/caretaker-strider-hub-u37qtu

Conversation

@amnykon

@amnykon amnykon commented Sep 23, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Strider Hub build area now lets Caretakers build Striders, requiring the hub to be grid-powered (not just un-EMPed)
  • Extends strider building to mobile constructors, Commander, and Athena
  • Adds a dedicated Strider tab (Y) instead of listing striders under the Units tab, plus a Special-tab button opening a hidden strider tab
  • Strider Hub range rings shown while using the build-plate command
  • Various UI fixes: re-evaluating the plate button once a unit becomes a Caretaker

Test plan

  • Manual in-game testing: Caretaker building striders in a powered Strider Hub build area
  • Verify grid-power requirement blocks building when un-powered but not EMPed
  • Verify Strider tab (Y) and Special-tab button behavior
  • Verify mobile constructors/Commander/Athena can build striders as intended

The Strider Hub was the only "factory" without a plate. This makes the
Caretaker act as its plate: when a Caretaker is within range of a powered
Strider Hub (its own or an ally's) it can build the Hub's full strider
roster, but only inside that Hub's build area.

- units/staticcon.lua, units/striderhub.lua, gamedata/unitdefs_post.lua:
  tag the Hub (strider_hub) and Caretaker (strider_builder), give the bare
  nano tower the Hub's roster as its build options, and mark it
  isfakefactory + notreallyafactory so the striders show in the generic
  Units tab (same pattern as Athena).
- LuaRules/Gadgets/unit_strider_hub_access.lua (new): gates strider builds.
  AllowCommand only permits a strider build whose position is inside a
  powered, same-allyTeam Hub's build area; per-Caretaker it greys the
  strider buttons (EditUnitCmdDesc) with a reason when no Hub is in reach.
  New orders only, so in-progress strider nanoframes are never interrupted.
- LuaUI/Widgets/cmd_factory_plate_placer.lua: draws the green build-area
  circle on own/allied Hubs while placing a strider or a Caretaker, plus a
  connector line when placing a Caretaker; the build-plate button builds a
  Caretaker when near a Hub.
- LuaUI/Widgets/gui_chili_integral_menu.lua: greyed strider buttons show the
  "requires a powered Strider Hub in range" reason.

Allied selection of nano towers (RecoilEngine ZeroK-RTS#567) is left as a separate,
engine-dependent follow-up; this mechanic does not require it.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W6ELrTnhihWASn88QXyvM2
The Caretaker could build striders next to an unpowered Strider Hub: the
"powered" check only tested GetUnitIsStunned/disarmed/morphDisable, which
covers EMP and paralyse but not the energy grid. A Hub has neededlink=50, so
unit_mex_overdrive.lua sets its "lowpower" rules param to 1 when its grid
cannot supply that energy. Include lowpower in IsHubPowered so an unpowered
(but un-EMPed) Hub no longer counts as operational, and seed each Hub's
initial powered state from the same check.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W6ELrTnhihWASn88QXyvM2
Any mobile constructor, the Commander and Athena can now build striders in a
powered Strider Hub's build area, not just the Caretaker. Because they move,
their strider buttons are enabled whenever the allyTeam owns a powered Hub
(position-independent), while AllowCommand still confines each strider to a
Hub's build area, so a worker issues the order anywhere and drives in to build.

- gamedata/unitdefs_post.lua: tag all mobile cons, the Commander (commtype) and
  Athena as strider builders. When appending the Hub roster, skip striders the
  builder can already make (e.g. Athena's own striderantiheavy) and self-builds,
  and record only the newly granted striders in "strider_gated" so a builder's
  native builds keep their normal, ungated behaviour.
- unit_strider_hub_access.lua: gate exactly each builder's "strider_gated" set;
  mobile builders use "any powered Hub exists" for the button state, static ones
  keep the proximity check.
- cmd_factory_plate_placer.lua: draw the green build-area circle for any strider,
  but keep the placement line and build-plate button to the immobile builder
  (the Caretaker); mobile builders are not ground-placed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W6ELrTnhihWASn88QXyvM2
Putting striders in the generic Units tab caused two problems: the Units-tab
hotkey (any+n) clashed with Fire State (n) on armed builders like the Commander,
and Athena's Units tab overflowed so most striders were pushed off the grid.

Add a dedicated "Strider" tab, hotkeyed to Y, that non-factory strider builders
(Caretaker, mobile cons, Commander, Athena) use for their strider roster, laid
out from the Strider Hub's own build list. Striders are excluded from the Orders
and Units tabs, so armed builders no longer gain a Units tab (n stays Fire State)
and Athena's own units keep the Units tab to themselves. Factories, including the
Strider Hub, keep their existing Units tab.

- integral_menu_commands_processed.lua: build buildCmdStrider from the Hub roster.
- integral_menu_config.lua: new "strider" command panel; exclude striders from
  the orders and units_mobile panels.
- gui_chili_integral_menu.lua: tab_strider option, hotkey handler and ordering.
- zk_keys.lua: bind the Strider tab to any+y.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W6ELrTnhihWASn88QXyvM2
Replace the dedicated Strider tab with a submenu, per review: cons, the
Commander and Athena now reach striders through a "Strider" button in the
Special tab (grid hotkey Y) that opens a hidden integral-menu tab, instead of a
tab in the strip. This removes the Units-tab hotkey clash with Fire State on the
Commander and Athena's build-menu overflow, without adding a tab for cons.

The hidden-tab mechanism (hiddenTab panels + WG.IntegralMenu.OpenTab /
CloseHiddenTab / IsHiddenTabOpen) is ported byte-for-byte from PR ZeroK-RTS#5771's
generic infrastructure so the two merge without conflict (git resolves the
identical change on both sides). Strider-specific pieces live in files/lines
ZeroK-RTS#5771 does not touch: a new CMD_STRIDER_MENU command, its Special-tab Y
position, its click hook, and the hidden strider panel.

The Caretaker keeps its own Units tab: dropping notreallyafactory makes it a
fake factory, so its striders show in units_factory (it is unarmed, so no Fire
State clash) and it needs no submenu button. Mobile builders get the button;
the immobile Caretaker does not.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W6ELrTnhihWASn88QXyvM2
Using the build-plate button near a Strider Hub switched to placing a Caretaker
but then locked there: MakePlateFromCMD set the Caretaker active and returned
nil, so cmdPlateDefID stayed nil and Update's re-evaluation loop never ran
again -- moving the cursor to a nearer factory could not switch to that
factory's plate.

Track the Caretaker placement in a new cmdStriderBuilder state (parallel to
cmdPlateDefID) that Update keeps re-evaluating, so the cursor can move between a
Hub (Caretaker) and factories (their plates) freely. It is kept out of
buildPlateCommand so the Caretaker placement still draws only the Hub build
area, not every factory's range. Also drop back to the plate cursor if the
cursor leaves all targets while placing a Caretaker.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W6ELrTnhihWASn88QXyvM2
The build-plate command drew range rings around factories but nothing around
Strider Hubs, so a Hub gave no feedback (no grey "out of range" ring) until the
cursor was already close enough to switch to placing a Caretaker.

Draw Hub overlays whenever the plate command is active (as well as when placing a
strider or Caretaker): a green build-area circle plus a plate-range ring that is
green when the cursor is in range and grey when out, matching factory placement.
Added on the minimap too. The connector line stays limited to actually placing a
Caretaker, since the plate command already draws its own line to the nearest
factory.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W6ELrTnhihWASn88QXyvM2
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