Repository navigation
Conversation
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Test plan