While a spell was targeting, the world pick admitted every unit and player. A unit the spell could not take, standing in front of one it could, took the hover and the click:
- a hostile or dead unit in front of a friend under a heal;
- a living player standing on a corpse under Resurrection;
- any unit in front of a chest under a lock word.
In the reference, both world picks build their flags through `0x481050`. While targeting (`4810f1`-`481187`):
- a word with unit bits (`0x6e6180`, `& 0x878e`) adds units and players (`0x18`);
- three relation flags follow: party `0x10000` (`0x6e61e0`, `& 0x40c`), assist `0x20000` (`0x6e6200`, `& 0x500`) and attack `0x40000` (`0x6e6210`, `& 0x480`);
- a dead-target word (`& 0x8600`) adds `0x200040`, and any other adds `0x100000`;
- `0x6e6240` (`0x8000`) adds assist, and `0x6e6250` (`0x200`) adds attack.
`0x480610` then drops a unit or player candidate when:
- none of the relations the flags ask for holds (`480686`): `0x606c20`, `CanAssist 0x6066f0` or `CanAttack 0x606980`, toward the active player;
- its liveness is not the one asked for (`4806fd`, signed `UNIT_FIELD_HEALTH` above 0);
- it has `UNIT_FIELD_FLAGS & 0x100` (`480737`).
A word with no unit bits puts no unit in the pick at all (`0x480780`'s unit and player arms need `0x8` and `0x10`).
- `spell/targeting/pick.rs`: `PickFlags::of(word)` builds the flags as `0x481050` does, and `PickFlags::admits` applies the three legs.
- `0x606c20` is built here, from the published party slots.
- `TargetHoverState::is_candidate` routes units and players through it on both the posed pass and the box fallback. The press latches the same pick.
- `CanAssist` and `CanAttack` toward a candidate become `TargetRelations::assistable` and `attackable`, shared with the binder's arms. The binder's behaviour is unchanged.
- The alive test is `bind_gates::unit_alive`.
Tests:
- `pick.rs` covers the flag table, each relation, Resurrection, the enemy corpse word, `0x100`, the caster, and `0x606c20` for self, a party member, pets and a stranger.
- `hover.rs` stands two units on the cursor's ray. The rear unit wins when the front one is refused. A lone refused unit gives no pick, and a word with no unit bits picks no unit. The press latches the rear unit.
- Outside targeting the front unit still wins.
Fixes#464🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>