public void AddProjectedShroudGeneration(Actor a, PPos[] shrouded)
{
if (a.Owner.IsAlliedWith(self.Owner))
return;
foreach (var uv in shrouded)
generatedShroudCount[(MPos)uv]++;
if (generation.ContainsKey(a))
throw new InvalidOperationException("Attempting to add duplicate shroud generation");
generation[a] = shrouded;
Invalidate(shrouded);
}