Skip to content

[pull] master from beyond-all-reason:master - #251

Merged
pull[bot] merged 9 commits into
ExaDev:masterfrom
beyond-all-reason:master
Sep 21, 2026
Merged

pull[bot] merged 9 commits into
ExaDev:masterfrom
beyond-all-reason:master

Conversation

@pull

@pull pull Bot commented Sep 21, 2026 •

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

burnhamrobertp and others added 9 commits September 21, 2026 19:28
Cuts the comments across the keybind editor files back to what cannot be
read off the code, changing nothing else.

There were 1574 lines of them, mostly one fact wrapped in two or three
lines of justification, plus a 27 line block naming each field of a
state table and the same note about Lua's 200 local ceiling written out
in five places. Left alone: the section banners in the keyboard page,
which a few other widgets also use, and the blocks in
keyboard_layouts.lua that came from someone else.

AI disclosure: written with assistance from Claude Code.
Matches unbind directives the way the engine parses them when migrating
a player's uikeys.txt, instead of comparing the keyset text.

A modifier bound on its own is the same keyset as its Any+ form,
modifier order does not count, an action's command word is lower-cased,
and a keychain is stored under its last tap. The reader did none of
that, so a player who wrote "unbindkeyset alt" had it quietly do nothing
and the binding came back in their migrated profile. It reads as a
camera bug because Any+alt and Any+ctrl are what the shipped profiles
bind moverotate, movereset and movetilt to. All four rules are measured
against a headless recoil_2026.07.04 rather than read off the engine
source, which I got wrong twice; the one easy to assume backwards is
that "unbindkeyset sc_l" removes the chain sc_l,sc_l,sc_l while
"unbindkeyset sc_l,sc_l,sc_l" removes nothing.

AI disclosure: written with assistance from Claude Code.
Keeps a copy of any file the keybind store is about to write over, and
stops a stored profile standing in for one that ships.

The copies matter least: they were written once and never again, so a
second migration or an unreadable profiles file destroyed what was
there. The shipped-name case is the one that could cost real work, since
materialize resolved the store ahead of the builtins and so a
keybind_profiles.json naming a profile "Grid" shadowed the real Grid
everywhere. That entry is now kept under a free name with the selection
following it, rather than the player quietly landing on stock bindings.

AI disclosure: written with assistance from Claude Code.

---------

Co-authored-by: Floris <ruwetuin@hotmail.com>
### Work done

This is a substantial rewrite of game_critters.lua while preserving most
of its behaviors. Critters keep the same modoptions, population
dynamics, and patrol routes.

Improves paired critter (companion) behavior. Commanders can pair to a
critter by approaching them, not only by spawning on top of them. You
are still limited to one pet apiece. Companions gain extra health and
speed, up to the commander's, to keep up with them.

Various small improvements:

- When critter populations return after being decreased due to unit
limits, they are returned from the list of culled critters. A culled
seahorse does not become a seagull.
- Patrol orders are sent from only one code location.
- Unknown critters in map configs no longer break from iter. Everything
that can spawn, ought to.
- The gadget removes itself in multiplayer when possible.

---------

Co-authored-by: efrec <quantumscrewdriver@gmail.com>
### Work done

Allows other envDamageTypes to damage commanders when in the protection window for preventcombomb.
### Work done

Moves unit attribute definitions to a shared module.

This allows them to be reused by both COB and LUS, which is fine but unneeded. I mostly need this for writing tests. Keeping the definitions contained in the gadget made tests rely on parsing, guesswork, or code duplication. It was very smelly in there.

Wired an unused LUS, armmar_lus, for an example use case. It is inert in current code.
@pull pull Bot locked and limited conversation to collaborators Sep 21, 2026
@pull pull Bot added the ⤵️ pull label Sep 21, 2026
@pull
pull Bot merged commit 1750fce into ExaDev:master Sep 21, 2026
2 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants