コード例 #1
0
 public Major(CardSelector cardSelector, GameState gameState)
 {
     _cardSelector         = cardSelector;
     _simpleAttackStrategy = new SimpleAttackStrategy(gameState);
     _finishHimStrategy    = new FinishHimStrategy(gameState);
     _gameState            = gameState;
 }
コード例 #2
0
 public ApplyModifiersToPermanents(
     CardSelector selector,
     params CardModifierFactory[] modifiers)
 {
     _selector = selector ?? delegate { return(true); };
     _modifiers.AddRange(modifiers);
 }
コード例 #3
0
 private static void Mixed()
 {
     
     Killsteal();
     if (CardSelector.Status == SelectStatus.Selected)
     {
         Orbwalker.ForceTarget(Target);
     }
     if (Target == null || !W.IsInRange(Target))
     {
         var allMinions = MinionManager.GetMinions(Player.Position, Q.Range, MinionTypes.All, MinionTeam.NotAlly, MinionOrderTypes.MaxHealth);
         if (allMinions.Count < 1) return;
         foreach (var minion in allMinions)
         {
             if (Damage.GetAutoAttackDamage(Player, Target, true) > minion.Health && Orbwalker.InAutoAttackRange(minion))
             {
                 Orbwalker.ForceTarget(minion);
             }
         }
     }
     else
     {
         if (IsInvul(Target))
         {
             CardSelector.StartSelecting(Cards.Yellow);
         }
         if (Q.IsReady() && Player.Mana >= 160) {
             Q.CastOnBestTarget(0f, false, true);
         }
         Orbwalker.ForceTarget(Target);
     }
 }
コード例 #4
0
ファイル: OnZoneChanged.cs プロジェクト: callumhutchy/grove
 public OnZoneChanged(Zone @from            = Zone.None, Zone to = Zone.None,
                      CardSelector selector = null)
 {
     _from     = from;
     _to       = to;
     _selector = selector ?? ((card, ctx) => ctx.OwningCard == card);
 }
コード例 #5
0
ファイル: GameAI.cs プロジェクト: amarillonmc/windbot
        /// <summary>
        /// Called when the AI has to select one or more cards.
        /// </summary>
        /// <param name="cards">List of available cards.</param>
        /// <param name="min">Minimal quantity.</param>
        /// <param name="max">Maximal quantity.</param>
        /// <param name="cancelable">True if you can return an empty list.</param>
        /// <returns>A new list containing the selected cards.</returns>
        public IList <ClientCard> OnSelectCard(IList <ClientCard> cards, int min, int max, bool cancelable)
        {
            // Check for the executor.
            IList <ClientCard> result = Executor.OnSelectCard(cards, min, max, cancelable);

            if (result != null)
            {
                return(result);
            }

            // Update the next selector.
            CardSelector selector = GetSelectedCards();

            // If we selected a card, use this card.
            if (selector != null)
            {
                return(selector.Select(cards, min, max));
            }

            // Always select the first available cards and choose the minimum.
            IList <ClientCard> selected = new List <ClientCard>();

            for (int i = 0; i < min; ++i)
            {
                selected.Add(cards[i]);
            }

            return(selected);
        }
コード例 #6
0
 public ApplyModifiersToPermanents(
     CardSelector selector,
     CardModifierFactory modifier)
 {
     _selector = selector ?? delegate { return(true); };
     _modifiers.Add(modifier);
 }
コード例 #7
0
ファイル: ManualCards.cs プロジェクト: wade1990/PortAIO
        internal static void Execute()
        {
            var wMana = ObjectManager.Player.Spellbook.GetSpell(SpellSlot.W).SData.Mana;

            if (ObjectManager.Player.Mana >= wMana)
            {
                if (Config.IsKeyPressed("csYellow") &&
                    (!Keyboard.IsKeyDown(Key.LeftShift) && !Keyboard.IsKeyDown(Key.LeftCtrl) &&
                     !Keyboard.IsKeyDown(Key.LeftAlt)))
                {
                    CardSelector.StartSelecting(Cards.Yellow);
                }

                if (Config.IsKeyPressed("csBlue") &&
                    (!Keyboard.IsKeyDown(Key.LeftShift) && !Keyboard.IsKeyDown(Key.LeftCtrl) &&
                     !Keyboard.IsKeyDown(Key.LeftAlt)))
                {
                    CardSelector.StartSelecting(Cards.Blue);
                }

                if (Config.IsKeyPressed("csRed") &&
                    (!Keyboard.IsKeyDown(Key.LeftShift) && !Keyboard.IsKeyDown(Key.LeftCtrl) &&
                     !Keyboard.IsKeyDown(Key.LeftAlt)))
                {
                    CardSelector.StartSelecting(Cards.Red);
                }
            }
        }
コード例 #8
0
ファイル: PlayerController.cs プロジェクト: MX-H/AIGame-Fork
    public void ServerStartCardSelection(PlayerController src, int seed1, int seed2, int seed3, CardGenerationFlags flags)
    {
        CardSelector cardSelector = GameUtils.GetCardSelector();

        cardSelector.SetCardSelection(this, src, seed1, seed2, seed3, flags);
        cardSelector.ShowSelections(this);
        RpcStartCardSelection(src.netIdentity, seed1, seed2, seed3, flags);
    }
コード例 #9
0
ファイル: PlayerController.cs プロジェクト: MX-H/AIGame-Fork
 public void RpcStartCardSelection(NetworkIdentity src, int seed1, int seed2, int seed3, CardGenerationFlags flags)
 {
     if (!isServerOnly)
     {
         CardSelector cardSelector = GameUtils.GetCardSelector();
         cardSelector.SetCardSelection(this, src.GetComponent <PlayerController>(), seed1, seed2, seed3, flags);
         cardSelector.ShowSelections(this);
     }
 }
コード例 #10
0
 private void Awake()
 {
     playerController = FindObjectOfType <PlayerController>();
     aiControl        = FindObjectOfType <AIControl>();
     cardHand         = FindObjectOfType <CardHand>();
     cardCreator      = FindObjectOfType <CardSelector>();
     powerCounter     = FindObjectOfType <PowerCounter>();
     winScreen        = FindObjectOfType <WinScreen>();
 }
コード例 #11
0
 private void Init()
 {
     if (s_Instance == null)
     {
         s_Instance = this;
     }
     else
     {
         Destroy(gameObject);
     }
 }
コード例 #12
0
        public CardSelector GetSelectedCards()
        {
            CardSelector selected = null;

            if (this.selector.Count > 0)
            {
                selected = this.selector[this.selector.Count - 1];
                this.selector.RemoveAt(this.selector.Count - 1);
            }
            return(selected);
        }
コード例 #13
0
        public ModifyPowerToughnessForEachPermanent(int?power, int?toughness, CardSelector filter,
                                                    Func <IntegerModifier> modifier, ControlledBy controlledBy = ControlledBy.SpellOwner)
        {
            _modifyPower     = power;
            _modifyToughness = toughness;
            _filter          = filter;
            _controlledBy    = controlledBy;

            _toughnessModifier = modifier();
            _powerModifier     = modifier();
        }
コード例 #14
0
        public CardSelector GetSelectedCards()
        {
            CardSelector selected = null;

            if (m_selector.Count > 0)
            {
                selected = m_selector[m_selector.Count - 1];
                m_selector.RemoveAt(m_selector.Count - 1);
            }
            return(selected);
        }
コード例 #15
0
 void Start()
 {
     selectionTool  = FindObjectOfType <SelectionTool>();
     cardCreator    = FindObjectOfType <CardSelector>();
     selectionPanel = FindObjectOfType <SelectionPanel>();
     selectionPanel.gameObject.SetActive(false);
     cameraRaycaster = FindObjectOfType <CameraRaycaster>();
     cameraRaycaster.layerChangeObservers += OnPathChange;
     Orange      = new Color(1, 0.5f, 0, 1);
     pauseScreen = FindObjectOfType <PauseScreen>();
     pauseScreen.gameObject.SetActive(false);
 }
コード例 #16
0
        public DestroyAllPermanents(
            CardSelector filter    = null,
            bool allowToRegenerate = true)
        {
            _allowToRegenerate = allowToRegenerate;
            _filter            = filter;

            SetTags(EffectTag.Destroy);

            if (!allowToRegenerate)
            {
                SetTags(EffectTag.CannotRegenerate);
            }
        }
コード例 #17
0
    void Awake()
    {
        if (gm != null)
        {
            Debug.Log("Failed Singleton Design");
        }
        else
        {
            gm = this;
        }

        mainCamera   = GameObject.FindGameObjectWithTag("MainCamera").GetComponent <Camera>();
        cardSelector = GameObject.FindGameObjectWithTag("CardSelector").GetComponent <CardSelector>();
    }
コード例 #18
0
        internal static void Execute()
        {
            var target = TargetSelector.GetTarget(Spells.Q.Range, TargetSelector.DamageType.Magical);

            if (target == null || !target.IsValidTarget(Spells.Q.Range) ||
                ObjectManager.Player.ManaPercent < Config.GetSliderValue("manaToHarass"))
            {
                return;
            }

            var qMana  = ObjectManager.Player.Spellbook.GetSpell(SpellSlot.Q).SData.Mana;
            var wMana  = ObjectManager.Player.Spellbook.GetSpell(SpellSlot.W).SData.Mana;
            var wManaP = wMana / ObjectManager.Player.Mana;

            if (target.Distance(ObjectManager.Player) <= ObjectManager.Player.AttackRange + 100 &&
                ObjectManager.Player.Mana >= wMana && Spells.W.IsReady() && Config.IsChecked("useWHarass"))
            {
                switch (Config.GetStringListValue("wModeH"))
                {
                case 0:
                    CardSelector.StartSelecting(
                        ObjectManager.Player.ManaPercent < Config.GetSliderValue("manaToHarass") + 10 + wManaP
                                ? Cards.Blue
                                : Cards.Yellow);
                    break;

                case 1:
                    CardSelector.StartSelecting(Cards.Yellow);
                    break;

                case 2:
                    CardSelector.StartSelecting(Cards.Blue);
                    break;

                case 3:
                    CardSelector.StartSelecting(Cards.Red);
                    break;
                }
            }

            if (Config.IsChecked("useQHarass") && Spells.Q.IsReady())
            {
                var qPred = Spells.Q.GetPrediction(target);
                if (ObjectManager.Player.Mana >= qMana && qPred.Hitchance >= HitChance.High)
                {
                    Spells.Q.Cast(qPred.CastPosition);
                }
            }
        }
コード例 #19
0
ファイル: GameAI.cs プロジェクト: Ygocore/windbot_v0.1.1
        public CardSelector GetSelectedCards()
        {
            CardSelector selected = m_selector;

            if (m_nextSelector != null)
            {
                m_selector     = m_nextSelector;
                m_nextSelector = null;
            }
            else
            {
                m_selector = null;
            }

            return(selected);
        }
コード例 #20
0
        internal static void Execute()
        {
            var wMana = ObjectManager.Player.Spellbook.GetSpell(SpellSlot.W).ManaCost;

            switch (CardSelector.Status)
            {
            case SelectStatus.Ready:
            {
                if (ObjectManager.Player.Mana >= wMana)
                {
                    if (Config.GoldKey)
                    {
                        CardSelector.StartSelecting(Cards.Yellow);
                    }
                    else if (Config.BlueKey)
                    {
                        CardSelector.StartSelecting(Cards.Blue);
                    }
                    else if (Config.RedKey)
                    {
                        CardSelector.StartSelecting(Cards.Red);
                    }
                }

                break;
            }

            case SelectStatus.Selecting:
            {
                if (Config.GoldKey)
                {
                    CardSelector.JumpToCard(Cards.Yellow);
                }
                else if (Config.BlueKey)
                {
                    CardSelector.JumpToCard(Cards.Blue);
                }
                else if (Config.RedKey)
                {
                    CardSelector.JumpToCard(Cards.Red);
                }

                break;
            }
            }
        }
コード例 #21
0
        public GUI(GraphicsDevice g, ContentManager c)
        {
            this.g = g;
            this.c = c;

            waveInfo = new WaveInfo("waveInfo", Rectangle.Empty);

            cardSelector = new CardSelector("cardSel", new Rectangle(1000, 1000, 0, 0));

            worldSelector = new WorldSelector("select", Rectangle.Empty);

            manaHandler = new ManaHandler("manaHandler", Rectangle.Empty);
            addGuiItem(manaHandler);
            addGuiItem(waveInfo);
            addGuiItem(cardSelector);
            addGuiItem(worldSelector);
        }
コード例 #22
0
        public SearchLibraryPutToZone(Zone zone, EffectAction <Card> afterPutToZone = null,
                                      int maxCount = 1, int minCount        = 0, CardSelector validator      = null,
                                      string text  = null, bool revealCards = true, DynParam <Player> player = null,
                                      CardOrder rankingAlgorithm = null)
        {
            _validator        = validator ?? delegate   { return(true); };
            _player           = player ?? new DynParam <Player>((e, g) => e.Controller, EvaluateAt.OnResolve);
            _text             = text ?? "Search your library for a card.";
            _zone             = zone;
            _afterPutToZone   = afterPutToZone ?? delegate { };
            _revealCards      = revealCards;
            _rankingAlgorithm = rankingAlgorithm ?? ((c, ctx) => - c.Score);
            _maxCount         = maxCount;
            _minCount         = minCount;

            RegisterDynamicParameters(_player);
        }
コード例 #23
0
        private static void LaneClear()
        {
            Killsteal();

            Orbwalker.ActiveMode = Orbwalking.OrbwalkingMode.LaneClear;
            var allMinions = MinionManager.GetMinions(Player.Position, Q.Range, MinionTypes.All, MinionTeam.NotAlly, MinionOrderTypes.MaxHealth);
            var lowHealtMinis = ObjectManager.Get<Obj_AI_Base>().Where(mini => mini.IsMinion && mini.IsEnemy && mini.Health < Q.GetDamage(mini));
            var bestPosition = Q.GetLineFarmLocation(lowHealtMinis.ToList()); //Get the location of the highest hit
            

            if (allMinions.Count < 1) return;
            
            foreach (var minion in allMinions)
            {
                if (CardSelector.Status == SelectStatus.Selected)
                {
                    Orbwalker.ForceTarget(minion);
                }
                if (Q.IsReady() && Player.Mana >= 160)
                {
                    if (bestPosition.Position.IsValid())
                    {
                        if (bestPosition.MinionsHit >= 2)
                        {
                            Q.Cast(bestPosition.Position, false);
                        }
                    }
                }
                else if(Player.Mana > 100 && W.IsInRange(minion) && W.IsReady())
                {
                    Console.WriteLine("Red card minion");
                    CardSelector.StartSelecting(Cards.Red);
                }
                else if (Player.Mana <= 100 && W.IsInRange(minion) && W.IsReady())
                {
                    Console.WriteLine("Blue card minion");
                    CardSelector.StartSelecting(Cards.Blue);
                }
                else
                {
                    Orbwalker.ForceTarget(minion);
                }
            }
        }
コード例 #24
0
        private static void Combo()
        {
            if (Target == null || !detectCollision(Target))
            {
                Console.WriteLine("Noone in range");
                return;
            }

            Killsteal();

            if (CardSelector.Status == SelectStatus.Selected)
            {
                Orbwalker.ForceTarget(Target);
            }
            if (IsInvul(Target) && W.IsInRange(Target))
            {
                Console.WriteLine("use yellow");
                CardSelector.StartSelecting(Cards.Yellow);
            }
            if (GetBool("UseIgnite") && CanIgnite() && GetDistance(Target) <= 300 && GetComboDamage(Target) >= (double)Target.Health)
            {
                Player.Spellbook.CastSpell(IgniteSlot, Target);
            }

            if (Q.IsReady() && Q.CastIfHitchanceEquals(Target, Q.MinHitChance))
            {
                Console.WriteLine("throw Q");
                Q.CastOnBestTarget(0f, false, true;
            }
            else if (W.IsInRange(Target) && W.IsReady())
            {
                Console.WriteLine("use yellow");
                CardSelector.StartSelecting(Cards.Yellow);
            }
            else
            {
                Console.WriteLine("AA");

                Orbwalker.ForceTarget(Target);
            }
        }
コード例 #25
0
    static void Main(string[] args)
    {
        string[] inputs;
        _turnCount    = 0;
        _cardSelector = new CardSelector();
        // game loop
        while (true)
        {
            for (int i = 0; i < 2; i++)
            {
                inputs = Console.ReadLine().Split(' ');

                if (i == 0)
                {
                    _playerStats = new PlayerStats(inputs);
                }
                else
                {
                    _enemyStats = new PlayerStats(inputs);
                }
            }

            int opponentHand = int.Parse(Console.ReadLine());
            int cardCount    = int.Parse(Console.ReadLine());

            var cards = new Deck(_playerStats);
            for (int i = 0; i < cardCount; i++)
            {
                inputs = Console.ReadLine().Split(' ');

                cards.Add(new Card(inputs, i));
            }

            var gameState = new GameState(cards, _playerStats, _enemyStats);
            var major     = new Major(_cardSelector, gameState);
            major.Play(_turnCount);
            _turnCount++;
        }
    }
コード例 #26
0
        internal static void Execute()
        {
            var wMana = ObjectManager.Player.Spellbook.GetSpell(SpellSlot.W).SData.Mana;

            foreach (var enemy in HeroManager.Enemies.Where(e => !e.IsDead))
            {
                if (Config.CanKillW && enemy.IsKillableAndValidTarget(Spells._w.GetDamage(enemy), Spells._w.DamageType, Orbwalking.GetRealAutoAttackRange(ObjectManager.Player) + 200))
                {
                    if (Spells._w.IsReadyPerfectly())
                    {
                        if (CardSelector.Status == SelectStatus.Ready)
                        {
                            CardSelector.StartSelecting(Cards.First);
                        }
                    }

                    if (CardSelector.Status == SelectStatus.Selecting)
                    {
                        CardSelector.JumpToCard(Cards.First);
                    }
                }
                else if (Config.UseGoldCombo)
                {
                    if (Spells._w.IsReadyPerfectly())
                    {
                        if (CardSelector.Status == SelectStatus.Ready)
                        {
                            CardSelector.StartSelecting(Cards.Yellow);
                        }
                    }

                    if (CardSelector.Status == SelectStatus.Selecting)
                    {
                        CardSelector.JumpToCard(Cards.Yellow);
                    }
                }
            }
        }
コード例 #27
0
        private static void Killsteal()
        {
            if (Target == null) return;
            if(CardSelector.Status == SelectStatus.Selected && W.IsKillable(Target)){
                Orbwalker.ForceTarget(Target);
            }
            if (Orbwalker.InAutoAttackRange(Target) && Target.Health <= Damage.GetAutoAttackDamage(Player, Target, true) && Orbwalker.InAutoAttackRange(Target))
            {
                Console.WriteLine("KS");
                Orbwalker.SetAttack(true);
            }
            else if (Q.IsKillable(Target) && Q.IsReady())
            {
                Console.WriteLine("KS");
                Q.SetSkillshot(Q.Delay, Q.Width, Q.Speed, false, SkillshotType.SkillshotLine, Q.From, Q.RangeCheckFrom);
                Q.CastOnBestTarget(0f, false, true);

            }
            else if (W.IsKillable(Target) && W.IsReady() && W.IsInRange(Target))
            {
                CardSelector.StartSelecting(Cards.Blue);
            }
        }
コード例 #28
0
ファイル: twistedfate.cs プロジェクト: henrymaaaa/Leaguesharp
        public override void Game_OnUpdate(EventArgs args)
        {
            base.Game_OnUpdate(args);


            if (Player.ManaPercentage() > 20)
            {
                CastSpell(Q, qData);
            }

            TargetSelector.Mode = TargetSelector.TargetingMode.Closest;
            target = TargetSelector.GetTarget(Orbwalking.GetRealAutoAttackRange(Player), TargetSelector.DamageType.Physical);
            if (target != null)
            {
                if (Player.ManaPercentage() <= 20)
                {
                    CardSelector.StartSelecting(Cards.Blue);
                }
                else
                {
                    CardSelector.StartSelecting(Cards.Yellow);
                }
            }
        }
コード例 #29
0
ファイル: LaneClear.cs プロジェクト: wade1990/PortAIO
        internal static void Execute()
        {
            if (ObjectManager.Player.ManaPercent < Config.GetSliderValue("manaToLC"))
            {
                return;
            }

            if (Config.IsChecked("useWinLC") && Spells.W.IsReady())
            {
                var targetMinion = Mainframe.Orbwalker.GetTarget() as Obj_AI_Minion;
                if (targetMinion != null)
                {
                    switch (Config.GetStringListValue("wModeLC"))
                    {
                    case 0:
                        var combinedManaPercent = ObjectManager.Player.MaxMana
                                                  / (ObjectManager.Player.Spellbook.GetSpell(SpellSlot.W).SData.Mana
                                                     + ObjectManager.Player.Spellbook.GetSpell(SpellSlot.Q).SData.Mana);
                        if (ObjectManager.Player.ManaPercent
                            >= Math.Max(45, Config.GetSliderValue("manaToLC") + 10 + combinedManaPercent))
                        {
                            /*var targetAoE =
                             *  ObjectManager.Get<Obj_AI_Minion>()
                             *      .Where(x => x.IsEnemy)
                             *      .Count(x => x.Distance(targetMinion) <= 250);*/
                            var targetAoE = MinionManager.GetMinions(targetMinion.Position, 250).Count;
                            if (targetAoE > 2)
                            {
                                CardSelector.StartSelecting(Cards.Red);
                            }
                        }
                        else
                        {
                            CardSelector.StartSelecting(Cards.Blue);
                        }

                        break;

                    case 1:
                        CardSelector.StartSelecting(Cards.Yellow);
                        break;

                    case 2:
                        CardSelector.StartSelecting(Cards.Blue);
                        break;

                    case 3:
                        CardSelector.StartSelecting(Cards.Red);
                        break;
                    }
                }
            }

            if (Config.IsChecked("useQinLC") && Spells.Q.IsReady())
            {
                var minions = MinionManager.GetMinions(ObjectManager.Player.Position, Spells.Q.Range).Where(x => x.Type == GameObjectType.obj_AI_Minion && x.Team != ObjectManager.Player.Team).ToList();
                if (!minions.Any() || minions.Count < 1)
                {
                    return;
                }

                var minionPos = minions.Select(x => x.Position.To2D()).ToList();
                var farm      = MinionManager.GetBestLineFarmLocation(minionPos, Spells.Q.Width, Spells.Q.Range);
                if (farm.MinionsHit >= Config.GetSliderValue("qTargetsLC"))
                {
                    Spells.Q.Cast(farm.Position);
                }
            }
        }
コード例 #30
0
        internal static void Execute()
        {
            var wName = ObjectManager.Player.Spellbook.GetSpell(SpellSlot.W).Name;
            var wMana = ObjectManager.Player.Spellbook.GetSpell(SpellSlot.W).SData.Mana;
            var qMana = ObjectManager.Player.Spellbook.GetSpell(SpellSlot.Q).SData.Mana;
            //CardsLock
            var blueLock = wName.Equals("BlueCardLock", StringComparison.InvariantCultureIgnoreCase);
            var redLock  = wName.Equals("RedCardLock", StringComparison.InvariantCultureIgnoreCase);
            var goldLock = wName.Equals("GoldCardLock", StringComparison.InvariantCultureIgnoreCase);

            if (!Config.Rotate)
            {
                return;
            }

            foreach (var enemy in HeroManager.Enemies.Where(e => e.IsValidTarget(Spells._q.Range) && !e.IsDead))
            {
                if (Spells._w.IsReadyPerfectly())
                {
                    if (enemy.Distance(ObjectManager.Player) <= (ObjectManager.Player.AttackRange + Config.RotateRange))
                    {
                        if (ObjectManager.Player.ManaPercent >= Config.RotateMana)
                        {
                            CardSelector.RotateCards();
                        }
                    }
                }

                if (enemy.Distance(ObjectManager.Player) <= (ObjectManager.Player.AttackRange + Config.RotateLock))
                {
                    if (CardSelector.Status == SelectStatus.Selecting)
                    {
                        switch (Config.Prioritize)
                        {
                        case 0:
                        {
                            //Smart (W->Q)
                            if (ObjectManager.Player.Mana - wMana - qMana >= wMana)
                            {
                                if (Spells._q.IsReadyPerfectly())
                                {
                                    if (blueLock)
                                    {
                                        CardSelector.JumpToCard(Cards.Red);
                                    }
                                    else if (goldLock)
                                    {
                                        CardSelector.LockCard();
                                    }
                                    else if (redLock)
                                    {
                                        CardSelector.LockCard();
                                    }
                                }

                                CardSelector.LockCard();
                            }

                            CardSelector.LockCard();

                            break;
                        }

                        case 1:
                        {
                            //Prioritize BLUE-GOLD-RED;
                            if (blueLock)
                            {
                                CardSelector.LockCard();
                            }
                            else if (goldLock)
                            {
                                CardSelector.JumpToCard(Cards.Blue);
                            }
                            else if (redLock)
                            {
                                CardSelector.LockCard();
                            }
                            break;
                        }

                        case 2:
                        {
                            //Prioritize RED-BLUE-GOLD;
                            if (blueLock)
                            {
                                CardSelector.LockCard();
                            }
                            else if (goldLock)
                            {
                                CardSelector.JumpToCard(Cards.Red);
                            }
                            else if (redLock)
                            {
                                CardSelector.LockCard();
                            }
                            break;
                        }

                        case 3:
                        {
                            //Prioritize GOLD-BLUE-RED;
                            if (blueLock)
                            {
                                CardSelector.LockCard();
                            }
                            else if (goldLock)
                            {
                                CardSelector.LockCard();
                            }
                            else if (redLock)
                            {
                                CardSelector.JumpToCard(Cards.Yellow);
                            }
                            break;
                        }

                        case 4:
                        {
                            //Prioritize GOLD-RED-BLUE;
                            if (blueLock)
                            {
                                CardSelector.JumpToCard(Cards.Red);
                            }
                            else if (goldLock)
                            {
                                CardSelector.LockCard();
                            }
                            else if (redLock)
                            {
                                CardSelector.LockCard();
                            }
                            break;
                        }
                        }
                    }
                }
            }
        }