Commit graph

3,276 commits

Author SHA1 Message Date
Meta Vens
3ca3fcde7b TheAIHoldsAtItsEffectiveRange lets the Online change land between toggles
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 03:52:32 +02:00
Meta Vens
6c924e79e0 TheAIHoldsAtItsEffectiveRange toggles Enabled, the writable source of Online
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 03:50:10 +02:00
Meta Vens
aed269ad94 Fire clamps the delivery range to Range; smoke-rounds keeps the template's falloff ratio; fixtures follow the gate
Not yet verified together.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 03:04:45 +02:00
Meta Vens
6025009b24 range-falloff: rewrite only stale records; EffectiveRange joins the Range role; fixture fixes
EffectiveRange takes Range's role in the roles maps; the lock weapon's array
header grows to 37 with the weapon base's new keys; the AI test builds its
gun's effective range in the encounter fixture. Not yet verified.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 02:44:45 +02:00
Meta Vens
177bf4ba50 AetherDb range-falloff: fix a newline literal that did not compile
The previous commit (5e0ec925) does not build tools/AetherDb.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 02:21:46 +02:00
Meta Vens
5e0ec92509 Damage falloff: effective range and damage at max range replace DamageCurve
WeaponData.RangeFactor is the one function of damage over range: 0 outside
[MinRange, Range], 1 up to EffectiveRange, one lerp to DamageAtMaxRange.
DamageCurve (key 7, retired) and its formula parameters, CurveField's
BezierCurve path, and every fixture curve line are deleted. Fire freezes
damage times the factor at BurstReach; the AI's DPS reads, Combat's optimum
sampling and the properties panel chart read the same function. AetherDb
gains range-falloff (command only; the catalog is re-saved in a later commit).
Cut and wiring land in one commit rather than two; this commit has not been
built yet.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 02:16:04 +02:00
Meta Vens
b836af4850 Merge origin/master into loot-3 (second) 2026-10-13 23:30:23 +02:00
Meta Vens
78ccb81f72 Merge origin/master into loot-3
No conflicts; GameData/Aetheria.cc taken from master (loot-3 authors no catalog).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 23:13:22 +02:00
Meta Vens
5c2c11bfd0 Merge origin/master into ew-claims-in-the-book
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 22:53:15 +02:00
Meta Vens
c1eee662f9 Loot 3 fix1: the stand-in pose check derives its progress from the rule, not from FieldTester
The pull-progress input came from FieldTester.PullProgress, so a mutant of that function agreed with itself. The smoke now spells the pull start from Extend and Envelop independently.
Builds; both smokes green; Unity mutant u-f killed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 22:34:50 +02:00
Meta Vens
64fd701920 Merge origin/master into ew-hide-launch-catalog
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 22:34:03 +02:00
Meta Vens
a345bd3dcb Loot 3 fix1: the loot-3 findings' fixtures, and the held-pose curve has one owner
PickupTests: TheBeamTakesFromWhicheverBayCanStore is a theory over which bay is full.
CapabilityPresentationSmoke: tracked ship's hull hit is drawn; a beam above the held point stays on the ground plane; a grab at the beam keeps its aim; the other entity's grab reaches its own bound beam and not this one.
FloatingItemsDrawnSmoke: a held item's label comes up; the test scene's stand-in pose equals the zone's held pose.
Zone.HeldPull is the one smoothstep of the held pose; FieldDriver's tendril and FieldTester's stand-in call it (FieldTester.PulledPosition, PullProgress), deleting the two copies.
All commits build (Unity compile and both smokes green).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 22:25:49 +02:00
Meta Vens
9ae8cd277e EW 2 fix: wear the fixture gun to 95% range, above the fuse arming distance
A gun worn to half its range falls under the fuse's arming distance and FireControl refuses it, so the fixture never fired. At 95% the gun fires and its live range (38) still differs from its rated 40.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 21:56:09 +02:00
Meta Vens
49ef136d1c GameData/Aetheria.cc: apply AetherDb launch-suppressor again, landing only its own records (replay the command at merge, do not merge the blob)
Output of `dotnet run --project tools/AetherDb -- launch-suppressor apply` at 18fa8a5e on the catalog at fa6108de (sha256 of the base 1a2cb55b63f77a113dea0571716994ef8311d5da572a4fc41cbd3a7d2561fb68, of the result f1642a12c3f7b1184a159985944f128704bd489151f8fb9077a057b9c0fa7347). Decoded against the base: 258 -> 266 records, header equal, 8 added, no base record changed (the previous blob re-encoded four). The dry run printed:

    /src/Assets/Scripts/ServerShared/Behaviors/LockWeapon.cs(49,25): warning CS0067: The event 'LockWeapon.OnLocked' is never used [/src/Aetheria.Shared/Aetheria.Shared.csproj]
    /src/Assets/Scripts/ServerShared/Behaviors/LockWeapon.cs(51,25): warning CS0067: The event 'LockWeapon.OnLockLost' is never used [/src/Aetheria.Shared/Aetheria.Shared.csproj]
    /src/Assets/Scripts/ServerShared/Behaviors/LockWeapon.cs(50,25): warning CS0067: The event 'LockWeapon.OnBeginLocking' is never used [/src/Aetheria.Shared/Aetheria.Shared.csproj]
    New designs:
      Launch Suppressor  1x1 Tool  mass 60  price 40000  durability 50  roles [baffles, heat sink]
          Factor 0.08-0.03 (baffles)
          HeatPerUnit 1.4-0.8 (heat sink)
          RatedTemperature 310-330 (heat sink)
          "Baffles and a heat sink remove nearly all of a weapon's launch flash, hiding the shot from its target. The removed light is dissipated as heat in the device's own cell; above its rated temperature it passes the full flash."
      Launch Baffle      1x1 Tool  mass 60  price 25000  durability 50  roles [baffles, heat sink]
          Factor 0.4-0.2 (baffles)
          HeatPerUnit 0.8-0.5 (heat sink)
          RatedTemperature 310-330 (heat sink)
          "Baffles dim a weapon's launch flash to a fraction and a heat sink absorbs the difference. The target still sees the shot; distant observers do not. The sink sustains the effect through a long fight."

    New products:
      Launch Suppressor -> "Velvet Rope" by NiteLife, every role mean 0.55 dev 0.12: Keeps the flash on the inside. Nobody sees who you let out.
      Launch Suppressor -> "Hush" by Finch, every role mean 0.65 dev 0.2: Small, quiet, and the first shot is a secret. The second, probably.
      Launch Suppressor -> "lights out" by DME, every role mean 0.55 dev 0.2: no flash/ no name/ nobody saw a thing
      Launch Suppressor -> "Plausible Deniability" by R&D, every role mean 0.6 dev 0.15: Hides 100% of launches!* *Launches defined as the ones nobody saw.
      Launch Baffle -> "Low Profile" by Lightsail, every role mean 0.55 dev 0.1: Quiet on the manifest, quiet on the scope. A hauler nobody notices is a hauler that gets paid.
      Launch Baffle -> "Fast Pass Dim" by Alakrita, every role mean 0.6 dev 0.14: Takes the glare off every launch and keeps the schedule. Anyone close enough to mind was already your problem.

    Dry run. Pass "apply" to author 2 designs and 6 products.

The full Aetheria.Shared.Tests suite passed on this catalog (1714 passed, 0 failed) at 18fa8a5e.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 21:55:10 +02:00
Meta Vens
18fa8a5e1d launch-suppressor: apply lands only its own records; tests pin late hiding, the rating line, linear suppression and a named observer sensor
Command: the batch carries ExpectUnchanged, so CultCache lands it onto the file as it is. A plain commit re-encoded every record through today's types (two sensors lost a retired key-7 payload and gained a trailing nil, LRMM72 and GT 3K gained a trailing nil); this one leaves every record it did not author byte-identical. A conflicting writer now fails the apply instead of being overwritten.

Tests: the mild baffle stores exactly flash x Factor and pays exactly its predicted heat for the first 30 launches of a 300 flash or 8 of a 1000 flash, then is either hidden or bright; the rating is pinned to half a kelvin either side at three heat-sink qualities; suppression and heat are checked at six flash strengths; the observer fits the named sensor 'not if i see you first'; the command test widens every payload and checks apply leaves all other records byte-identical.

This commit's GameData/Aetheria.cc pointer is the previous apply's output; the regenerated catalog follows in its own commit. Not built or run at this commit yet.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 21:37:41 +02:00
Meta Vens
01ccb32b89 EW 2 fix: the worn-gun fixture reads its live range after the gun has ticked in the test's own path
The previous commit ticked before firing and the gun never lit; the wear is attached, the gun fires, then the live range is asserted.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 21:37:23 +02:00
Meta Vens
0eb7a2734e Merge origin/master into scenarios-lock-on-r3 2026-10-13 21:36:00 +02:00
Meta Vens
b6146022e7 EW 2 fix: claims fixtures see live state; hull claim guard both ways; charged multiplier once; stale gear sorts last
- Enemy and own schematic rows, and the rebuild key's Item half, are pinned by fixtures whose live range differs from the rated range and whose guns share a claimed design.
- Entity.Claim refuses a hull class on a non-hull item as it refuses a non-hull class on the hull.
- ChargedWeapon live reads (DamagePerSecond, RangeDamagePerSecond) start from the uncharged damage so the charge multiplier is applied once and a nominal weapon reads its rated figure at every charge.
- RevealedWeapons orders reveals of gear the subject no longer carries after all fitted gear, then by lot.

Builds and tests unverified at this commit; verification follows.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 21:19:53 +02:00
Meta Vens
c648416b59 Lock On test: drop the monotonic-Strength assertion, which the sim does not promise
The lock's Strength rises from its first paint to its last; it is not monotonic. Builds: yes (test-only change after 038628e9, which built and failed this assertion).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 20:35:22 +02:00
Meta Vens
3f7bd145bb GameData/Aetheria.cc: apply AetherDb launch-suppressor (replay the command at merge, do not merge the blob)
Output of `dotnet run --project tools/AetherDb -- launch-suppressor apply` on the catalog at fa6108de (sha256 of the base 1a2cb55b63f77a113dea0571716994ef8311d5da572a4fc41cbd3a7d2561fb68, of the result 3c2f3649762d35f66f3f220dbd4aa289d1711f05f8b7195a4cc3e5cc43085fa8). The dry run printed:

    New designs:
      Launch Suppressor  1x1 Tool  mass 60  price 40000  durability 50  roles [baffles, heat sink]
          Factor 0.08-0.03 (baffles)
          HeatPerUnit 1.4-0.8 (heat sink)
          RatedTemperature 310-330 (heat sink)
          "Baffles and a heat sink remove nearly all of a weapon's launch flash, hiding the shot from its target. The removed light is dissipated as heat in the device's own cell; above its rated temperature it passes the full flash."
      Launch Baffle      1x1 Tool  mass 60  price 25000  durability 50  roles [baffles, heat sink]
          Factor 0.4-0.2 (baffles)
          HeatPerUnit 0.8-0.5 (heat sink)
          RatedTemperature 310-330 (heat sink)
          "Baffles dim a weapon's launch flash to a fraction and a heat sink absorbs the difference. The target still sees the shot; distant observers do not. The sink sustains the effect through a long fight."
    New products:
      Launch Suppressor -> "Velvet Rope" by NiteLife, every role mean 0.55 dev 0.12: Keeps the flash on the inside. Nobody sees who you let out.
      Launch Suppressor -> "Hush" by Finch, every role mean 0.65 dev 0.2: Small, quiet, and the first shot is a secret. The second, probably.
      Launch Suppressor -> "lights out" by DME, every role mean 0.55 dev 0.2: no flash/ no name/ nobody saw a thing
      Launch Suppressor -> "Plausible Deniability" by R&D, every role mean 0.6 dev 0.15: Hides 100% of launches!* *Launches defined as the ones nobody saw.
      Launch Baffle -> "Low Profile" by Lightsail, every role mean 0.55 dev 0.1: Quiet on the manifest, quiet on the scope. A hauler nobody notices is a hauler that gets paid.
      Launch Baffle -> "Fast Pass Dim" by Alakrita, every role mean 0.6 dev 0.14: Takes the glare off every launch and keeps the schedule. Anyone close enough to mind was already your problem.
    Dry run. Pass "apply" to author 2 designs and 6 products.

Builds and passes the full suite (1687 passed, 0 failed) at this commit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 20:28:02 +02:00
Meta Vens
90294e0fef EW 2 fix: the enemy schematic's rows, claimed class and range label are derived in ServerShared
Entity.SchematicRows(subject) owns which weapon rows a schematic shows, each row's item and
claimed design, and its range (own ship: live; any other: the claimed design's rated range).
SchematicDisplay renders SchematicRow and decides nothing. Headless tests cover default-to-truth,
a weapon claimed as another weapon, a weapon claimed as a non-weapon, own rows, and the rebuild key.

Builds on the Shared side not yet verified at this commit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 20:21:15 +02:00
Meta Vens
038628e914 Lock On: observe "beyond its sight" in the sim's own sensing, pin the hostile's facing, stage off axis, read the lock's Strength
The Update(0) checks could not fail and the 40..200 tick window was tuning. The test now asks the hostile's
PassiveInfo for the player's signature against the detection threshold after the first real tick, asserts the
hostile has no track then, pins the facing, and asserts the Track paint's Strength rises. The hostile is staged at
(1500, 3700) facing the player. The unsound comment about the player's sight is corrected.

Builds: not yet verified (verify job follows).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 20:13:02 +02:00
Meta Vens
de6dbce70f AetherDb launch-suppressor: two Tool designs (Launch Suppressor, Launch Baffle) and six products, with catalog and command tests
The catalog tests need the applied catalog; this commit does not pass them until the next commit lands the apply output.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 20:10:21 +02:00
Meta Vens
0ee04f2081 Map: weapon damage over range (range falloff is never applied; census of authored curves; options)
Body facts R1-R3 for ruling range-ramps-not-curve: no hit path scales damage by
range, DamageCurve feeds only AI estimates and a UI chart, and 26 of 27 shipped
weapons carry one copied default curve. Options with cost, a recommendation to
delete the curve, and cut-sequence lines damage-curve-delete,
sensor-bearing-shape and consumable-effectiveness.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 20:04:16 +02:00
Meta Vens
a35dc97790 Merge remote-tracking branch 'origin/master' into HEAD 2026-10-13 20:02:58 +02:00
Meta Vens
b0fc86c774 Release map: generic-design-names refresh at 1746e8bd (GN1-GN8, brands and flavour under kitchen-sink-content); catalog-breadth lines follow catalog-breadth-now
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 20:00:14 +02:00
Meta Vens
fa6108de7d EW map: 1b r2 (two suppressor designs) and probes K9-K11 (sensor reach, suppressor endurance, opening volley)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-13 20:00:04 +02:00
Meta Vens
adb632fe3d Hull-claim test: signature strong enough to survive the one-tick exponential decay
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 19:58:56 +02:00
Meta Vens
1e219e96e3 Fauna r2: target content r2 (attacks, harvest, flow owner, Sol, seeded placement, kitchen-sink classes), map r2 (B15-B23, decisions, r2 cut sequence), placement prior art and probe
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 19:55:24 +02:00
Meta Vens
a782c7d5d2 EW 2 fixes: one hull claim slot, explicit tie order, one burst divisor, fixtures that see range and live state
- Entity: delete _hullClaim; the hull's claim is the EquippedHull entry of _itemClaims, so ClaimOf(EquippedHull)
  and ClaimedHull read one slot (hull-claim-split). Claim(HullData) writes it; a non-hull claim of the hull throws.
- RevealedWeapons orders by the subject's equipment order, not dictionary slot order (tie-order-unpinned).
- InstantWeaponData.PerRound is the one burst divisor for UpdateStats and the rated read (burst-divisor-twice).
- Tests: falling-curve, Range-span, MinRange>0 fixtures and a charged weapon in the rated tests (rated-figure-range-blind);
  Combat ranks claims at the target's distance, ignores a worn target gun's live figure (live-state-unpinned),
  and takes ties in equipment order.

Not yet run; may not build.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 19:55:18 +02:00
Meta Vens
1746e8bdc8 Research: orbit probe (rails vs gravity terrain, slope-squared and potential readings, implied density)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 19:38:05 +02:00
Meta Vens
ab42214329 EW map: cut 1b probes at 0898725f (K1-K8); ew-hide-launch-catalog mapped as cut-ew-hide-launch-catalog.r1; H7 corrected (union key 49)
The 1b line leaves the cut sequence. The spec is blocked on question ew-suppressor-strength
(what the suppressor hides from: its target or only distant observers), recommended
hides-from-the-target. Probes ran on Yggdrasil from a scratch commit never pushed to origin.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 19:36:40 +02:00
Meta Vens
05b17ba43a Scenarios: Lock On (seed 113), a piloted hostile that closes from out of sight and locks the player
The hostile starts 4000 m ahead with no track of the player; stepped headlessly it
sees the player at tick 81 and paints a Track lock at tick 83. LockOnSituation pins
the staging, the absence of a paint at Update(0), and the lock's bearing and timing.
LockOn.cs.meta is provisional until the Unity compile on Starfire writes its own.
Builds: yes (not yet run; verification follows).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 19:13:59 +02:00
Meta Vens
f9705d328b Merge remote-tracking branch 'origin/master' into eureka/aetheria-fauna-map 2026-10-13 19:05:37 +02:00
Meta Vens
7f0b8e4cbd Fauna: target r0 and map for proposed campaign aetheria-fauna; prior art kept
Imagination pass (imagination-aeth-fauna, self-2026-10-13-ag2). Target: fauna are
simulated props seen through the one gain rule, each class with a legible motion
law (ruling disguise-held-by-flying). Map: body facts B1-B14 with a cost probe on
Yggdrasil, nine draft questions, first cut fauna-krill-swarms as a draft spec,
later cuts one line each. Docs only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 19:03:11 +02:00
Meta Vens
e99cfbed37 Release map: visibility refresh at 0898725f (scenarios-lock-on r3, sensor-catalog r2; concurrency vs ew-claims)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 18:59:38 +02:00
Meta Vens
48b42992ee Loot 3 group A: the grab is presented, not simulated
IGrabPresenter.Grab(GrabEvent) only; the binder's Transform and velocity resolvers go. TractorBeam
presents a running grab (aims at Started's TargetPosition, emits at Power, dark otherwise). FieldDriver
draws its tendril from GrabEvents alone with a real-time phase clock over each event's PhaseDuration and
writes no transform and destroys nothing; its grab times move to FieldTester, now the scene's stand-in sim
that owns its pickup's timeline and pose. ItemPickup keeps its label lit while held. ImpactPresenterSmoke
becomes CapabilityPresentationSmoke with a grab section; its two untracked-ship expectations follow
DrawsAt since contact-hud. Builds (Unity 6000.3.24f1 batchmode: smoke ok, scene opens, no missing script).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 18:43:15 +02:00
Meta Vens
24ab95af8d Loot 3 group B fix: compare FloatingBodyId with Equals (the type has no ==)
8b2eef7b did not build (CS0019 at PickupTests.cs:419); this commit builds the test project.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 18:23:40 +02:00
Meta Vens
ad71eabbaa WeaponData.RatedRange is not a MessagePack member
The previous commit's public RatedRange property had no Key, so MessagePack refused to build the formatter for every weapon design and the catalog failed to load (869 tests red). Marked [IgnoreMember]. The previous commit (76aeeabf) compiles but does not run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 18:19:53 +02:00
Meta Vens
8b2eef7b51 Loot 3 group B: PickupTests two-bay fixture and TheBeamTakesFromWhicheverBayCanStore
Spawn takes bays (default 1) and equips that many crates before Zone.Admit. The new test fills the
first bay and expects the beam to claim and land the ore in the second, pinning ruling
beam-skips-unstorable-items over bays (Select's Any over bays). Builds; test not yet run on Yggdrasil.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 18:18:23 +02:00
Meta Vens
76aeeabfca EW 2: claims ride the act into the book; schematic and AI classify from them
Signature, ActiveEmission and Reveal carry Claimed (the class the ship's EW claims for the item, the true item's data by default); Entity gains the claim slots and one write port; Contact gains Profile, derived from the ship's claimed hull once Identified; Entity.RevealedWeapons is the one classifying read for weapons. Combat and the enemy schematic read it; their reads of the target's live gear are cut. Weapons rate by their claimed design (ew-claim-weapon-measure-ruled, rated-design): WeaponData.RatedRangeDamagePerSecond runs the same per-kind formula as the live weapon. Aim, damage and physics keep the truth.

Not yet compiled or run at this commit; the Unity-only SchematicDisplay is unverified.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 18:17:14 +02:00
Meta Vens
0898725f62 Release map: L11 loot-3 probes at cb14a816 (FieldDriver on no ship, beam aim from HeldFrom, multi-bay fixture order); loot-3 leaves the cut sequence
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 18:11:46 +02:00
Meta Vens
cb14a816f8 EW map: cut 2 probes at 0681d6f2 (C1-C10), Contact.Profile derived until the judge, claim slots
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 09:14:14 +02:00
Meta Vens
0681d6f29b Merge fix: the contact-hud test removes through Zone.Remove (Zone.Entities is read-only on master)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 08:48:39 +02:00
Meta Vens
16466b148a Merge cut contact-hud (Soul verdicts cut-contact-hud.s1, .s2) 2026-10-13 08:48:13 +02:00
Meta Vens
a89d30376d Fix merge build: contact reveal tests remove through Zone.Remove; PickupTests settings drop the retired TargetArmorInfoThreshold
The merge commit before this does not build.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 08:31:27 +02:00
Meta Vens
fbe05c7992 Merge cuts loot-1-present and loot-2 (Soul verdicts cut-loot-1-present.s1, cut-loot-2.s2)
Conflicts: Behaviors.cs keeps Union(48, PickupData) and Union(49, LaunchSuppressorData);
Zone.cs keeps the departure record on _entities with master's Visibility (emissions-heard);
ContactRevealTests.cs keeps master's removal of the emission-departure test.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 08:27:47 +02:00
Meta Vens
0bff723029 contact-hud: the shield ripple draws only where DrawsAt places the ship
Fixes finding shield-ripple-draws-on-untracked. ShieldManager already reaches
ActionGameManager (Clock), so DrawsAt stays the one owner. Unity code; compile
verified separately.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 08:00:28 +02:00
Meta Vens
a1d1db963f contact-hud: RevealedSubjectsListsTheBook holds two subjects at once, then one departs
Fixes finding revealed-subjects-multi-subject-unpinned.

All commits build.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 08:00:26 +02:00
Meta Vens
4fba95e56f Pickup: one beam region for selection and the pre-pull cancel; selection skips what no bay can store; test gaps and the phase rule pinned
beam-corner-claim-loop: InBeam is the one region predicate; Select claims from it and the pre-pull cancel holds the item only while it stays in it (an item at 74 along, 20 off is collected, not claimed and dropped every other tick).
full-hold-regrab-pins-and-blocks: Select skips an item no cargo bay can store whole, asked of the bay's own TryFindSpace (the test TryStore opens with), per ruling beam-skips-unstorable-items; a hold that fills mid-grab still cancels at the end.
pickup-test-gaps: smoothstep pose, spin-down while the gear is inactive, Remove freeing only the removed holder's items.
phase-ticks-not-rate-invariant: the claim is corrected in the tests; each phase fires on the first tick at or after its boundary, pinned at 1/60, 1/600 and an uneven dt cycle.

Builds; not yet run (the verify job follows).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 07:43:42 +02:00