Ejemplo n.º 1
0
        private static int CalculateCardInHandScoreFromManaCost(ManaAmount mana)
        {
            var converted = Math.Min(7, mana.Converted);
            var score     = Scores.ManaCostToScore[converted] - 100;

            return(score > 120 ? score : 120);
        }
Ejemplo n.º 2
0
 void Start()
 {
     manaAmount    = FindObjectOfType <ManaAmount>();
     cardsHand     = FindObjectOfType <CardsInHand>();
     cardMask      = LayerMask.GetMask("Cards");
     playfieldMask = LayerMask.GetMask("Playfield");
     defaultMask   = ~cardMask;
 }
Ejemplo n.º 3
0
        public PayMana(
            ManaAmount amount,
            bool hasX = false,
            bool supportsRepetitions = false)
        {
            _amount = amount;

            _hasX = hasX;
            _supportsRepetitions = supportsRepetitions;
        }
Ejemplo n.º 4
0
        public static ManaAmount Repeat(this ManaAmount amount, int count)
        {
            var result = amount;

            for (var i = 1; i < count; i++)
            {
                result = result.Add(amount);
            }

            return(result);
        }
Ejemplo n.º 5
0
        protected Card GetBasicLandCard(Player owner, ManaColor color, CardType[] types, string[] subtypes, bool isSnow)
        {
            var card = new Card(owner, types, subtypes, true, 0, 0, false, isSnow);

            card._attrs = CardAttrs;
            // Basic Lands tap for 1 mana of their specific color
            var cost          = new TapCost(card);
            var manaGenerated = new ManaAmount(1, color);

            card.AddAbility(new ManaAbility(card, cost, manaGenerated, $"{cost}: Add {manaGenerated}"));

            return(card);
        }
 public AddToManaPoolAction(Player you, ManaAmount toAdd)
 {
     this.toAdd = toAdd;
     this.you = you;
 }
Ejemplo n.º 7
0
 public FixedManaOutput(ManaAmount amount)
 {
     _amount = amount;
 }
Ejemplo n.º 8
0
 public DefaultLevelUpTimingRule(ManaAmount cost, params LevelDefinition[] levelDefinitions)
 {
     _cost = cost;
     _levelDefinitions.AddRange(levelDefinitions);
 }
Ejemplo n.º 9
0
 public RegenerateCombatRule(ManaAmount cost)
 {
     _cost = cost;
 }
Ejemplo n.º 10
0
 public IncreaseManaOutput(ManaAmount amount)
 {
     _amount = amount;
 }
Ejemplo n.º 11
0
        public override bool Pay()
        {
            var controller = _controller;

            if (controller == null)
            {
                return(false);
            }

            var temp = new List <ManaAmount>(_manaAmounts.Select(c => new ManaAmount(c.Amount, c.Color)));

            if (temp.Any(c => c.Color == ManaColor.GenericX))
            {
                int x = controller.GetValueForX(stringify(temp));
                ValueforXChosen?.Invoke(x);
                var amt = temp.Where(c => c.Color == ManaColor.GenericX).Sum(c => c.Amount);
                temp.RemoveAll(c => c.Color == ManaColor.GenericX);
                if (temp.Any(c => c.Color == ManaColor.Generic))
                {
                    var generic = temp.First(c => c.Color == ManaColor.Generic);
                    temp.Remove(generic);
                    temp.Add(new ManaAmount(generic.Amount + (amt * x), ManaColor.Generic));
                }
                else
                {
                    temp.Add(new ManaAmount(amt * x, ManaColor.Generic));
                }
            }
            List <ManaColor> manaPaid = new List <ManaColor>();

            while (temp.Count > 0)
            {
                var colorPaid = controller.PayManaCost(stringify(temp));
                if (!colorPaid.HasValue)
                {
                    // If the player cancelled, return the paid mana to their mana pool
                    foreach (var mana in manaPaid)
                    {
                        controller.ManaPool.Add(new ManaAmount(1, mana));
                    }
                    return(false);
                }

                manaPaid.Add(colorPaid.Value);

                switch (colorPaid)
                {
                case ManaColor.White:
                case ManaColor.Blue:
                case ManaColor.Black:
                case ManaColor.Red:
                case ManaColor.Green:
                case ManaColor.Colorless:
                    ManaAmount amount = null;
                    if (temp.Any(c => c.Color == colorPaid))
                    {
                        amount = temp.First(c => c.Color == colorPaid);
                    }
                    else if (temp.Any(c => c.Color == ManaColor.Generic))
                    {
                        amount = temp.First(c => c.Color == ManaColor.Generic);
                    }

                    temp.Remove(amount);
                    if (amount.Amount == 1)
                    {
                        continue;
                    }
                    temp.Add(new ManaAmount(amount.Amount - 1, amount.Color));
                    break;
                }
            }
            return(true);
        }
Ejemplo n.º 12
0
 public PumpCombatRule(int power, int toughness, ManaAmount cost)
 {
     _power     = power;
     _toughness = toughness;
     _cost      = cost;
 }
Ejemplo n.º 13
0
 public ManaAbility(Card source, Cost cost, ManaAmount manaGenerated, string text) : base(source, cost, text)
 {
     ManaGenerated = manaGenerated;
 }