diff --git a/modules/rust/PLAN_REDESIGNS.md b/modules/rust/PLAN_REDESIGNS.md index 35b0537..87f841a 100644 --- a/modules/rust/PLAN_REDESIGNS.md +++ b/modules/rust/PLAN_REDESIGNS.md @@ -1,7 +1,7 @@ # `module-rust` — the redesigns, planned **Status:** plan, written 2026-09-27. **Its eleven questions were answered the same day: D188–D198 (§10).** -On 2026-09-28 the org lead added the first-class optional plugins (§11, D199–D202), and after the RaidableBases spike, D203–D205 (§11.4). +On 2026-09-28 the org lead added the first-class optional plugins (§11, D199–D202), and after the RaidableBases spikes, D203–D208 (§11.4). It is step 3 of [`PLAN_FIXES.md`](PLAN_FIXES.md) §6: the six changes the org lead decided during the first player walk, each "planned in detail before code". The org lead asked for all six in one plan (2026-09-27), so they can be read together. No code has been written for any of them yet. @@ -635,6 +635,9 @@ The org lead added §11 on 2026-09-28 and answered its questions the same day: | **D203** | **RaidableBases picks where an event's base goes**; the site learns the spot from `OnRaidableBaseStarted` and shows it. The paid edition's placement, if it has one, is offered where installed. | A helper that places a base at a chosen monument. | 11.4.3 | | **D204** | **At an event's end, a helper (`RunicGatewayRaids.cs`, D168) despawns only that event's base.** Without the helper the base despawns on its own timer, and the run records it as expiring on its own. | Leaving every base to its timer; RaidableBases' "despawn all". | 11.4.3 | | **D205** | **An event picks a RaidableBases profile and a difficulty, may override a bounded set of settings for that spawn (through the helper), and the site edits RaidableBases' profiles** — a named exception to the editor never walking a data directory. | Profile and difficulty only; overrides without profile editing. | 11.4.3 | +| **D206** | **Lock-to-first-attacker is set per event.** RaidableBases keeps it only in its main config, so the raids helper patches the base's `BypassUseOwners()` to answer from the run's own setting for the event's base, and leaves every other base to the config. | One server-wide switch the config page edits; no lock control at all. | 11.4.5 | +| **D207** | **A step places its base either where RaidableBases picks (the default, D203) or at an admin-given spot:** x and z, plus either a height adjustment or an exact height. The spot needs the raids helper; without it the step offers only the plugin's pick. | Only an admin-given spot; keeping D203 alone. | 11.4.5 | +| **D208** | **A blocked spot is refused, with the reason.** The step does not spawn when the plugin's area check fails or the helper's water and terrain test fails, and the run log says why ("player building", "raid base", "in water"). The editor runs the same check when the step is saved. | Falling back to the plugin's pick; spawning anyway. | 11.4.5 | ## 11. First-class optional plugins (D199–D202) @@ -890,6 +893,24 @@ zone helper does. initialization completed". This includes the helper's spawns. The step has to wait for that, not fail on it. +#### 11.4.5 Decided after the helper spike (2026-09-28) + +The org lead answered §11.4.4's three questions the same day: + +- **D206: lock-to-first-attacker is per event.** The helper adds a second Harmony patch, on each base's + `BypassUseOwners()`. For a base the helper tagged for a run, it answers from that run's setting. Every + other base, including one an admin spawns by hand, still follows RaidableBases' config. Without the + helper the lock follows the config, and the step says so. +- **D207: a step places its base one of two ways.** The default is D203, where RaidableBases picks. The + other is an admin-given spot: x and z, plus either a height adjustment (added to the profile's own) or + an exact height (the profile's forced height). Both go through the helper's deep copy of the profile + (§11.4.4). The spot needs the helper; without it the step offers only the plugin's pick. +- **D208: a blocked spot is refused, and the run log says why.** At spawn time the helper runs + RaidableBases' own area check and its own water and terrain test. If either fails, the step does not + spawn, and the run records the reason ("player building", "raid base", "in water"). The editor + runs the same check through the bridge when the step is saved. That is advice only, since the world + can change before the event runs. + ### 11.5 Protocol These are new verbs, events and hello fields. If they are built before the cutover they join the unreleased