Example #1
0
        public void ManaCost_GenericTwelve()
        {
            ManaCost mc = ManaCost.Parse("{12}");

            Assert.AreEqual(mc.ConvertedManaCost, 12);
            Assert.AreEqual("12", mc.ToString());
        }
Example #2
0
        public override string ToString()
        {
            StringBuilder res = new StringBuilder(name);

            if (!ManaCost.HasNoCost)
            {
                res.Append(" | ").Append(ManaCost.ToString());
            }
            res.Append(" | ").Append(TypeLine);
            if (Power != null && Toughness != null)
            {
                res.Append(" | ").Append(Power.ToString()).Append("/").Append(Toughness.ToString());
            }
            if (Loyalty != null)
            {
                res.Append(" | L=").Append(Loyalty.ToString());
            }
            int len0 = oracleText.Length > 0 ? oracleText[0].Length : 0;

            switch (oracleText.Length)
            {
            case 0: break;

            case 1: res.Append(" | ").Append(len0 > 30 ? oracleText[0].Substring(0, 30) + "…" : oracleText[0]); break;

            default: res.Append(" | ").Append(len0 > 30 ? oracleText[0].Substring(0, 30) + "…" : oracleText[0]).Append(" +").Append(oracleText.Length - 1).Append(" more"); break;
            }
            return(res.ToString());
        }
Example #3
0
        public void ManaCost_Colorless_Generic()         // Kozilek, the Great Distortion
        {
            ManaCost mc = ManaCost.Parse("8CC");

            Assert.AreEqual(mc.ConvertedManaCost, 10);
            Assert.AreEqual("{8}{C}{C}", mc.ToString(true));
        }
Example #4
0
        public void ManaCost_Zero()
        {
            ManaCost mc = ManaCost.Parse("{0}");

            Assert.AreEqual(0, mc.ConvertedManaCost);
            Assert.AreEqual("0", mc.ToString());
        }
Example #5
0
        public void TestManaCost()
        {
            ManaCost mana1 = new ManaCost(
                3,
                ManaSymbol.Red,
                ManaSymbol.Red,
                ManaSymbol.Red
                );
            ManaCost mana2 = new ManaCost(
                1,
                ManaSymbol.Red,
                ManaSymbol.Green
                );

            Assert.AreEqual(mana1.cmc, 6);
            Assert.AreEqual(mana2.cmc, 3);
            Assert.IsTrue(mana1.identity == Color.Red);
            Assert.IsTrue(mana2.identity == Color.Gruul);

            Assert.IsTrue((mana1 + mana2) - mana1 == mana2);
            Assert.AreEqual((mana1 + mana2) - mana1, mana2);

            Assert.AreEqual(mana1 + mana2, mana2 + mana1);
            Assert.AreEqual(mana1 + mana2, new ManaCost(
                                4, ManaSymbol.Red, ManaSymbol.Red, ManaSymbol.Red, ManaSymbol.Red,
                                ManaSymbol.Green
                                ));
            Assert.AreEqual(mana2 - mana1, new ManaCost(ManaSymbol.Green));
        }
Example #6
0
        public void ManaCost_NoCost()
        {
            ManaCost mc = ManaCost.Parse("");

            Assert.IsTrue(mc.HasNoCost);
            Assert.AreEqual("(no cost)", mc.ToString());
        }
Example #7
0
        public override Card GetCard(Player owner)
        {
            Func <Game, Card, int> basePowerFunc = (g, c) =>
            {
                var cardTypes = new List <CardType>();
                foreach (var graveyard in g.Players().Select(p => p.Graveyard))
                {
                    foreach (var c2 in graveyard)
                    {
                        foreach (var cardType in c2.Types)
                        {
                            if (!cardTypes.Contains(cardType))
                            {
                                cardTypes.Add(cardType);
                            }
                        }
                    }
                }
                return(cardTypes.Count);
            };

            Func <Game, Card, int> baseToughnessFunc = (g, c) =>
            {
                return(1 + c.BasePowerFunc(g, c));
            };

            var card = new Card(owner, new[] { CardType.Creature }, new[] { "Lhurgoyf" }, false, basePowerFunc, baseToughnessFunc, false, false);

            card._attrs = MtgCardAttribute.GetAttribute(GetType());

            card.Cost = ManaCost.Parse(card, "{1}{G}");

            return(card);
        }
    public void Subtract(ManaCost manaCost)
    {
        if (!ManaPool.CheckIfCanAfford(manaCost))
        {
            Debug.Log("Don't try and subtract mana, when you can't afford it!");
            return;
        }

        ManaPool -= manaCost;
        List <Token> tokens = new List <Token>();

        for (int r = RedManaTokens.Count - 1; r > ManaPool.Red - 1; r--)
        {
            tokens.Add(PullOutToken(RedManaTokens[r]));
        }
        for (int g = GreenManaTokens.Count - 1; g > ManaPool.Green - 1; g--)
        {
            tokens.Add(PullOutToken(GreenManaTokens[g]));
        }
        for (int b = BlueManaTokens.Count - 1; b > ManaPool.Blue - 1; b--)
        {
            tokens.Add(PullOutToken(BlueManaTokens[b]));
        }

        GridManager.TokenBag.AddTokens(tokens);
    }
Example #9
0
        public virtual string GenTooltip(float acts, float ttldpsperc)
        {
            float misses = GetXActs(AttackTableSelector.Missed, acts), missesPerc = (acts == 0f ? 0f : misses / acts);
            //float dodges = GetXActs(AttackTableSelector.Dodged, acts), dodgesPerc = (acts == 0f ? 0f : dodges / acts);
            //float parrys = GetXActs(AttackTableSelector.Parried, acts), parrysPerc = (acts == 0f ? 0f : parrys / acts);
            //float blocks = GetXActs(AttackTableSelector.Blocked, acts), blocksPerc = (acts == 0f ? 0f : blocks / acts);
            float crits = GetXActs(AttackTableSelector.Crit, acts), critsPerc = (acts == 0f ? 0f : crits / acts);
            float hits = GetXActs(AttackTableSelector.Hit, acts), hitsPerc = (acts == 0f ? 0f : hits / acts);

            bool showmisss = misses > 0f;
            //bool showdodge = CanBeDodged && dodges > 0f;
            //bool showparry = CanBeParried && parrys > 0f;
            //bool showblock = CanBeBlocked && blocks > 0f;
            bool showcrits = CanCrit && crits > 0f;

            string tooltip = "*" + Name +
                             Environment.NewLine + "Cast Time: " + (CastTime != -1 ? CastTime.ToString() : "Instant")
                             + ", CD: " + (Cd != -1 ? Cd.ToString() : "None")
                             + ", ManaCost: " + (ManaCost != -1 ? ManaCost.ToString() : "None") +
                             Environment.NewLine + Environment.NewLine + acts.ToString("000.00") + " Activates over Attack Table:" +
                             (showmisss ? Environment.NewLine + "- " + misses.ToString("000.00") + " : " + missesPerc.ToString("00.00%") + " : Missed " : "") +
                             //(showdodge ? Environment.NewLine + "- " + dodges.ToString("000.00") + " : " + dodgesPerc.ToString("00.00%") + " : Dodged " : "") +
                             //(showparry ? Environment.NewLine + "- " + parrys.ToString("000.00") + " : " + parrysPerc.ToString("00.00%") + " : Parried " : "") +
                             //(showblock ? Environment.NewLine + "- " + blocks.ToString("000.00") + " : " + blocksPerc.ToString("00.00%") + " : Blocked " : "") +
                             (showcrits ? Environment.NewLine + "- " + crits.ToString("000.00") + " : " + critsPerc.ToString("00.00%") + " : Crit " : "") +
                             Environment.NewLine + "- " + hits.ToString("000.00") + " : " + hitsPerc.ToString("00.00%") + " : Hit " +
                             Environment.NewLine +
                             //Environment.NewLine + "Damage per Blocked|Hit|Crit: x|x|x" +
                             Environment.NewLine + "Targets Hit: " + (Targets != -1 ? AvgTargets.ToString("0.00") : "None") +
                             Environment.NewLine + "DPS: " + (GetDPS(acts) > 0 ? GetDPS(acts).ToString("0.00") : "None") +
                             Environment.NewLine + "Percentage of Total DPS: " + (ttldpsperc > 0 ? ttldpsperc.ToString("00.00%") : "None");

            return(tooltip);
        }
Example #10
0
        public void ManaCost_1W()
        {
            ManaCost mc = ManaCost.Parse("{1}{W}");

            Assert.AreEqual(mc.ConvertedManaCost, 2);
            Assert.AreEqual("1W", mc.ToString());
        }
Example #11
0
 public override string ToString()
 {
     return(String.Format("{0} *HpM: {1}\r\nCost: {2}",
                          MinHeal.ToString("0"),
                          HpM.ToString("0.00"),
                          ManaCost.ToString("0")));
 }
Example #12
0
        public void OneVariableTest()
        {
            var mc = ManaCost.Parse("{X}");

            Assert.AreEqual(1, mc.Fragments.Count);
            Assert.AreEqual(typeof(VariableManaCostFragment), mc.Fragments[0].GetType());
        }
Example #13
0
    public override void ActivateAbility()
    {
        ManaCost manaCost = new ManaCost(Red, Green, Blue);

        EventManager.AddMarkersToMarkerPool(manaCost);
        ResolveAbility();
    }
Example #14
0
        public void ManaCost_XUU_NoBrackets()
        {
            ManaCost mc = ManaCost.Parse("{X}{U}{U}");

            Assert.AreEqual(mc.ConvertedManaCost, 2);
            Assert.AreEqual("XUU", mc.ToString());
        }
Example #15
0
    public SkillSadism(Chr _chrOwner) : base(_chrOwner)
    {
        sName        = "Sadism";
        sDisplayName = "Sadism";

        typeUsage = new TypeUsagePassive(this);

        //Physical, Mental, Energy, Blood, Effort
        manaCost = new ManaCost(new Mana(0, 0, 0, 0, 0));

        nCooldownInduced = 0;
        nFatigue         = 0;

        InitTargets();

        soulPassive = new SoulSadism(this.chrOwner, this.chrOwner, this);

        lstClausesOnEquip = new List <ClauseSkill>()
        {
            new ClauseEquip(this)
        };

        lstSkillClauses = new List <ClauseSkillSelection>()
        {
            new Clause1(this)
        };

        lstClausesOnUnequip = new List <ClauseSkill>()
        {
            new ClauseUnequip(this)
        };
    }
        public override Card GetCard(Player owner)
        {
            var card = new Card(owner, new[] { CardType.Enchantment }, new[] { "Aura" }, false);

            card._attrs = MtgCard;

            card.Cost = ManaCost.Parse(card, "{1}{B}");

            // TODO: Enchant creature card in a graveyard

            // When Animate Dead enters the battlefield, if it’s on the battlefield, it loses “enchant creature card in a graveyard” and
            // gains “enchant creature put onto the battlefield with Animate Dead.” Return enchanted creature card to the battlefield
            // under your control and attach Animate Dead to it. When Animate Dead leaves the battlefield, that creature’s controller
            // sacrifices it.

            // Enchanted creature gets - 1 / -0.

            card.OnCast = (g, c) =>
            {
                var target = c.Controller.ChooseTarget(c, new List <ITarget>(c.Controller.Graveyard.Where(_c => _c.IsACreature && _c.CanBeTargetedBy(c)))) as Card;
                c.SetVar("Target", target);
                c.AddEffect(new AnimateDeadEffect(c, target));
            };

            card.OnResolve = (g, c) =>
            {
                var target = c.GetVar <Card>("Target");
                // TODO: Move creature card from graveyard to battlefield
            };

            return(card);
        }
Example #17
0
        public void ManaCost_FiveColors_InconsistentBraces()         // Progenitus
        {
            ManaCost mc = ManaCost.Parse("WWUU{B}BR{R}{G}G");

            Assert.AreEqual(mc.ConvertedManaCost, 10);
            Assert.AreEqual("WWUUBBRRGG", mc.ToString());
        }
Example #18
0
        public void ManaCost_PhyrexianGreenWithX()         // Corrosive Gale
        {
            ManaCost mc = ManaCost.Parse("X{GP}");

            Assert.AreEqual(mc.ConvertedManaCost, 1);
            Assert.AreEqual("X{P/G}", mc.ToString());
        }
Example #19
0
        public void ManaCost_HybridGW()         // Dawnglow Infusion
        {
            ManaCost mc = ManaCost.Parse("{X}{G/W}");

            Assert.AreEqual(mc.ConvertedManaCost, 1);
            Assert.AreEqual("{X}{G/W}", mc.ToString(true));
        }
Example #20
0
        public void ManaCost_TwoGenericOrColored()
        {
            ManaCost mc = ManaCost.Parse("{2/W}{2/U}{2/B}{2/R}{2/G}");

            Assert.AreEqual(mc.ConvertedManaCost, 10);
            Assert.AreEqual("{2/W}{2/U}{2/B}{2/R}{2/G}", mc.ToString());
        }
        public override Card GetCard(Player owner)
        {
            var card = new Card(owner, new[] { CardType.Sorcery }, null, false);

            card._attrs = MtgCardAttribute.GetAttribute(GetType());
            card.Cost   = ManaCost.Parse(card, "{X}{U}{U}");

            // This must be a new delegate every time. Otherwise we mess up the card reference.
            (card.Cost as ManaCost).ValueforXChosen += (x => card.SetVar("X", x));

            card.OnCast = (g, c) =>
            {
                var target = c.Controller.ChoosePlayer("Choose Target Player", g.Players().Where(p => true));// p.CanBeTargetedBy(c)))
                c.SetVar("Target", target);
            };

            card.OnResolve = (g, c) =>
            {
                var target = c.GetVar <Player>("Target");
                var X      = c.GetVar <int>("X");
                target.Draw(X);
            };

            return(card);
        }
Example #22
0
    public static TarMana AddTarget(Skill _skill, ManaCost _manaCostRequried, FnValidSelection fnValidSelection)
    {
        TarMana tarmana = new TarMana(_skill, _manaCostRequried, fnValidSelection);

        _skill.lstTargets.Add(tarmana);

        return(tarmana);
    }
Example #23
0
        public void ManaCost_GenericTen()
        {
            ManaCost mc = ManaCost.Parse("10");

            Assert.IsFalse(mc.HasNoCost);
            Assert.AreEqual(mc.ConvertedManaCost, 10);
            Assert.AreEqual("{10}", mc.ToString(true));
        }
Example #24
0
        public override Card GetCard(Player owner)
        {
            var card = new Card(owner, new CardType[] { CardType.Creature }, new string[] { "Elemental" }, false, 8, 8, false, false);

            card._attrs = MtgCardAttribute.GetAttribute(GetType());
            card.Cost   = ManaCost.Parse(card, "{W}{U}{B}{R}{G}");

            return(card);
        }
Example #25
0
        public void SpectralProcessionTest()
        {
            var mc = ManaCost.Parse("{2/W}{2/W}{2/W}");

            Assert.AreEqual(1, mc.Fragments.Count);
            Assert.AreEqual(1, mc.Fragments.OfType <MonoColoredManaCostFragment>().Count());
            Assert.AreEqual(3, mc.Fragments.OfType <MonoColoredManaCostFragment>().First().Amount);
            Assert.AreEqual(Color.White, mc.Fragments.OfType <MonoColoredManaCostFragment>().First().Color);
        }
Example #26
0
        public void TerminateTest()
        {
            var mc = ManaCost.Parse("{B}{R}");

            Assert.AreEqual(2, mc.Fragments.Count);
            Assert.AreEqual(2, mc.Fragments.OfType <ColoredManaCostFragment>().Count());
            Assert.AreEqual(1, mc.Fragments.OfType <ColoredManaCostFragment>().Where(f => f.Color == Color.Black).First().Amount);
            Assert.AreEqual(1, mc.Fragments.OfType <ColoredManaCostFragment>().Where(f => f.Color == Color.Red).First().Amount);
        }
Example #27
0
 public override string ToString()
 {
     return(String.Format("{0} *HpS: {1}\r\nHpM: {2}\r\nTick: {3}\r\nCost: {4}",
                          MinHeal.ToString("0"),
                          HpS.ToString("0.00"),
                          HpM.ToString("0.00"),
                          (MinHeal / HotDuration * 3).ToString("0"),
                          ManaCost.ToString("0")));
 }