public override void Activate(Actor self, Order order, SupportPowerManager manager) { base.Activate(self, order, manager); self.World.AddFrameEndTask(w => { Shroud shround = self.Owner.Shroud; WPos destPosition = order.Target.CenterPosition; var cells = Shroud.ProjectedCellsInRange(self.World.Map, self.World.Map.CellContaining(destPosition), WDist.FromCells(info.Radius)); try { shround.AddSource(this, type, cells.ToArray()); } catch { shround.RemoveSource(this); shround.AddSource(this, type, cells.ToArray()); } shround.ExploreProjectedCells(self.World, cells); if (!string.IsNullOrEmpty(info.Sequence)) { string palette = null; if (info.Platte == "player") { palette = "player" + self.Owner.InternalName; } else { palette = info.Platte; } self.World.Add(new SpriteEffect(destPosition, self.World, info.Image, info.Sequence, palette)); } }); }