Command seam: the trio's third ship sits in east's sensor cone; the lock pin holds the guns so the lock completes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
76e4e6f58f
commit
d8a4e1567d
2 changed files with 3 additions and 2 deletions
|
|
@ -15,12 +15,12 @@ using float3 = CultMath.float3;
|
|||
// edges: a press is one pull and a let-go one release.
|
||||
public sealed partial class RunStartTests
|
||||
{
|
||||
// East, west 200 away and a third 250 away, all seen by east once the zone has stepped.
|
||||
// East, west 200 away and a third about 277 away, both ahead of east and seen by it once the zone has stepped.
|
||||
private (Zone arena, Ship east, Ship west, Ship third) PlayerSeamTrio()
|
||||
{
|
||||
Ship third = null;
|
||||
var (arena, east, west) = SeamPair(false, (stage, e, w) =>
|
||||
third = stage.Place(EvLonginus(stage), float2(350, 0), facing: float2(-1, 0)) as Ship);
|
||||
third = stage.Place(EvLonginus(stage), float2(-150, 120), facing: float2(1, 0)) as Ship);
|
||||
for (var step = 0; step < 600 && !(east.VisibleEntities.Contains(west) && east.VisibleEntities.Contains(third)); step++) arena.Update(SeamDt);
|
||||
Assert.Contains(west, east.VisibleEntities);
|
||||
Assert.Contains(third, east.VisibleEntities);
|
||||
|
|
|
|||
|
|
@ -318,6 +318,7 @@ public sealed partial class RunStartTests
|
|||
var agent = arena.Agents.Single(a => a.Ship == east);
|
||||
var locks = east.Weapons.OfType<LockWeapon>().ToArray();
|
||||
Assert.NotEmpty(locks);
|
||||
agent.Doctrine.MinHitProbability = 2; // its guns hold fire, so its aim settles and the lock completes
|
||||
var step = 0;
|
||||
for (; step < 3000 && !(SeamState(agent) is CombatState && locks.Any(l => l.IsLocked)); step++) arena.Update(SeamDt);
|
||||
Assert.True(locks.Any(l => l.IsLocked), $"locked by step {step}: {string.Join(",", locks.Select(l => l.Lock))}");
|
||||
|
|
|
|||
Loading…
Reference in a new issue