public void ManaCost_GenericTwelve() { ManaCost mc = ManaCost.Parse("{12}"); Assert.AreEqual(mc.ConvertedManaCost, 12); Assert.AreEqual("12", mc.ToString()); }
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()); }
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)); }
public void ManaCost_Zero() { ManaCost mc = ManaCost.Parse("{0}"); Assert.AreEqual(0, mc.ConvertedManaCost); Assert.AreEqual("0", mc.ToString()); }
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)); }
public void ManaCost_NoCost() { ManaCost mc = ManaCost.Parse(""); Assert.IsTrue(mc.HasNoCost); Assert.AreEqual("(no cost)", mc.ToString()); }
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); }
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); }
public void ManaCost_1W() { ManaCost mc = ManaCost.Parse("{1}{W}"); Assert.AreEqual(mc.ConvertedManaCost, 2); Assert.AreEqual("1W", mc.ToString()); }
public override string ToString() { return(String.Format("{0} *HpM: {1}\r\nCost: {2}", MinHeal.ToString("0"), HpM.ToString("0.00"), ManaCost.ToString("0"))); }
public void OneVariableTest() { var mc = ManaCost.Parse("{X}"); Assert.AreEqual(1, mc.Fragments.Count); Assert.AreEqual(typeof(VariableManaCostFragment), mc.Fragments[0].GetType()); }
public override void ActivateAbility() { ManaCost manaCost = new ManaCost(Red, Green, Blue); EventManager.AddMarkersToMarkerPool(manaCost); ResolveAbility(); }
public void ManaCost_XUU_NoBrackets() { ManaCost mc = ManaCost.Parse("{X}{U}{U}"); Assert.AreEqual(mc.ConvertedManaCost, 2); Assert.AreEqual("XUU", mc.ToString()); }
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); }
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()); }
public void ManaCost_PhyrexianGreenWithX() // Corrosive Gale { ManaCost mc = ManaCost.Parse("X{GP}"); Assert.AreEqual(mc.ConvertedManaCost, 1); Assert.AreEqual("X{P/G}", mc.ToString()); }
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)); }
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); }
public static TarMana AddTarget(Skill _skill, ManaCost _manaCostRequried, FnValidSelection fnValidSelection) { TarMana tarmana = new TarMana(_skill, _manaCostRequried, fnValidSelection); _skill.lstTargets.Add(tarmana); return(tarmana); }
public void ManaCost_GenericTen() { ManaCost mc = ManaCost.Parse("10"); Assert.IsFalse(mc.HasNoCost); Assert.AreEqual(mc.ConvertedManaCost, 10); Assert.AreEqual("{10}", mc.ToString(true)); }
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); }
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); }
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); }
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"))); }