Exemplo n.º 1
0
        public override int OnSelectPlace(long cardId, int player, CardLocation location, int available)
        {
            if (location == CardLocation.SpellZone)
            {
                if (cardId == CardId.KnightmarePhoenix || cardId == CardId.CrystronNeedlefiber)
                {
                    ClientCard b    = Bot.MonsterZone.GetFirstMatchingCard(card => card.Id == CardId.BorreloadSavageDragon);
                    int        zone = (1 << (b?.Sequence ?? 0)) & available;
                    if (zone > 0)
                    {
                        return(zone);
                    }
                }
                if ((available & Zones.z0) > 0)
                {
                    return(Zones.z0);
                }
                if ((available & Zones.z1) > 0)
                {
                    return(Zones.z1);
                }
                if ((available & Zones.z2) > 0)
                {
                    return(Zones.z2);
                }
                if ((available & Zones.z3) > 0)
                {
                    return(Zones.z3);
                }
                if ((available & Zones.z4) > 0)
                {
                    return(Zones.z4);
                }
            }
            if (location == CardLocation.MonsterZone)
            {
                if (cardId == CardId.SheorcustDingirsu)
                {
                    ClientCard l     = Bot.MonsterZone.GetFirstMatchingCard(card => card.Id == CardId.ThePhantomKnightsofRustyBardiche);
                    int        zones = (l?.GetLinkedZones() ?? 0) & available;
                    if ((zones & Zones.z4) > 0)
                    {
                        return(Zones.z4);
                    }
                    if ((zones & Zones.z3) > 0)
                    {
                        return(Zones.z3);
                    }
                    if ((zones & Zones.z2) > 0)
                    {
                        return(Zones.z2);
                    }
                    if ((zones & Zones.z1) > 0)
                    {
                        return(Zones.z1);
                    }
                    if ((zones & Zones.z0) > 0)
                    {
                        return(Zones.z0);
                    }
                }
                if (cardId == CardId.GalateaTheOrcustAutomaton)
                {
                    int zones = Bot.GetLinkedZones() & available;
                    if ((zones & Zones.z0) > 0)
                    {
                        return(Zones.z0);
                    }
                    if ((zones & Zones.z2) > 0)
                    {
                        return(Zones.z2);
                    }
                    if ((zones & Zones.z1) > 0)
                    {
                        return(Zones.z1);
                    }
                    if ((zones & Zones.z3) > 0)
                    {
                        return(Zones.z3);
                    }
                    if ((zones & Zones.z4) > 0)
                    {
                        return(Zones.z4);
                    }
                }
                if (cardId == CardId.KnightmarePhoenix)
                {
                    if ((Enemy.MonsterZone[5]?.HasLinkMarker(CardLinkMarker.Top) ?? false) && (available & Zones.z3) > 0)
                    {
                        return(Zones.z3);
                    }
                    if ((Enemy.MonsterZone[6]?.HasLinkMarker(CardLinkMarker.Top) ?? false) && (available & Zones.z1) > 0)
                    {
                        return(Zones.z1);
                    }
                }

                if ((available & Zones.z6) > 0)
                {
                    return(Zones.z6);
                }
                if ((available & Zones.z5) > 0)
                {
                    return(Zones.z5);
                }
                if ((available & Zones.z1) > 0)
                {
                    return(Zones.z1);
                }
                if ((available & Zones.z3) > 0)
                {
                    return(Zones.z3);
                }
                if ((available & Zones.z0) > 0)
                {
                    return(Zones.z0);
                }
                if ((available & Zones.z4) > 0)
                {
                    return(Zones.z4);
                }
                if ((available & Zones.z2) > 0)
                {
                    return(Zones.z2);
                }
            }
            return(0);
        }