示例#1
0
 private static void Warlock(IDictionary <string, List <Enchantment> > cards)
 {
     // ---------------------------------------- SPELL - WARLOCK
     // [EX1_316] Power Overwhelming - COST:1
     // - Fac: neutral, Set: hof, Rarity: common
     // --------------------------------------------------------
     // Text: Give a friendly minion +4/+4 until end of turn. Then, it dies. Horribly.
     // --------------------------------------------------------
     // PlayReq:
     // - REQ_MINION_TARGET = 0
     // - REQ_FRIENDLY_TARGET = 0
     // - REQ_TARGET_TO_PLAY = 0
     // --------------------------------------------------------
     cards.Add("EX1_316", new List <Enchantment> {
         new Enchantment
         {
             InfoCardId = "EX1_316e",
             Area       = EnchantmentArea.TARGET,
             Activation = EnchantmentActivation.SPELL,
             SingleTask = new BuffTask(Buffs.AttackHealth(4), EntityType.TARGET),
             Enchant    = new Enchant
             {
                 TurnsActive      = 0,
                 EnableConditions = new List <SelfCondition>
                 {
                     SelfCondition.IsNotSilenced,
                     SelfCondition.IsInZone(Zone.PLAY)
                 },
                 Effects = new Dictionary <GameTag, int>
                 {
                     [GameTag.NUM_TURNS_IN_PLAY] = 0
                 },
                 SingleTask = new DestroyTask(EntityType.TARGET)
             }
         }
     });
 }
示例#2
0
        private static void Warrior(IDictionary <string, List <Enchantment> > cards)
        {
            // ---------------------------------------- SPELL - WARRIOR
            // [BRM_015] Revenge - COST:2
            // - Set: fp2, Rarity: rare
            // --------------------------------------------------------
            // Text: Deal $1 damage to all minions. If you have 12 or less Health, deal $3 damage instead. *spelldmg
            // --------------------------------------------------------
            cards.Add("BRM_015", new List <Enchantment> {
                new Enchantment
                {
                    Activation = EnchantmentActivation.SPELL,
                    SingleTask = ComplexTask.Create(
                        new ConditionTask(EntityType.HERO, SelfCondition.IsHealth(12, RelaSign.LEQ))),
                },
            });

            // --------------------------------------- MINION - WARRIOR
            // [BRM_016] Axe Flinger - COST:4 [ATK:2/HP:5]
            // - Set: fp2, Rarity: common
            // --------------------------------------------------------
            // Text: Whenever this minion takes damage, deal 2 damage to the enemy hero.
            // --------------------------------------------------------
            cards.Add("BRM_016", new List <Enchantment> {
                new Enchantment
                {
                    Area       = EnchantmentArea.SELF,
                    Activation = EnchantmentActivation.BOARD_ZONE,
                    Trigger    = new TriggerBuilder().Create()
                                 .EnableConditions(SelfCondition.IsInZone(Zone.PLAY), SelfCondition.IsNotSilenced)
                                 .ApplyConditions(RelaCondition.IsOther(SelfCondition.IsTagValue(GameTag.TO_BE_DESTROYED, 0)))
                                 .TriggerEffect(GameTag.DAMAGE, 1)
                                 .SingleTask(new DamageTask(2, EntityType.OP_HERO))
                                 .Build()
                }
            });
        }
示例#3
0
        private AdaptiveCostEffect(AdaptiveCostEffect prototype, IPlayable owner)
        {
            if (!(owner is Playable p))
            {
                throw new Exception($"Can't activate {this} to non-playable {owner}");
            }

            _owner = p;

            if (prototype._triggerType != TriggerType.NONE)
            {
                _costFunction      = prototype._costFunction;
                _value             = prototype._value;
                _triggerType       = prototype._triggerType;
                _triggerSource     = prototype._triggerSource;
                _condition         = prototype._condition;
                _updateHandler     = Trigger;
                _removedHandler    = RemoveAtEnd;
                _isTriggered       = prototype._isTriggered;
                _isAppliedThisTurn = prototype._isAppliedThisTurn;

                if (prototype._initialisationFunction != null)
                {
                    _initialisationFunction = prototype._initialisationFunction;
                    _cachedValue            = prototype._initialisationFunction.Invoke(p);
                }
            }
            else if (prototype._condition != null)
            {
                _condition = prototype._condition;
            }
            else
            {
                _costFunction = prototype._costFunction;
                _operator     = prototype._operator;
            }
        }
示例#4
0
 private static void Paladin(IDictionary <string, Power> cards)
 {
     // ---------------------------------------- SPELL - PALADIN
     // [FP1_020] Avenge - COST:1
     // - Set: naxx, Rarity: common
     // --------------------------------------------------------
     // Text: <b>Secret:</b> When one of your minions dies, give a random friendly minion +3/+2.
     // --------------------------------------------------------
     // GameTag:
     // - SECRET = 1
     // --------------------------------------------------------
     cards.Add("FP1_020", new Power {
         InfoCardId = "FP1_020e",
         Trigger    = new Trigger(TriggerType.DEATH)
         {
             TriggerSource = TriggerSource.FRIENDLY,
             SingleTask    = ComplexTask.Create(
                 new ConditionTask(EntityType.SOURCE, SelfCondition.IsBoardCount(0)),
                 new FlagTask(false, ComplexTask.Secret(
                                  new RandomTask(1, EntityType.MINIONS),
                                  new AddEnchantmentTask("FP1_020e", EntityType.STACK))))
         }
     });
 }
示例#5
0
        public static Enchant SimpleInclSelf(GameTag tag, int amount, params RelaCondition[] list)
        {
            // health is only allowed with the HealthRetentionTask
            if (tag == GameTag.HEALTH)
            {
                throw new NotSupportedException();
            }

            var result = new Enchant
            {
                EnableConditions = new List <SelfCondition>
                {
                    SelfCondition.IsInZone(Zone.PLAY),
                    SelfCondition.IsNotSilenced
                },
                Effects = new Dictionary <GameTag, int>()
                {
                    [tag] = amount
                }
            };

            list.ToList().ForEach(p => result.ApplyConditions.Add(p));
            return(result);
        }
示例#6
0
 public ConditionTask(EntityType entityType, params RelaCondition[] relaConditions)
 {
     SelfConditions = new SelfCondition[] { };
     RelaConditions = relaConditions;
     Type           = entityType;
 }
示例#7
0
        private static void Neutral(IDictionary <string, Power> cards)
        {
            // --------------------------------------- MINION - NEUTRAL
            // [FP1_001] Zombie Chow - COST:1 [ATK:2/HP:3]
            // - Set: naxx, Rarity: common
            // --------------------------------------------------------
            // Text: <b>Deathrattle:</b> Restore 5 Health to the enemy hero.
            // --------------------------------------------------------
            // GameTag:
            // - DEATHRATTLE = 1
            // --------------------------------------------------------
            cards.Add("FP1_001", new Power {
                DeathrattleTask = new HealTask(5, EntityType.OP_HERO)
            });

            // --------------------------------------- MINION - NEUTRAL
            // [FP1_002] Haunted Creeper - COST:2 [ATK:1/HP:2]
            // - Race: beast, Set: naxx, Rarity: common
            // --------------------------------------------------------
            // Text: <b>Deathrattle:</b> Summon two 1/1 Spectral Spiders.
            // --------------------------------------------------------
            // GameTag:
            // - DEATHRATTLE = 1
            // --------------------------------------------------------
            cards.Add("FP1_002", new Power {
                DeathrattleTask = new EnqueueTask(2, new SummonTask("FP1_002t", SummonSide.DEATHRATTLE))
            });

            // --------------------------------------- MINION - NEUTRAL
            // [FP1_003] Echoing Ooze - COST:2 [ATK:1/HP:2]
            // - Set: naxx, Rarity: epic
            // --------------------------------------------------------
            // Text: <b>Battlecry:</b> Summon an exact copy of this minion at the end of the turn.
            // --------------------------------------------------------
            // GameTag:
            // - BATTLECRY = 1
            // --------------------------------------------------------
            cards.Add("FP1_003", new Power {
                PowerTask = ComplexTask.Create(
                    new SetGameTagTask(GameTag.CUSTOM_KEYWORD_EFFECT, 1, EntityType.SOURCE),
                    new SetGameTagTask(GameTag.TAG_SCRIPT_DATA_NUM_1, 1, EntityType.SOURCE),
                    new SetGameTagTask(GameTag.MULTIPLY_BUFF_VALUE, 1, EntityType.SOURCE)),
                Trigger = new Trigger(TriggerType.TURN_END)
                {
                    SingleTask = ComplexTask.Create(
                        new ConditionTask(EntityType.SOURCE, SelfCondition.IsTagValue(GameTag.CUSTOM_KEYWORD_EFFECT, 1)),
                        new FlagTask(true, ComplexTask.Create(
                                         new SetGameTagTask(GameTag.CUSTOM_KEYWORD_EFFECT, 0, EntityType.SOURCE),
                                         new SummonCopyTask(EntityType.SOURCE, side: SummonSide.RIGHT)))),
                    RemoveAfterTriggered = true
                }
            });

            // --------------------------------------- MINION - NEUTRAL
            // [FP1_004] Mad Scientist - COST:2 [ATK:2/HP:2]
            // - Set: naxx, Rarity: common
            // --------------------------------------------------------
            // Text: <b>Deathrattle:</b> Put a <b>Secret</b> from your deck into the battlefield.
            // --------------------------------------------------------
            // GameTag:
            // - DEATHRATTLE = 1
            // --------------------------------------------------------
            // RefTag:
            // - SECRET = 1
            // --------------------------------------------------------
            cards.Add("FP1_004", new Power {
                DeathrattleTask = ComplexTask.PutSecretFromDeck
            });

            // --------------------------------------- MINION - NEUTRAL
            // [FP1_005] Shade of Naxxramas - COST:3 [ATK:2/HP:2]
            // - Set: naxx, Rarity: epic
            // --------------------------------------------------------
            // Text: <b>Stealth.</b> At the start of your turn, gain +1/+1.
            // --------------------------------------------------------
            // GameTag:
            // - STEALTH = 1
            // --------------------------------------------------------
            cards.Add("FP1_005", new Power {
                Trigger = new Trigger(TriggerType.TURN_START)
                {
                    SingleTask = new AddEnchantmentTask("FP1_005e", EntityType.SOURCE)
                }
            });

            // --------------------------------------- MINION - NEUTRAL
            // [FP1_007] Nerubian Egg - COST:2 [ATK:0/HP:2]
            // - Set: naxx, Rarity: rare
            // --------------------------------------------------------
            // Text: <b>Deathrattle:</b> Summon a 4/4 Nerubian.
            // --------------------------------------------------------
            // GameTag:
            // - DEATHRATTLE = 1
            // --------------------------------------------------------
            cards.Add("FP1_007", new Power {
                DeathrattleTask = new SummonTask("FP1_007t", SummonSide.DEATHRATTLE)
            });

            // --------------------------------------- MINION - NEUTRAL
            // [FP1_008] Spectral Knight - COST:5 [ATK:4/HP:6]
            // - Set: naxx, Rarity: common
            // --------------------------------------------------------
            // Text: Can't be targeted by spells or Hero Powers.
            // --------------------------------------------------------
            // GameTag:
            // - CANT_BE_TARGETED_BY_SPELLS = 1
            // - CANT_BE_TARGETED_BY_HERO_POWERS = 1
            // --------------------------------------------------------
            cards.Add("FP1_008", null);

            // --------------------------------------- MINION - NEUTRAL
            // [FP1_009] Deathlord - COST:3 [ATK:2/HP:8]
            // - Set: naxx, Rarity: rare
            // --------------------------------------------------------
            // Text: <b>Taunt. Deathrattle:</b> Your opponent puts a minion from their deck into the battlefield.
            // --------------------------------------------------------
            // GameTag:
            // - TAUNT = 1
            // - DEATHRATTLE = 1
            // --------------------------------------------------------
            cards.Add("FP1_009", new Power {
                DeathrattleTask = ComplexTask.Create(
                    new IncludeTask(EntityType.OP_DECK),
                    new FilterStackTask(SelfCondition.IsMinion),
                    new RandomTask(1, EntityType.STACK),
                    new SummonStackTask())
            });

            // --------------------------------------- MINION - NEUTRAL
            // [FP1_010] Maexxna - COST:6 [ATK:2/HP:8]
            // - Race: beast, Set: naxx, Rarity: legendary
            // --------------------------------------------------------
            // Text: <b>Poisonous</b>
            // --------------------------------------------------------
            // GameTag:
            // - ELITE = 1
            // - POISONOUS = 1
            // --------------------------------------------------------
            cards.Add("FP1_010", null);

            // --------------------------------------- MINION - NEUTRAL
            // [FP1_012] Sludge Belcher - COST:5 [ATK:3/HP:5]
            // - Set: naxx, Rarity: rare
            // --------------------------------------------------------
            // Text: <b>Taunt
            //       Deathrattle:</b> Summon a 1/2 Slime with <b>Taunt</b>.
            // --------------------------------------------------------
            // GameTag:
            // - TAUNT = 1
            // - DEATHRATTLE = 1
            // --------------------------------------------------------
            cards.Add("FP1_012", new Power {
                DeathrattleTask = new SummonTask("FP1_012t", SummonSide.DEATHRATTLE)
            });

            // --------------------------------------- MINION - NEUTRAL
            // [FP1_013] Kel'Thuzad - COST:8 [ATK:6/HP:8]
            // - Set: naxx, Rarity: legendary
            // --------------------------------------------------------
            // Text: At the end of each turn, summon all friendly minions that died this turn.
            // --------------------------------------------------------
            // GameTag:
            // - ELITE = 1
            // --------------------------------------------------------
            cards.Add("FP1_013", new Power {
                Trigger = new Trigger(TriggerType.TURN_END)
                {
                    EitherTurn = true,
                    SingleTask = ComplexTask.SummonAllFriendlyDiedThisTurn()
                }
            });

            // --------------------------------------- MINION - NEUTRAL
            // [FP1_014] Stalagg - COST:5 [ATK:7/HP:4]
            // - Set: naxx, Rarity: legendary
            // --------------------------------------------------------
            // Text: <b>Deathrattle:</b> If Feugen also died this game, summon Thaddius.
            // --------------------------------------------------------
            // GameTag:
            // - ELITE = 1
            // - DEATHRATTLE = 1
            // --------------------------------------------------------
            cards.Add("FP1_014", new Power {
                DeathrattleTask = new FuncNumberTask(src =>
                {
                    Controller c = src.Controller;
                    if ((c.GraveyardZone.Any(p => p.Card.AssetId == 1797 && p.ToBeDestroyed) ||
                         c.Opponent.GraveyardZone.Any(p => p.Card.AssetId == 1797 && p.ToBeDestroyed)) &&
                        !c.BoardZone.IsFull)
                    {
                        Generic.SummonBlock.Invoke(c.Game, (Minion)Entity.FromCard(c, Cards.FromId("FP1_014t")), -1, src);
                    }

                    return(0);
                })
            });

            // --------------------------------------- MINION - NEUTRAL
            // [FP1_015] Feugen - COST:5 [ATK:4/HP:7]
            // - Set: naxx, Rarity: legendary
            // --------------------------------------------------------
            // Text: <b>Deathrattle:</b> If Stalagg also died this game, summon Thaddius.
            // --------------------------------------------------------
            // GameTag:
            // - ELITE = 1
            // - DEATHRATTLE = 1
            // --------------------------------------------------------
            cards.Add("FP1_015", new Power {
                DeathrattleTask = new FuncNumberTask(src =>
                {
                    Controller c = src.Controller;
                    if ((c.GraveyardZone.Any(p => p.Card.AssetId == 1796 && p.ToBeDestroyed) ||
                         c.Opponent.GraveyardZone.Any(p => p.Card.AssetId == 1796 && p.ToBeDestroyed)) &&
                        !c.BoardZone.IsFull)
                    {
                        Generic.SummonBlock.Invoke(c.Game, (Minion)Entity.FromCard(c, Cards.FromId("FP1_014t")), -1, src);
                    }

                    return(0);
                })
            });

            // --------------------------------------- MINION - NEUTRAL
            // [FP1_016] Wailing Soul - COST:4 [ATK:3/HP:5]
            // - Set: naxx, Rarity: rare
            // --------------------------------------------------------
            // Text: <b>Battlecry: Silence</b> your other minions.
            // --------------------------------------------------------
            // GameTag:
            // - BATTLECRY = 1
            // --------------------------------------------------------
            // RefTag:
            // - SILENCE = 1
            // --------------------------------------------------------
            cards.Add("FP1_016", new Power {
                PowerTask = new SilenceTask(EntityType.MINIONS_NOSOURCE)
            });

            // --------------------------------------- MINION - NEUTRAL
            // [FP1_017] Nerub'ar Weblord - COST:2 [ATK:1/HP:4]
            // - Set: naxx, Rarity: common
            // --------------------------------------------------------
            // Text: Minions with <b>Battlecry</b> cost (2) more.
            // --------------------------------------------------------
            // GameTag:
            // - AURA = 1
            // --------------------------------------------------------
            // RefTag:
            // - BATTLECRY = 1
            // --------------------------------------------------------
            cards.Add("FP1_017", new Power {
                Aura = new Aura(AuraType.HANDS, Effects.AddCost(2))
                {
                    Condition = SelfCondition.IsBattlecryMinion
                }
            });

            // --------------------------------------- MINION - NEUTRAL
            // [FP1_024] Unstable Ghoul - COST:2 [ATK:1/HP:3]
            // - Set: naxx, Rarity: common
            // --------------------------------------------------------
            // Text: <b>Taunt</b>. <b>Deathrattle:</b> Deal 1 damage to all minions.
            // --------------------------------------------------------
            // GameTag:
            // - TAUNT = 1
            // - DEATHRATTLE = 1
            // --------------------------------------------------------
            cards.Add("FP1_024", new Power {
                DeathrattleTask = new DamageTask(1, EntityType.ALLMINIONS)
            });

            // --------------------------------------- MINION - NEUTRAL
            // [FP1_027] Stoneskin Gargoyle - COST:3 [ATK:1/HP:4]
            // - Set: naxx, Rarity: common
            // --------------------------------------------------------
            // Text: At the start of your turn, restore this minion to full Health.
            // --------------------------------------------------------
            cards.Add("FP1_027", new Power {
                Trigger = new Trigger(TriggerType.TURN_START)
                {
                    SingleTask = new HealFullTask(EntityType.SOURCE)
                }
            });

            // --------------------------------------- MINION - NEUTRAL
            // [FP1_028] Undertaker - COST:1 [ATK:1/HP:2]
            // - Set: naxx, Rarity: common
            // --------------------------------------------------------
            // Text: Whenever you summon a minion with <b>Deathrattle</b>, gain +1 Attack.
            // --------------------------------------------------------
            // RefTag:
            // - DEATHRATTLE = 1
            // --------------------------------------------------------
            cards.Add("FP1_028", new Power {
                Trigger = new Trigger(TriggerType.SUMMON)
                {
                    TriggerSource = TriggerSource.FRIENDLY,
                    Condition     = SelfCondition.IsDeathrattleMinion,
                    SingleTask    = new AddEnchantmentTask("FP1_028e", EntityType.SOURCE)
                }
            });

            // --------------------------------------- MINION - NEUTRAL
            // [FP1_029] Dancing Swords - COST:3 [ATK:4/HP:4]
            // - Set: naxx, Rarity: common
            // --------------------------------------------------------
            // Text: <b>Deathrattle:</b> Your opponent draws a card.
            // --------------------------------------------------------
            // GameTag:
            // - DEATHRATTLE = 1
            // --------------------------------------------------------
            cards.Add("FP1_029", new Power {
                DeathrattleTask = new DrawOpTask()
            });

            // --------------------------------------- MINION - NEUTRAL
            // [FP1_030] Loatheb - COST:5 [ATK:5/HP:5]
            // - Set: naxx, Rarity: legendary
            // --------------------------------------------------------
            // Text: <b>Battlecry:</b> Enemy spells cost (5) more next turn.
            // --------------------------------------------------------
            // GameTag:
            // - ELITE = 1
            // - BATTLECRY = 1
            // --------------------------------------------------------
            cards.Add("FP1_030", new Power {
                PowerTask = new AddEnchantmentTask("FP1_030e", EntityType.OP_CONTROLLER)
            });

            // --------------------------------------- MINION - NEUTRAL
            // [FP1_031] Baron Rivendare - COST:4 [ATK:1/HP:7]
            // - Set: naxx, Rarity: legendary
            // --------------------------------------------------------
            // Text: Your minions trigger their <b>Deathrattles</b> twice.
            // --------------------------------------------------------
            // GameTag:
            // - ELITE = 1
            // - AURA = 1
            // --------------------------------------------------------
            // RefTag:
            // - DEATHRATTLE = 1
            // --------------------------------------------------------
            cards.Add("FP1_031", new Power {
                Aura = new Aura(AuraType.CONTROLLER, new Effect(GameTag.EXTRA_MINION_DEATHRATTLES_BASE, EffectOperator.SET, 1))
            });
        }
示例#8
0
        private static void Neutral(IDictionary <string, Power> cards)
        {
            // --------------------------------------- MINION - NEUTRAL
            // [FP1_001] Zombie Chow - COST:1 [ATK:2/HP:3]
            // - Set: naxx, Rarity: common
            // --------------------------------------------------------
            // Text: <b>Deathrattle:</b> Restore 5 Health to the enemy hero.
            // --------------------------------------------------------
            // GameTag:
            // - DEATHRATTLE = 1
            // --------------------------------------------------------
            cards.Add("FP1_001", new Power {
                DeathrattleTask = new HealTask(5, EntityType.OP_HERO)
            });

            // --------------------------------------- MINION - NEUTRAL
            // [FP1_002] Haunted Creeper - COST:2 [ATK:1/HP:2]
            // - Race: beast, Set: naxx, Rarity: common
            // --------------------------------------------------------
            // Text: <b>Deathrattle:</b> Summon two 1/1 Spectral Spiders.
            // --------------------------------------------------------
            // GameTag:
            // - DEATHRATTLE = 1
            // --------------------------------------------------------
            cards.Add("FP1_002", new Power {
                DeathrattleTask = new EnqueueTask(2, new SummonTask("FP1_002t", SummonSide.DEATHRATTLE))
            });

            // --------------------------------------- MINION - NEUTRAL
            // [FP1_003] Echoing Ooze - COST:2 [ATK:1/HP:2]
            // - Set: naxx, Rarity: epic
            // --------------------------------------------------------
            // Text: <b>Battlecry:</b> Summon an exact copy of this minion at the end of the turn.
            // --------------------------------------------------------
            // GameTag:
            // - BATTLECRY = 1
            // --------------------------------------------------------
            cards.Add("FP1_003", new Power {
                PowerTask = ComplexTask.Create(
                    new SetGameTagTask(GameTag.CUSTOM_KEYWORD_EFFECT, 1, EntityType.SOURCE),
                    new SetGameTagTask(GameTag.TAG_SCRIPT_DATA_NUM_1, 1, EntityType.SOURCE),
                    new SetGameTagTask(GameTag.MULTIPLY_BUFF_VALUE, 1, EntityType.SOURCE)),
                Trigger = new Trigger(TriggerType.TURN_END)
                {
                    SingleTask = ComplexTask.Create(
                        new ConditionTask(EntityType.SOURCE, SelfCondition.IsTagValue(GameTag.CUSTOM_KEYWORD_EFFECT, 1)),
                        new FlagTask(true, ComplexTask.Create(
                                         new SetGameTagTask(GameTag.CUSTOM_KEYWORD_EFFECT, 0, EntityType.SOURCE),
                                         new SummonCopyTask(EntityType.SOURCE, SummonSide.RIGHT)))),
                    RemoveAfterTriggered = true
                }
            });

            // --------------------------------------- MINION - NEUTRAL
            // [FP1_004] Mad Scientist - COST:2 [ATK:2/HP:2]
            // - Set: naxx, Rarity: common
            // --------------------------------------------------------
            // Text: <b>Deathrattle:</b> Put a <b>Secret</b> from your deck into the battlefield.
            // --------------------------------------------------------
            // GameTag:
            // - DEATHRATTLE = 1
            // --------------------------------------------------------
            // RefTag:
            // - SECRET = 1
            // --------------------------------------------------------
            cards.Add("FP1_004", new Power {
                DeathrattleTask = ComplexTask.PutSecretFromDeck
            });

            // --------------------------------------- MINION - NEUTRAL
            // [FP1_005] Shade of Naxxramas - COST:3 [ATK:2/HP:2]
            // - Set: naxx, Rarity: epic
            // --------------------------------------------------------
            // Text: <b>Stealth.</b> At the start of your turn, gain +1/+1.
            // --------------------------------------------------------
            // GameTag:
            // - STEALTH = 1
            // --------------------------------------------------------
            cards.Add("FP1_005", new Power {
                Trigger = new Trigger(TriggerType.TURN_START)
                {
                    SingleTask = new AddEnchantmentTask("FP1_005e", EntityType.SOURCE)
                }
            });

            // --------------------------------------- MINION - NEUTRAL
            // [FP1_007] Nerubian Egg - COST:2 [ATK:0/HP:2]
            // - Set: naxx, Rarity: rare
            // --------------------------------------------------------
            // Text: <b>Deathrattle:</b> Summon a 4/4 Nerubian.
            // --------------------------------------------------------
            // GameTag:
            // - DEATHRATTLE = 1
            // --------------------------------------------------------
            cards.Add("FP1_007", new Power {
                DeathrattleTask = new SummonTask("FP1_007t", SummonSide.DEATHRATTLE)
            });

            // --------------------------------------- MINION - NEUTRAL
            // [FP1_008] Spectral Knight - COST:5 [ATK:4/HP:6]
            // - Set: naxx, Rarity: common
            // --------------------------------------------------------
            // Text: Can't be targeted by spells or Hero Powers.
            // --------------------------------------------------------
            // GameTag:
            // - CANT_BE_TARGETED_BY_SPELLS = 1
            // - CANT_BE_TARGETED_BY_HERO_POWERS = 1
            // --------------------------------------------------------
            cards.Add("FP1_008", null);

            // --------------------------------------- MINION - NEUTRAL
            // [FP1_009] Deathlord - COST:3 [ATK:2/HP:8]
            // - Set: naxx, Rarity: rare
            // --------------------------------------------------------
            // Text: <b>Taunt. Deathrattle:</b> Your opponent puts a minion from their deck into the battlefield.
            // --------------------------------------------------------
            // GameTag:
            // - TAUNT = 1
            // - DEATHRATTLE = 1
            // --------------------------------------------------------
            cards.Add("FP1_009", new Power {
                DeathrattleTask = ComplexTask.Create(
                    new IncludeTask(EntityType.OP_DECK),
                    new FilterStackTask(SelfCondition.IsMinion),
                    new RandomTask(1, EntityType.STACK),
                    new SummonStackTask())
            });

            // --------------------------------------- MINION - NEUTRAL
            // [FP1_010] Maexxna - COST:6 [ATK:2/HP:8]
            // - Race: beast, Set: naxx, Rarity: legendary
            // --------------------------------------------------------
            // Text: <b>Poisonous</b>
            // --------------------------------------------------------
            // GameTag:
            // - ELITE = 1
            // - POISONOUS = 1
            // --------------------------------------------------------
            cards.Add("FP1_010", null);

            // --------------------------------------- MINION - NEUTRAL
            // [FP1_012] Sludge Belcher - COST:5 [ATK:3/HP:5]
            // - Set: naxx, Rarity: rare
            // --------------------------------------------------------
            // Text: <b>Taunt
            //       Deathrattle:</b> Summon a 1/2 Slime with <b>Taunt</b>.
            // --------------------------------------------------------
            // GameTag:
            // - TAUNT = 1
            // - DEATHRATTLE = 1
            // --------------------------------------------------------
            cards.Add("FP1_012", new Power {
                DeathrattleTask = new SummonTask("FP1_012t", SummonSide.DEATHRATTLE)
            });

            // --------------------------------------- MINION - NEUTRAL
            // [FP1_013] Kel'Thuzad - COST:8 [ATK:6/HP:8]
            // - Set: naxx, Rarity: legendary
            // --------------------------------------------------------
            // Text: At the end of each turn, summon all friendly minions that died this turn.
            // --------------------------------------------------------
            // GameTag:
            // - ELITE = 1
            // --------------------------------------------------------
            cards.Add("FP1_013", new Power {
                Trigger = new Trigger(TriggerType.TURN_END)
                {
                    EitherTurn = true,
                    SingleTask = new FuncNumberTask(src =>
                    {
                        Controller c            = src.Controller;
                        int num                 = c.NumFriendlyMinionsThatDiedThisTurn;
                        GraveyardZone graveyard = c.GraveyardZone;
                        if (graveyard.Count == 0)
                        {
                            return(0);
                        }
                        int i = graveyard.Count - 1;
                        int j = 0;
                        do
                        {
                            if (graveyard[i] is Minion m && m.ToBeDestroyed)
                            {
                                Generic.SummonBlock.Invoke(c, (Minion)Entity.FromCard(c, m.Card), -1);
                                j++;
                            }
                            i--;
                        } while (j < num && i >= 0);

                        return(0);
                    })
                }
            });
示例#9
0
        private static void Neutral(IDictionary <string, List <Enchantment> > cards)
        {
            // --------------------------------------- MINION - NEUTRAL
            // [BRM_019] Grim Patron - COST:5 [ATK:3/HP:3]
            // - Set: fp2, Rarity: rare
            // --------------------------------------------------------
            // Text: Whenever this minion survives damage, summon another Grim Patron.
            // --------------------------------------------------------
            cards.Add("BRM_019", new List <Enchantment> {
                new Enchantment
                {
                    Area       = EnchantmentArea.SELF,
                    Activation = EnchantmentActivation.BOARD_ZONE,
                    Trigger    = new TriggerBuilder().Create()
                                 .EnableConditions(SelfCondition.IsInZone(Zone.PLAY), SelfCondition.IsNotSilenced)
                                 .ApplyConditions(RelaCondition.IsOther(SelfCondition.IsTagValue(GameTag.TO_BE_DESTROYED, 0)))
                                 .TriggerEffect(GameTag.DAMAGE, 1)
                                 .SingleTask(new SummonTask("BRM_019", SummonSide.RIGHT))
                                 .Build()
                }
            });

            // --------------------------------------- MINION - NEUTRAL
            // [BRM_020] Dragonkin Sorcerer - COST:4 [ATK:3/HP:5]
            // - Race: dragon, Set: fp2, Rarity: common
            // --------------------------------------------------------
            // Text: Whenever <b>you</b> target this minion with a spell, gain +1/+1.
            // --------------------------------------------------------
            cards.Add("BRM_020", new List <Enchantment> {
                new Enchantment
                {
                    Area       = EnchantmentArea.HAND,
                    Activation = EnchantmentActivation.BOARD_ZONE,
                    Trigger    = Triggers.FriendlySpellTargetingMe(new BuffTask(Buffs.AttackHealth(1), EntityType.SOURCE))
                }
            });

            // --------------------------------------- MINION - NEUTRAL
            // [BRM_022] Dragon Egg - COST:1 [ATK:0/HP:2]
            // - Set: fp2, Rarity: rare
            // --------------------------------------------------------
            // Text: Whenever this minion takes damage, summon a 2/1 Whelp.
            // --------------------------------------------------------
            cards.Add("BRM_022", new List <Enchantment> {
                new Enchantment
                {
                    Area       = EnchantmentArea.SELF,
                    Activation = EnchantmentActivation.BOARD_ZONE,
                    Trigger    = new TriggerBuilder().Create()
                                 .EnableConditions(SelfCondition.IsInZone(Zone.PLAY), SelfCondition.IsNotSilenced)
                                 .TriggerEffect(GameTag.DAMAGE, 1)
                                 .SingleTask(new SummonTask("BRM_004t", SummonSide.RIGHT))
                                 .Build()
                }
            });

            // --------------------------------------- MINION - NEUTRAL
            // [BRM_024] Drakonid Crusher - COST:6 [ATK:6/HP:6]
            // - Race: dragon, Set: fp2, Rarity: common
            // --------------------------------------------------------
            // Text: <b>Battlecry:</b> If your opponent has 15 or less Health, gain +3/+3.
            // --------------------------------------------------------
            // GameTag:
            // - BATTLECRY = 1
            // --------------------------------------------------------
            cards.Add("BRM_024", new List <Enchantment> {
                new Enchantment
                {
                    Activation = EnchantmentActivation.BATTLECRY,
                    SingleTask = ComplexTask.Create(
                        new ConditionTask(EntityType.OP_HERO, SelfCondition.IsHealth(15, RelaSign.LEQ)),
                        new FlagTask(true, new BuffTask(Buffs.AttackHealth(2), EntityType.SOURCE)))
                },
            });

            // --------------------------------------- MINION - NEUTRAL
            // [BRM_025] Volcanic Drake - COST:6 [ATK:6/HP:4]
            // - Race: dragon, Set: fp2, Rarity: common
            // --------------------------------------------------------
            // Text: Costs (1) less for each minion that died this turn.
            // --------------------------------------------------------
            cards.Add("BRM_025", new List <Enchantment> {
                new Enchantment
                {
                    Area       = EnchantmentArea.SELF,
                    Activation = EnchantmentActivation.HAND_ZONE,
                    Enchant    = Auras.CostFunc(
                        owner => - (owner.Controller.NumFriendlyMinionsThatDiedThisTurn +
                                    owner.Controller.Opponent.NumFriendlyMinionsThatDiedThisTurn))
                }
            });

            // --------------------------------------- MINION - NEUTRAL
            // [BRM_026] Hungry Dragon - COST:4 [ATK:5/HP:6]
            // - Race: dragon, Set: fp2, Rarity: common
            // --------------------------------------------------------
            // Text: <b>Battlecry:</b> Summon a random 1-Cost minion for your opponent.
            // --------------------------------------------------------
            // GameTag:
            // - BATTLECRY = 1
            // --------------------------------------------------------
            cards.Add("BRM_026", new List <Enchantment> {
                new Enchantment
                {
                    Activation = EnchantmentActivation.BATTLECRY,
                    SingleTask = ComplexTask.Create(
                        new RandomMinionTask(GameTag.COST, 1),
                        new SummonOpTask()),
                },
            });

            // --------------------------------------- MINION - NEUTRAL
            // [BRM_027] Majordomo Executus - COST:9 [ATK:9/HP:7]
            // - Set: fp2, Rarity: legendary
            // --------------------------------------------------------
            // Text: <b>Deathrattle:</b> Replace your hero with Ragnaros, the Firelord.
            // --------------------------------------------------------
            // GameTag:
            // - ELITE = 1
            // - DEATHRATTLE = 1
            // --------------------------------------------------------
            cards.Add("BRM_027", new List <Enchantment> {
                new Enchantment
                {
                    Activation = EnchantmentActivation.DEATHRATTLE,
                    SingleTask = new ReplaceHeroTask("BRM_027h", "BRM_027p"),
                },
            });

            // --------------------------------------- MINION - NEUTRAL
            // [BRM_028] Emperor Thaurissan - COST:6 [ATK:5/HP:5]
            // - Set: fp2, Rarity: legendary
            // --------------------------------------------------------
            // Text: At the end of your turn, reduce the Cost of cards in your hand by (1).
            // --------------------------------------------------------
            // GameTag:
            // - ELITE = 1
            // --------------------------------------------------------
            cards.Add("BRM_028", new List <Enchantment> {
                new Enchantment
                {
                    Area       = EnchantmentArea.CONTROLLER,
                    Activation = EnchantmentActivation.BOARD_ZONE,
                    Trigger    = new TriggerBuilder().Create()
                                 .EnableConditions(SelfCondition.IsInZone(Zone.PLAY), SelfCondition.IsNotSilenced)
                                 .TriggerEffect(GameTag.TURN_START, -1)
                                 .SingleTask(new BuffTask(Buffs.Cost(-1), EntityType.HAND))
                                 .Build()
                }
            });

            // --------------------------------------- MINION - NEUTRAL
            // [BRM_029] Rend Blackhand - COST:7 [ATK:8/HP:4]
            // - Set: fp2, Rarity: legendary
            // --------------------------------------------------------
            // Text: <b>Battlecry:</b> If you're holding a Dragon, destroy a <b>Legendary</b> minion.
            // --------------------------------------------------------
            // GameTag:
            // - ELITE = 1
            // - BATTLECRY = 1
            // --------------------------------------------------------
            // PlayReq:
            // - REQ_MINION_TARGET = 0
            // - REQ_TARGET_IF_AVAILABLE_AND_DRAGON_IN_HAND = 0
            // - REQ_LEGENDARY_TARGET = 0
            // --------------------------------------------------------
            cards.Add("BRM_029", new List <Enchantment> {
                new Enchantment
                {
                    Activation = EnchantmentActivation.BATTLECRY,
                    SingleTask = new DestroyTask(EntityType.TARGET)
                },
            });

            // --------------------------------------- MINION - NEUTRAL
            // [BRM_030] Nefarian - COST:9 [ATK:8/HP:8]
            // - Race: dragon, Set: fp2, Rarity: legendary
            // --------------------------------------------------------
            // Text: <b>Battlecry:</b> Add 2 random spells to your hand <i>(from your opponent's class)</i>.
            // --------------------------------------------------------
            // GameTag:
            // - ELITE = 1
            // - BATTLECRY = 1
            // --------------------------------------------------------
            cards.Add("BRM_030", new List <Enchantment> {
                new Enchantment
                {
                    Activation = EnchantmentActivation.BOARD_ZONE,
                    SingleTask = new EnqueueTask(2, ComplexTask.Create(
                                                     new RandomCardTask(EntityType.OP_HERO),
                                                     new AddStackTo(EntityType.HAND))),
                }
            });

            // --------------------------------------- MINION - NEUTRAL
            // [BRM_031] Chromaggus - COST:8 [ATK:6/HP:8]
            // - Race: dragon, Set: fp2, Rarity: legendary
            // --------------------------------------------------------
            // Text: Whenever you draw a card, put another copy into your hand.
            // --------------------------------------------------------
            // GameTag:
            // - ELITE = 1
            // --------------------------------------------------------
            cards.Add("BRM_031", new List <Enchantment> {
                new Enchantment
                {
                    Area       = EnchantmentArea.CONTROLLER,
                    Activation = EnchantmentActivation.BOARD_ZONE,
                    Trigger    = new TriggerBuilder().Create()
                                 .EnableConditions(SelfCondition.IsNotDead, SelfCondition.IsNotSilenced)
                                 .TriggerEffect(GameTag.LAST_CARD_DRAWN, 0)
                                 .SingleTask(ComplexTask.Create(
                                                 new IncludeTask(EntityType.SOURCE),
                                                 new FuncPlayablesTask(p =>
                    {
                        Controller controller = p[0].Controller;
                        return(new List <IPlayable> {
                            controller.Game.IdEntityDic[controller.LastCardDrawn]
                        });
                    }),
                                                 new CopyTask(EntityType.STACK, 1),
                                                 new AddStackTo(EntityType.HAND)))
                                 .Build()
                }
            });

            // --------------------------------------- MINION - NEUTRAL
            // [BRM_033] Blackwing Technician - COST:3 [ATK:2/HP:4]
            // - Fac: neutral, Set: fp2, Rarity: common
            // --------------------------------------------------------
            // Text: <b>Battlecry:</b> If you're holding a Dragon, gain +1/+1.
            // --------------------------------------------------------
            // GameTag:
            // - BATTLECRY = 1
            // --------------------------------------------------------
            cards.Add("BRM_033", new List <Enchantment> {
                new Enchantment
                {
                    Activation = EnchantmentActivation.BATTLECRY,
                    SingleTask = ComplexTask.Create(
                        new ConditionTask(EntityType.SOURCE, SelfCondition.IsDragonInHand),
                        new FlagTask(true, new BuffTask(Buffs.AttackHealth(1), EntityType.SOURCE)))
                },
            });

            // --------------------------------------- MINION - NEUTRAL
            // [BRM_034] Blackwing Corruptor - COST:5 [ATK:5/HP:4]
            // - Fac: neutral, Set: fp2, Rarity: common
            // --------------------------------------------------------
            // Text: <b>Battlecry:</b> If you're holding a Dragon, deal 3 damage.
            // --------------------------------------------------------
            // GameTag:
            // - BATTLECRY = 1
            // --------------------------------------------------------
            // PlayReq:
            // - REQ_TARGET_IF_AVAILABLE_AND_DRAGON_IN_HAND = 0
            // --------------------------------------------------------
            cards.Add("BRM_034", new List <Enchantment> {
                new Enchantment
                {
                    Activation = EnchantmentActivation.BATTLECRY,
                    SingleTask = ComplexTask.Create(
                        new ConditionTask(EntityType.SOURCE, SelfCondition.IsDragonInHand),
                        new FlagTask(true, new DamageTask(3, EntityType.TARGET)))
                },
            });
        }
示例#10
0
 public TriggerBuilder SetCondition(SelfCondition condition)
 {
     _trigger.Condition = condition;
     return(this);
 }
示例#11
0
 public BuffTask(Enchant buff, EntityType type, SelfCondition condition = null)
 {
     Buff      = buff;
     Type      = type;
     Condition = condition;
 }
示例#12
0
        private static void Neutral(IDictionary <string, List <Enchantment> > cards)
        {
            // --------------------------------------- MINION - NEUTRAL
            // [EX1_016] Sylvanas Windrunner - COST:6 [ATK:5/HP:5]
            // - Set: hof, Rarity: legendary
            // --------------------------------------------------------
            // Text: <b>Deathrattle:</b> Take
            //       control of a random
            //       enemy minion.
            // --------------------------------------------------------
            // GameTag:
            // - ELITE = 1
            // - DEATHRATTLE = 1
            // --------------------------------------------------------
            cards.Add("EX1_016", new List <Enchantment> {
                new Enchantment
                {
                    Activation = EnchantmentActivation.DEATHRATTLE,
                    SingleTask = ComplexTask.Create(
                        new RandomTask(1, EntityType.OP_MINIONS),
                        new ControlTask(EntityType.STACK))
                }
            });

            // --------------------------------------- MINION - NEUTRAL
            // [EX1_062] Old Murk-Eye - COST:4 [ATK:2/HP:4]
            // - Race: murloc, Fac: neutral, Set: hof, Rarity: legendary
            // --------------------------------------------------------
            // Text: <b>Charge</b>. Has +1 Attack for each other Murloc on the battlefield.
            // --------------------------------------------------------
            // GameTag:
            // - ELITE = 1
            // - CHARGE = 1
            // --------------------------------------------------------
            cards.Add("EX1_062", new List <Enchantment> {
                // TODO [EX1_062] Old Murk-Eye && Test: Old Murk-Eye_EX1_062
                new Enchantment
                {
                    //Activation = null,
                    //SingleTask = null,
                }
            });

            // --------------------------------------- MINION - NEUTRAL
            // [EX1_112] Gelbin Mekkatorque - COST:6 [ATK:6/HP:6]
            // - Fac: alliance, Set: hof, Rarity: legendary
            // --------------------------------------------------------
            // Text: <b>Battlecry:</b> Summon an AWESOME invention.
            // --------------------------------------------------------
            // Entourage: Mekka1, Mekka2, Mekka3, Mekka4
            // --------------------------------------------------------
            // GameTag:
            // - ELITE = 1
            // - BATTLECRY = 1
            // --------------------------------------------------------
            cards.Add("EX1_112", new List <Enchantment> {
                // TODO [EX1_112] Gelbin Mekkatorque && Test: Gelbin Mekkatorque_EX1_112
                new Enchantment
                {
                    Activation = EnchantmentActivation.BATTLECRY,
                    SingleTask = null,
                },
            });

            // --------------------------------------- MINION - NEUTRAL
            // [EX1_284] Azure Drake - COST:5 [ATK:4/HP:4]
            // - Race: dragon, Fac: neutral, Set: hof, Rarity: rare
            // --------------------------------------------------------
            // Text: <b>Spell Damage +1</b>. <b>Battlecry:</b> Draw a card.
            // --------------------------------------------------------
            // GameTag:
            // - SPELLPOWER = 1
            // - BATTLECRY = 1
            // --------------------------------------------------------
            cards.Add("EX1_284", new List <Enchantment> {
                new Enchantment
                {
                    Area       = EnchantmentArea.HERO,
                    Activation = EnchantmentActivation.BOARD,
                    Enchant    = Auras.SpellPowerDamage(1)
                },
                new Enchantment
                {
                    Activation = EnchantmentActivation.BATTLECRY,
                    SingleTask = new DrawTask()
                }
            });

            // --------------------------------------- MINION - NEUTRAL
            // [EX1_298] Ragnaros the Firelord - COST:8 [ATK:8/HP:8]
            // - Race: elemental, Fac: neutral, Set: hof, Rarity: legendary
            // --------------------------------------------------------
            // Text: Can't attack. At the end of your turn, deal 8 damage to a random enemy.
            // --------------------------------------------------------
            // GameTag:
            // - ELITE = 1
            // - CANT_ATTACK = 1
            // --------------------------------------------------------
            cards.Add("EX1_298", new List <Enchantment> {
                new Enchantment
                {
                    Area       = EnchantmentArea.CONTROLLER,
                    Activation = EnchantmentActivation.BOARD,
                    Trigger    = new TriggerBuilder().Create()
                                 .EnableConditions(SelfCondition.IsInZone(Zone.PLAY), SelfCondition.IsNotSilenced)
                                 .TriggerEffect(GameTag.TURN_START, -1)
                                 .SingleTask(ComplexTask.DamageRandomTargets(1, EntityType.ENEMIES, 8))
                                 .Build()
                }
            });

            // --------------------------------------- MINION - NEUTRAL
            // [NEW1_016] Captain's Parrot - COST:2 [ATK:1/HP:1]
            // - Race: beast, Set: hof, Rarity: epic
            // --------------------------------------------------------
            // Text: <b>Battlecry:</b> Draw a Pirate from your deck.
            // --------------------------------------------------------
            // GameTag:
            // - BATTLECRY = 1
            // --------------------------------------------------------
            cards.Add("NEW1_016", new List <Enchantment> {
                // TODO [NEW1_016] Captain's Parrot && Test: Captain's Parrot_NEW1_016
                new Enchantment
                {
                    Activation = EnchantmentActivation.BATTLECRY,
                    SingleTask = null,
                },
            });

            // --------------------------------------- MINION - NEUTRAL
            // [PRO_001] Elite Tauren Chieftain - COST:5 [ATK:5/HP:5]
            // - Set: hof, Rarity: legendary
            // --------------------------------------------------------
            // Text: <b>Battlecry:</b> Give both players the power to ROCK! (with a Power Chord card)
            // --------------------------------------------------------
            // Entourage: PRO_001a, PRO_001b, PRO_001c
            // --------------------------------------------------------
            // GameTag:
            // - ELITE = 1
            // - BATTLECRY = 1
            // --------------------------------------------------------
            cards.Add("PRO_001", new List <Enchantment> {
                // TODO [PRO_001] Elite Tauren Chieftain && Test: Elite Tauren Chieftain_PRO_001
                new Enchantment
                {
                    Activation = EnchantmentActivation.BATTLECRY,
                    SingleTask = null,
                },
            });
        }
 public AdaptiveCostEffectObsolete(Func <Playable, int> initialisationFunction, Func <IPlayable, int> triggerValueFunction, TriggerType trigger,
                                   TriggerSource triggerSource = TriggerSource.ALL, SelfCondition triggerCondition = null)
 {
     Contract.Requires(trigger != TriggerType.NONE);
     _initialisationFunction = initialisationFunction;
     _costFunction           = triggerValueFunction;
     _triggerType            = trigger;
     _triggerSource          = triggerSource;
     _condition = triggerCondition;
 }
 /// <summary>
 /// Creates an Adaptive Cost Effect that sets cost of the owner to a specific value
 /// until the end of the turn when the given criterion is satisfied. (e.g. Happy Ghoul, Arcane Tyrant)
 /// </summary>
 /// <param name="value">The value to set.</param>
 /// <param name="trigger">The type of trigger this effect should check.</param>
 /// <param name="triggerSource">The specific type of source entities that can invoke the trigger.</param>
 /// <param name="triggerCondition">Condition to be applied to the source of the trigger.</param>
 public AdaptiveCostEffectObsolete(int value, TriggerType trigger,
                                   TriggerSource triggerSource = TriggerSource.ALL, SelfCondition triggerCondition = null)
 {
     Contract.Requires(trigger != TriggerType.NONE);
     _value         = value;
     _triggerType   = trigger;
     _triggerSource = triggerSource;
     _condition     = triggerCondition;
 }
 public SwitchingAura(AuraType type, SelfCondition initCondition, TriggerType offTrigger, string enchantmentId) : base(type, enchantmentId)
 {
     _initialisationCondtion = initCondition;
     _offTrigger             = offTrigger;
 }
 public SwitchingAura(AuraType type, SelfCondition initCondition, TriggerType offTrigger, params IEffect[] effects) : base(type, effects)
 {
     _initialisationCondtion = initCondition;
     _offTrigger             = offTrigger;
 }