Example #1
0
    public override IQualifierDescription Generate()
    {
        CardTypeQualifierDescription desc = new CardTypeQualifierDescription();

        desc.cardType = ProceduralUtils.GetRandomValue <CardType>(random, model);

        return(desc);
    }
    public override void ApplyToTarget(Targettable target, PlayerController player, Targettable source)
    {
        PlayerController targetPlayer = target as PlayerController;

        if (targetPlayer)
        {
            GameSession gameSession = GameUtils.GetGameSession();

            CardGenerationFlags flags = CardGenerationFlags.NONE;
            if (cardQualifier != null)
            {
                switch (cardQualifier.qualifierType)
                {
                case QualifierType.CARD_TYPE:
                {
                    CardTypeQualifierDescription cardTypeQualifier = cardQualifier as CardTypeQualifierDescription;
                    flags |= EffectConstants.GetGenerationFlags(cardTypeQualifier.cardType);
                }
                break;

                case QualifierType.CREATURE_TYPE:
                {
                    CreatureTypeQualifierDescription creatureTypeQualifier = cardQualifier as CreatureTypeQualifierDescription;
                    flags |= EffectConstants.GetGenerationFlags(creatureTypeQualifier.creatureType);
                }
                break;
                }
            }

            for (int i = 0; i < amount; i++)
            {
                switch (drawModifier)
                {
                case DrawModifier.RANDOM:
                    gameSession.ServerPlayerDrawCard(targetPlayer, targetPlayer, flags, true);
                    break;

                case DrawModifier.SELF:
                    gameSession.ServerPlayerDrawCard(targetPlayer, targetPlayer, flags);
                    break;

                case DrawModifier.OPPONENT_RANDOM:
                    gameSession.ServerPlayerDrawCard(targetPlayer, GameUtils.GetGameSession().GetOpponents(targetPlayer)[0], flags, true);
                    break;

                case DrawModifier.OPPONENT:
                    gameSession.ServerPlayerDrawCard(targetPlayer, GameUtils.GetGameSession().GetOpponents(targetPlayer)[0], flags);
                    break;
                }
            }
        }
    }
    public override string CardText(bool plural)
    {
        string text = (plural ? "draws " : "draw ") + ((amount == 1) ? "a" : amount.ToString());

        if (cardQualifier != null)
        {
            switch (cardQualifier.qualifierType)
            {
            case QualifierType.CARD_TYPE:
            {
                CardTypeQualifierDescription cardTypeQualifier = cardQualifier as CardTypeQualifierDescription;
                text += " " + CardParsing.Parse(cardTypeQualifier.cardType);
            }
            break;

            case QualifierType.CREATURE_TYPE:
            {
                CreatureTypeQualifierDescription creatureTypeQualifier = cardQualifier as CreatureTypeQualifierDescription;
                text += " " + CardParsing.Parse(creatureTypeQualifier.creatureType);
            }
            break;
            }
        }

        text += ((amount == 1) ? " card" : " cards");

        switch (drawModifier)
        {
        case DrawModifier.RANDOM:
            text += " randomly";
            break;

        case DrawModifier.OPPONENT:
            text += " from the opposite deck";
            break;

        case DrawModifier.OPPONENT_RANDOM:
            text += " randomly from the opposite deck";
            break;
        }

        return(text);
    }
Example #4
0
    private bool IsTargettableCard(TargettingQuery targetQuery)
    {
        bool valid = false;

        ITargettingDescription desc = targetQuery.targettingDesc;

        if (desc.targettingType == TargettingType.EXCEPT)
        {
            ExceptTargetDescription exceptDesc = (ExceptTargetDescription)desc;
            desc = exceptDesc.targetDescription;
        }
        switch (desc.targetType)
        {
        case TargetType.CARDS:
            valid = true;
            break;

        case TargetType.CREATURE_CARDS:
            valid = cardData.GetCardType() == CardType.CREATURE;
            break;

        case TargetType.SPELL_CARDS:
            valid = cardData.GetCardType() == CardType.SPELL;
            break;

        case TargetType.TRAP_CARDS:
            valid = cardData.GetCardType() == CardType.TRAP;
            break;
        }

        if (valid)
        {
            IQualifiableTargettingDescription qualifiableDesc = (IQualifiableTargettingDescription)desc;
            if (qualifiableDesc != null)
            {
                valid = qualifiableDesc.GetPlayerAlignment() == Alignment.NEUTRAL || (qualifiableDesc.GetPlayerAlignment() == GetAlignmentToPlayer(targetQuery.requestingPlayer));

                IQualifierDescription qualifier = qualifiableDesc.qualifier;
                if (valid && qualifier != null)
                {
                    switch (qualifier.qualifierType)
                    {
                    case QualifierType.NONE:
                        break;

                    case QualifierType.CREATURE_TYPE:
                    {
                        CreatureTypeQualifierDescription creatureQualifier = (CreatureTypeQualifierDescription)qualifier;
                        valid = creatureQualifier.creatureType == cardData.GetCreatureType();
                    }
                    break;

                    case QualifierType.CARD_TYPE:
                    {
                        CardTypeQualifierDescription cardTypeQualifier = (CardTypeQualifierDescription)qualifier;
                        valid = cardTypeQualifier.cardType == cardData.GetCardType();
                    }
                    break;

                    default:
                        valid = false;
                        break;
                    }
                }
            }
        }

        return(valid);
    }