public override List <GameAction> GetActions() { List <GameAction> ret = new List <GameAction>(); GameAction pass = new GameAction(-1, -1, "Pass priority"); ActionCommandPairs.Clear(); ret.Add(pass); ActionCommandPairs.Add(-1, new CommandPassPriority()); int i = 0; foreach (Activatable act in MyGame.GetActivatables()) { if (!act.CanActivate(MyPlayer.Value(MyGame), MyGame)) { continue; } GameAction a = new GameAction(i++, act.Host.ID, act.ToString(MyGame)); //Should rather be a CommandSetAnnouncementState, but SetTarget is the earliest now implemented step that starts //activating the activatable. CommandBase com; if (act is Spell) { com = new CommandGroup( new CommandMarker(CommandMarkerType.StartActivating), new CommandMoveCard(act.Host.ID, ZoneType.Stack), new CommandSetIsActivating(act.Host.ID, act.Host.Value(MyGame).CurrentCharacteristics.Activatables.IndexOf(act), true, AbilityType.Activatable), new CommandSetTargetState(MyPlayer.ID, act.Host.ID, act.Host.Value(MyGame).CurrentCharacteristics.Activatables.IndexOf(act), AbilityType.Activatable), new CommandEnterInputState()); } else { com = new CommandGroup( new CommandMarker(CommandMarkerType.StartActivating), new CommandSetIsActivating(act.Host.ID, act.Host.Value(MyGame).CurrentCharacteristics.Activatables.IndexOf(act), true, AbilityType.Activatable), new CommandSetTargetState(MyPlayer.ID, act.Host.ID, act.Host.Value(MyGame).CurrentCharacteristics.Activatables.IndexOf(act), AbilityType.Activatable), new CommandEnterInputState()); } ActionCommandPairs.Add(a.ID, com); ret.Add(a); } return(ret); }