Fix stray line in IsRevealed's comment; drop the seen-destroyed record of a departed subject with no book

The previous commit does not build (a leftover line in FireControl.cs). EndReveals
only runs for subjects the book holds, so a record of a quiet departed ship was held
for the sitting; Sense's prune now ends it too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Meta Vens 2026-10-15 04:44:24 +02:00
commit a554d5ed08
3 changed files with 27 additions and 1 deletions

View file

@ -1244,6 +1244,9 @@ public abstract class Entity
foreach (var reveal in pair.Value.Values) freshest = Math.Max(freshest, reveal.Time);
if (Zone.Time - freshest >= memory) _agedSubjects.Add(pair.Key);
}
// A record of a subject that left and holds no book (a quiet ship, never seen to act) has no entry to age: it goes now.
foreach (var subject in _seenDestroyed.Keys)
if (!entities.Contains(subject) && !_reveals.ContainsKey(subject)) _agedSubjects.Add(subject);
for (var i = 0; i < _agedSubjects.Count; i++) EndReveals(_agedSubjects[i], null);
_agedSubjects.Clear();
}

View file

@ -157,7 +157,8 @@ public static class FireControl
// book holds a reveal of it (Entity.HasReveal: it saw the item act) and the item is still fitted to its ship and
// not destroyed. The book says what was seen; the live item says whether it can still be aimed at. Derived on
// every read, never cached; watching a ship reveals no gear. Any aiming choice that reads an item's class or
XX
// stats (Combat's target-item choice, its dps) asks this; it is the item gate of Entity's aim slot (TrySelectTargetItem,
// ResolvedAim). A mount is aimed by TrySelectMount, which reads no item at all.
public static bool IsRevealed(Entity observer, EquippedItem item) =>
!item.EquippableItem.IsDestroyed && item.Entity.Equipment.Contains(item) && observer.HasReveal(item.Entity, item);