Staged knowledge: repin the two-AI digest for fighters staged knowing each other; LockOnSituation drops the no-track premise
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
d5d94fb483
commit
1a2a24ceb1
3 changed files with 7 additions and 6 deletions
|
|
@ -24,8 +24,9 @@ public sealed partial class RunStartTests
|
|||
// The two-AI fight's digest, captured on Yggdrasil. Replays are trusted only on the host class that recorded them
|
||||
// (ruling replays-per-host-class), and arenas run on Linux.
|
||||
private const string TwoAiPinnedHostClass = "linux-x64";
|
||||
// Repinned once, for the side split: the two fighters are unaffiliated, were one side and each followed itself.
|
||||
private const string TwoAiPinnedDigest = "1b2ffe51f799e762199717a3bc003e880a80106023463aabc40bd2e4f746697c";
|
||||
// Repinned twice. First for the side split: the two fighters are unaffiliated, were one side and each followed itself.
|
||||
// Then for staged knowledge (ruling repin-for-staged-knowledge): the fighters are staged knowing each other, so they engage at step 0.
|
||||
private const string TwoAiPinnedDigest = "ce81a426c40495e4b4b7b7f83ad23767cc781dce5523d713b4455e0aa5b7fe33";
|
||||
private const int TwoAiSteps = 3600;
|
||||
|
||||
[Fact]
|
||||
|
|
|
|||
|
|
@ -23,10 +23,10 @@ public sealed partial class RunStartTests
|
|||
var toPlayer = normalize(player.Position.xz - hostile.Position.xz);
|
||||
Assert.True(dot(normalize(hostile.Direction), toPlayer) >= cos(radians(5f)), "the hostile faces the player");
|
||||
|
||||
// The first real sensing tick: the hostile holds no track of the player, and the sim's own passive sensing, asked for
|
||||
// the player's signature at the staged place, settles below the detection threshold: the staging is out of its sight.
|
||||
// The hostile is staged knowing the player (ruling stage-states-pilot-knowledge): it starts with a track of it. The sim's
|
||||
// own passive sensing, asked for the player's signature at the staged place, settles below the detection threshold: the
|
||||
// staging is out of its sight, so the staged track is all that carries it in.
|
||||
arena.Update(.1f);
|
||||
Assert.False(hostile.VisibleEnemies.Any(x => ReferenceEquals(x, player)), "the player is out of sight");
|
||||
Assert.DoesNotContain(player.IncomingPaints, paint => paint.Mode == PaintMode.Track);
|
||||
Assert.True(player.Visibility > 0f, "the player shows a signature to be seen by");
|
||||
var threshold = player.ItemManager.GameplaySettings.TargetDetectionInfoThreshold;
|
||||
|
|
|
|||
|
|
@ -462,7 +462,7 @@ public sealed partial class RunStartTests
|
|||
var aim = normalize(east.Command.Aim.Value.xz);
|
||||
var toThird = dot(aim, normalize(third.Position.xz - east.Position.xz));
|
||||
var toWest = dot(aim, normalize(west.Position.xz - east.Position.xz));
|
||||
Assert.True(toThird > toWest + .2f, $"aims at the designated target: toThird {toThird} toWest {toWest}");
|
||||
Assert.True(toThird > toWest + .2f, $"aims at the designated target: toThird {toThird} toWest {toWest} tracked {east.VisibleEntities.Contains(third)}");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
|
|||
Loading…
Reference in a new issue