diff --git a/Mage.Sets/src/mage/sets/judgepromo/XiahouDunTheOneEyed.java b/Mage.Sets/src/mage/sets/judgepromo/XiahouDunTheOneEyed.java
new file mode 100644
index 00000000000..b26be669bfc
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/judgepromo/XiahouDunTheOneEyed.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.judgepromo;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class XiahouDunTheOneEyed extends mage.sets.portalthreekingdoms.XiahouDunTheOneEyed {
+
+ public XiahouDunTheOneEyed(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 64;
+ this.expansionSetCode = "JR";
+ }
+
+ public XiahouDunTheOneEyed(final XiahouDunTheOneEyed card) {
+ super(card);
+ }
+
+ @Override
+ public XiahouDunTheOneEyed copy() {
+ return new XiahouDunTheOneEyed(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/portal/CapriciousSorcerer.java b/Mage.Sets/src/mage/sets/portal/CapriciousSorcerer.java
new file mode 100644
index 00000000000..f9d4afe25bf
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/portal/CapriciousSorcerer.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.portal;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.ActivateIfConditionActivatedAbility;
+import mage.abilities.condition.common.MyTurnBeforeAttackersDeclaredCondition;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.effects.common.DamageTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.target.common.TargetCreatureOrPlayer;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class CapriciousSorcerer extends CardImpl {
+
+ public CapriciousSorcerer(UUID ownerId) {
+ super(ownerId, 44, "Capricious Sorcerer", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{2}{U}");
+ this.expansionSetCode = "POR";
+ this.subtype.add("Human");
+ this.subtype.add("Wizard");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // {tap}: Capricious Sorcerer deals 1 damage to target creature or player. Activate this ability only during your turn, before attackers are declared.
+ Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
+ new DamageTargetEffect(1), new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.getInstance());
+ ability.addTarget(new TargetCreatureOrPlayer());
+ this.addAbility(ability);
+ }
+
+ public CapriciousSorcerer(final CapriciousSorcerer card) {
+ super(card);
+ }
+
+ @Override
+ public CapriciousSorcerer copy() {
+ return new CapriciousSorcerer(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/portal/KingsAssassin.java b/Mage.Sets/src/mage/sets/portal/KingsAssassin.java
new file mode 100644
index 00000000000..ed4220264de
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/portal/KingsAssassin.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.portal;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.ActivateIfConditionActivatedAbility;
+import mage.abilities.condition.common.MyTurnBeforeAttackersDeclaredCondition;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.effects.common.DestroyTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.permanent.TappedPredicate;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class KingsAssassin extends CardImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature");
+
+ static {
+ filter.add(new TappedPredicate());
+ }
+
+ public KingsAssassin(UUID ownerId) {
+ super(ownerId, 21, "King's Assassin", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{1}{B}{B}");
+ this.expansionSetCode = "POR";
+ this.subtype.add("Human");
+ this.subtype.add("Assassin");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // {tap}: Destroy target tapped creature. Activate this ability only during your turn, before attackers are declared.
+ Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
+ new DestroyTargetEffect(), new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.getInstance());
+ ability.addTarget(new TargetCreaturePermanent(filter));
+ this.addAbility(ability);
+ }
+
+ public KingsAssassin(final KingsAssassin card) {
+ super(card);
+ }
+
+ @Override
+ public KingsAssassin copy() {
+ return new KingsAssassin(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/portal/SternMarshal.java b/Mage.Sets/src/mage/sets/portal/SternMarshal.java
new file mode 100644
index 00000000000..4ed53dbfe4c
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/portal/SternMarshal.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.portal;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.ActivateIfConditionActivatedAbility;
+import mage.abilities.condition.common.MyTurnBeforeAttackersDeclaredCondition;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.effects.common.continuous.BoostTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class SternMarshal extends CardImpl {
+
+ public SternMarshal(UUID ownerId) {
+ super(ownerId, 194, "Stern Marshal", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{2}{W}");
+ this.expansionSetCode = "POR";
+ this.subtype.add("Human");
+ this.subtype.add("Soldier");
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // {tap}: Target creature gets +2/+2 until end of turn. Activate this ability only during your turn, before attackers are declared.
+ Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
+ new BoostTargetEffect(2, 2, Duration.EndOfTurn), new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.getInstance());
+ ability.addTarget(new TargetCreaturePermanent());
+ this.addAbility(ability);
+ }
+
+ public SternMarshal(final SternMarshal card) {
+ super(card);
+ }
+
+ @Override
+ public SternMarshal copy() {
+ return new SternMarshal(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/portalsecondage/AlabornVeteran.java b/Mage.Sets/src/mage/sets/portalsecondage/AlabornVeteran.java
new file mode 100644
index 00000000000..4b19d3ce3cb
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/portalsecondage/AlabornVeteran.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.portalsecondage;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.ActivateIfConditionActivatedAbility;
+import mage.abilities.condition.common.MyTurnBeforeAttackersDeclaredCondition;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.effects.common.continuous.BoostTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class AlabornVeteran extends CardImpl {
+
+ public AlabornVeteran(UUID ownerId) {
+ super(ownerId, 125, "Alaborn Veteran", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{2}{W}");
+ this.expansionSetCode = "PO2";
+ this.subtype.add("Human");
+ this.subtype.add("Knight");
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // {tap}: Target creature gets +2/+2 until end of turn. Activate this ability only during your turn, before attackers are declared.
+ Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
+ new BoostTargetEffect(2, 2, Duration.EndOfTurn), new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.getInstance());
+ ability.addTarget(new TargetCreaturePermanent());
+ this.addAbility(ability);
+ }
+
+ public AlabornVeteran(final AlabornVeteran card) {
+ super(card);
+ }
+
+ @Override
+ public AlabornVeteran copy() {
+ return new AlabornVeteran(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/portalsecondage/ApprenticeSorcerer.java b/Mage.Sets/src/mage/sets/portalsecondage/ApprenticeSorcerer.java
new file mode 100644
index 00000000000..68d18b6e330
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/portalsecondage/ApprenticeSorcerer.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.portalsecondage;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.ActivateIfConditionActivatedAbility;
+import mage.abilities.condition.common.MyTurnBeforeAttackersDeclaredCondition;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.effects.common.DamageTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.target.common.TargetCreatureOrPlayer;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class ApprenticeSorcerer extends CardImpl {
+
+ public ApprenticeSorcerer(UUID ownerId) {
+ super(ownerId, 32, "Apprentice Sorcerer", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{2}{U}");
+ this.expansionSetCode = "PO2";
+ this.subtype.add("Human");
+ this.subtype.add("Wizard");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // {tap}: Apprentice Sorcerer deals 1 damage to target creature or player. Activate this ability only during your turn, before attackers are declared.
+ Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
+ new DamageTargetEffect(1), new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.getInstance());
+ ability.addTarget(new TargetCreatureOrPlayer());
+ this.addAbility(ability);
+ }
+
+ public ApprenticeSorcerer(final ApprenticeSorcerer card) {
+ super(card);
+ }
+
+ @Override
+ public ApprenticeSorcerer copy() {
+ return new ApprenticeSorcerer(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/portalsecondage/GoblinFirestarter.java b/Mage.Sets/src/mage/sets/portalsecondage/GoblinFirestarter.java
new file mode 100644
index 00000000000..1b4f1d3f08d
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/portalsecondage/GoblinFirestarter.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.portalsecondage;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.ActivateIfConditionActivatedAbility;
+import mage.abilities.condition.common.MyTurnBeforeAttackersDeclaredCondition;
+import mage.abilities.costs.common.SacrificeSourceCost;
+import mage.abilities.effects.common.DamageTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.target.common.TargetCreatureOrPlayer;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class GoblinFirestarter extends CardImpl {
+
+ public GoblinFirestarter(UUID ownerId) {
+ super(ownerId, 96, "Goblin Firestarter", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{R}");
+ this.expansionSetCode = "PO2";
+ this.subtype.add("Goblin");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // Sacrifice Goblin Firestarter: Goblin Firestarter deals 1 damage to target creature or player. Activate this ability only during your turn, before attackers are declared.
+ Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
+ new DamageTargetEffect(1), new SacrificeSourceCost(), MyTurnBeforeAttackersDeclaredCondition.getInstance());
+ ability.addTarget(new TargetCreatureOrPlayer());
+ this.addAbility(ability);
+ }
+
+ public GoblinFirestarter(final GoblinFirestarter card) {
+ super(card);
+ }
+
+ @Override
+ public GoblinFirestarter copy() {
+ return new GoblinFirestarter(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/portalsecondage/NorwoodPriestess.java b/Mage.Sets/src/mage/sets/portalsecondage/NorwoodPriestess.java
new file mode 100644
index 00000000000..f9b36063fc2
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/portalsecondage/NorwoodPriestess.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.portalsecondage;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class NorwoodPriestess extends mage.sets.vintagemasters.NorwoodPriestess {
+
+ public NorwoodPriestess(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 77;
+ this.expansionSetCode = "PO2";
+ }
+
+ public NorwoodPriestess(final NorwoodPriestess card) {
+ super(card);
+ }
+
+ @Override
+ public NorwoodPriestess copy() {
+ return new NorwoodPriestess(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/portalsecondage/SteamCatapult.java b/Mage.Sets/src/mage/sets/portalsecondage/SteamCatapult.java
new file mode 100644
index 00000000000..fc990a2f215
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/portalsecondage/SteamCatapult.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.portalsecondage;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.ActivateIfConditionActivatedAbility;
+import mage.abilities.condition.common.MyTurnBeforeAttackersDeclaredCondition;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.effects.common.DestroyTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.permanent.TappedPredicate;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class SteamCatapult extends CardImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature");
+
+ static {
+ filter.add(new TappedPredicate());
+ }
+
+ public SteamCatapult(UUID ownerId) {
+ super(ownerId, 142, "Steam Catapult", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{3}{W}{W}");
+ this.expansionSetCode = "PO2";
+ this.subtype.add("Human");
+ this.subtype.add("Soldier");
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(3);
+
+ // {tap}: Destroy target tapped creature. Activate this ability only during your turn, before attackers are declared.
+ Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
+ new DestroyTargetEffect(), new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.getInstance());
+ ability.addTarget(new TargetCreaturePermanent(filter));
+ this.addAbility(ability);
+ }
+
+ public SteamCatapult(final SteamCatapult card) {
+ super(card);
+ }
+
+ @Override
+ public SteamCatapult copy() {
+ return new SteamCatapult(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/portalsecondage/TalasResearcher.java b/Mage.Sets/src/mage/sets/portalsecondage/TalasResearcher.java
new file mode 100644
index 00000000000..b2cc496f74b
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/portalsecondage/TalasResearcher.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.portalsecondage;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.ActivateIfConditionActivatedAbility;
+import mage.abilities.condition.common.MyTurnBeforeAttackersDeclaredCondition;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class TalasResearcher extends CardImpl {
+
+ public TalasResearcher(UUID ownerId) {
+ super(ownerId, 51, "Talas Researcher", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{4}{U}");
+ this.expansionSetCode = "PO2";
+ this.subtype.add("Human");
+ this.subtype.add("Pirate");
+ this.subtype.add("Wizard");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // {tap}: Draw a card. Activate this ability only during your turn, before attackers are declared.
+ Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
+ new DrawCardSourceControllerEffect(1), new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.getInstance());
+ this.addAbility(ability);
+ }
+
+ public TalasResearcher(final TalasResearcher card) {
+ super(card);
+ }
+
+ @Override
+ public TalasResearcher copy() {
+ return new TalasResearcher(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/portalsecondage/TempleElder.java b/Mage.Sets/src/mage/sets/portalsecondage/TempleElder.java
new file mode 100644
index 00000000000..ab7b054fafa
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/portalsecondage/TempleElder.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.portalsecondage;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.ActivateIfConditionActivatedAbility;
+import mage.abilities.condition.common.MyTurnBeforeAttackersDeclaredCondition;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.effects.common.GainLifeEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class TempleElder extends CardImpl {
+
+ public TempleElder(UUID ownerId) {
+ super(ownerId, 144, "Temple Elder", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{2}{W}");
+ this.expansionSetCode = "PO2";
+ this.subtype.add("Human");
+ this.subtype.add("Cleric");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(2);
+
+ // {tap}: You gain 1 life. Activate this ability only during your turn, before attackers are declared.
+ Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
+ new GainLifeEffect(1), new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.getInstance());
+ this.addAbility(ability);
+ }
+
+ public TempleElder(final TempleElder card) {
+ super(card);
+ }
+
+ @Override
+ public TempleElder copy() {
+ return new TempleElder(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/portalthreekingdoms/CunningAdvisor.java b/Mage.Sets/src/mage/sets/portalthreekingdoms/CunningAdvisor.java
new file mode 100644
index 00000000000..f4dea78a542
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/portalthreekingdoms/CunningAdvisor.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.portalthreekingdoms;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.ActivateIfConditionActivatedAbility;
+import mage.abilities.condition.common.MyTurnBeforeAttackersDeclaredCondition;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.effects.common.discard.DiscardTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.target.common.TargetOpponent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class CunningAdvisor extends CardImpl {
+
+ public CunningAdvisor(UUID ownerId) {
+ super(ownerId, 72, "Cunning Advisor", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{3}{B}");
+ this.expansionSetCode = "PTK";
+ this.subtype.add("Human");
+ this.subtype.add("Advisor");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // {tap}: Target opponent discards a card. Activate this ability only during your turn, before attackers are declared.
+ Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
+ new DiscardTargetEffect(1), new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.getInstance());
+ ability.addTarget(new TargetOpponent());
+ this.addAbility(ability);
+ }
+
+ public CunningAdvisor(final CunningAdvisor card) {
+ super(card);
+ }
+
+ @Override
+ public CunningAdvisor copy() {
+ return new CunningAdvisor(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/portalthreekingdoms/FireBowman.java b/Mage.Sets/src/mage/sets/portalthreekingdoms/FireBowman.java
new file mode 100644
index 00000000000..42298a02dfd
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/portalthreekingdoms/FireBowman.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.portalthreekingdoms;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.ActivateIfConditionActivatedAbility;
+import mage.abilities.condition.common.MyTurnBeforeAttackersDeclaredCondition;
+import mage.abilities.costs.common.SacrificeSourceCost;
+import mage.abilities.effects.common.DamageTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.target.common.TargetCreatureOrPlayer;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class FireBowman extends CardImpl {
+
+ public FireBowman(UUID ownerId) {
+ super(ownerId, 112, "Fire Bowman", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{R}");
+ this.expansionSetCode = "PTK";
+ this.subtype.add("Human");
+ this.subtype.add("Soldier");
+ this.subtype.add("Archer");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // Sacrifice Fire Bowman: Fire Bowman deals 1 damage to target creature or player. Activate this ability only during your turn, before attackers are declared.
+ Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
+ new DamageTargetEffect(1), new SacrificeSourceCost(), MyTurnBeforeAttackersDeclaredCondition.getInstance());
+ ability.addTarget(new TargetCreatureOrPlayer());
+ this.addAbility(ability);
+ }
+
+ public FireBowman(final FireBowman card) {
+ super(card);
+ }
+
+ @Override
+ public FireBowman copy() {
+ return new FireBowman(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/portalthreekingdoms/LuSuWuAdvisor.java b/Mage.Sets/src/mage/sets/portalthreekingdoms/LuSuWuAdvisor.java
new file mode 100644
index 00000000000..5d236418c4b
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/portalthreekingdoms/LuSuWuAdvisor.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.portalthreekingdoms;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.ActivateIfConditionActivatedAbility;
+import mage.abilities.condition.common.MyTurnBeforeAttackersDeclaredCondition;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class LuSuWuAdvisor extends CardImpl {
+
+ public LuSuWuAdvisor(UUID ownerId) {
+ super(ownerId, 47, "Lu Su, Wu Advisor", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{3}{U}{U}");
+ this.expansionSetCode = "PTK";
+ this.supertype.add("Legendary");
+ this.subtype.add("Human");
+ this.subtype.add("Advisor");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(2);
+
+ // {tap}: Draw a card. Activate this ability only during your turn, before attackers are declared.
+ Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
+ new DrawCardSourceControllerEffect(1), new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.getInstance());
+ this.addAbility(ability);
+ }
+
+ public LuSuWuAdvisor(final LuSuWuAdvisor card) {
+ super(card);
+ }
+
+ @Override
+ public LuSuWuAdvisor copy() {
+ return new LuSuWuAdvisor(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/portalthreekingdoms/PangTongYoungPhoenix.java b/Mage.Sets/src/mage/sets/portalthreekingdoms/PangTongYoungPhoenix.java
new file mode 100644
index 00000000000..71a23772ff1
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/portalthreekingdoms/PangTongYoungPhoenix.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.portalthreekingdoms;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.ActivateIfConditionActivatedAbility;
+import mage.abilities.condition.common.MyTurnBeforeAttackersDeclaredCondition;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.effects.common.continuous.BoostTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class PangTongYoungPhoenix extends CardImpl {
+
+ public PangTongYoungPhoenix(UUID ownerId) {
+ super(ownerId, 14, "Pang Tong, 'Young Phoenix'", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{1}{W}{W}");
+ this.expansionSetCode = "PTK";
+ this.supertype.add("Legendary");
+ this.subtype.add("Human");
+ this.subtype.add("Advisor");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(2);
+
+ // {tap}: Target creature gets +0/+2 until end of turn. Activate this ability only during your turn, before attackers are declared.
+ Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
+ new BoostTargetEffect(0, 2, Duration.EndOfTurn), new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.getInstance());
+ ability.addTarget(new TargetCreaturePermanent());
+ this.addAbility(ability);
+ }
+
+ public PangTongYoungPhoenix(final PangTongYoungPhoenix card) {
+ super(card);
+ }
+
+ @Override
+ public PangTongYoungPhoenix copy() {
+ return new PangTongYoungPhoenix(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/portalthreekingdoms/ShuFarmer.java b/Mage.Sets/src/mage/sets/portalthreekingdoms/ShuFarmer.java
new file mode 100644
index 00000000000..3beb29a9411
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/portalthreekingdoms/ShuFarmer.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.portalthreekingdoms;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.ActivateIfConditionActivatedAbility;
+import mage.abilities.condition.common.MyTurnBeforeAttackersDeclaredCondition;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.effects.common.GainLifeEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class ShuFarmer extends CardImpl {
+
+ public ShuFarmer(UUID ownerId) {
+ super(ownerId, 23, "Shu Farmer", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{1}{W}");
+ this.expansionSetCode = "PTK";
+ this.subtype.add("Human");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // {tap}: You gain 1 life. Activate this ability only during your turn, before attackers are declared.
+ Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
+ new GainLifeEffect(1), new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.getInstance());
+ this.addAbility(ability);
+ }
+
+ public ShuFarmer(final ShuFarmer card) {
+ super(card);
+ }
+
+ @Override
+ public ShuFarmer copy() {
+ return new ShuFarmer(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/portalthreekingdoms/StoneCatapult.java b/Mage.Sets/src/mage/sets/portalthreekingdoms/StoneCatapult.java
new file mode 100644
index 00000000000..c1ccdb1ac02
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/portalthreekingdoms/StoneCatapult.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.portalthreekingdoms;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.ObjectColor;
+import mage.abilities.Ability;
+import mage.abilities.common.ActivateIfConditionActivatedAbility;
+import mage.abilities.condition.common.MyTurnBeforeAttackersDeclaredCondition;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.effects.common.DestroyTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.Predicates;
+import mage.filter.predicate.mageobject.ColorPredicate;
+import mage.filter.predicate.permanent.TappedPredicate;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class StoneCatapult extends CardImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped nonblack creature");
+
+ static {
+ filter.add(new TappedPredicate());
+ filter.add(Predicates.not(new ColorPredicate(ObjectColor.BLACK)));
+ }
+
+ public StoneCatapult(UUID ownerId) {
+ super(ownerId, 84, "Stone Catapult", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{4}{B}");
+ this.expansionSetCode = "PTK";
+ this.subtype.add("Human");
+ this.subtype.add("Soldier");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(2);
+
+ // {tap}: Destroy target tapped nonblack creature. Activate this ability only during your turn, before attackers are declared.
+ Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
+ new DestroyTargetEffect(), new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.getInstance());
+ ability.addTarget(new TargetCreaturePermanent(filter));
+ this.addAbility(ability);
+ }
+
+ public StoneCatapult(final StoneCatapult card) {
+ super(card);
+ }
+
+ @Override
+ public StoneCatapult copy() {
+ return new StoneCatapult(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/portalthreekingdoms/WuLongbowman.java b/Mage.Sets/src/mage/sets/portalthreekingdoms/WuLongbowman.java
new file mode 100644
index 00000000000..f92d5a903fa
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/portalthreekingdoms/WuLongbowman.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.portalthreekingdoms;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.ActivateIfConditionActivatedAbility;
+import mage.abilities.condition.common.MyTurnBeforeAttackersDeclaredCondition;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.effects.common.DamageTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.target.common.TargetCreatureOrPlayer;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class WuLongbowman extends CardImpl {
+
+ public WuLongbowman(UUID ownerId) {
+ super(ownerId, 61, "Wu Longbowman", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{2}{U}");
+ this.expansionSetCode = "PTK";
+ this.subtype.add("Human");
+ this.subtype.add("Soldier");
+ this.subtype.add("Archer");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // {tap}: Wu Longbowman deals 1 damage to target creature or player. Activate this ability only during your turn, before attackers are declared.
+ Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
+ new DamageTargetEffect(1), new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.getInstance());
+ ability.addTarget(new TargetCreatureOrPlayer());
+ this.addAbility(ability);
+ }
+
+ public WuLongbowman(final WuLongbowman card) {
+ super(card);
+ }
+
+ @Override
+ public WuLongbowman copy() {
+ return new WuLongbowman(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/portalthreekingdoms/XiahouDunTheOneEyed.java b/Mage.Sets/src/mage/sets/portalthreekingdoms/XiahouDunTheOneEyed.java
new file mode 100644
index 00000000000..9f0f143624f
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/portalthreekingdoms/XiahouDunTheOneEyed.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.portalthreekingdoms;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.ObjectColor;
+import mage.abilities.Ability;
+import mage.abilities.common.ActivateIfConditionActivatedAbility;
+import mage.abilities.condition.common.MyTurnBeforeAttackersDeclaredCondition;
+import mage.abilities.costs.common.SacrificeSourceCost;
+import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.FilterCard;
+import mage.filter.predicate.mageobject.ColorPredicate;
+import mage.target.common.TargetCardInYourGraveyard;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class XiahouDunTheOneEyed extends CardImpl {
+
+ private static final FilterCard filter = new FilterCard("a black card");
+
+ static {
+ filter.add(new ColorPredicate(ObjectColor.BLACK));
+ }
+
+ public XiahouDunTheOneEyed(UUID ownerId) {
+ super(ownerId, 92, "Xiahou Dun, the One-Eyed", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{2}{B}{B}");
+ this.expansionSetCode = "PTK";
+ this.supertype.add("Legendary");
+ this.subtype.add("Human");
+ this.subtype.add("Soldier");
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(2);
+
+ // Horsemanship
+ // Sacrifice Xiahou Dun, the One-Eyed: Return target black card from your graveyard to your hand. Activate this ability only during your turn, before attackers are declared.
+ Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
+ new ReturnFromGraveyardToHandTargetEffect(), new SacrificeSourceCost(), MyTurnBeforeAttackersDeclaredCondition.getInstance());
+ ability.addTarget(new TargetCardInYourGraveyard(filter));
+ this.addAbility(ability);
+ }
+
+ public XiahouDunTheOneEyed(final XiahouDunTheOneEyed card) {
+ super(card);
+ }
+
+ @Override
+ public XiahouDunTheOneEyed copy() {
+ return new XiahouDunTheOneEyed(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/portalthreekingdoms/XunYuWeiAdvisor.java b/Mage.Sets/src/mage/sets/portalthreekingdoms/XunYuWeiAdvisor.java
new file mode 100644
index 00000000000..f56ccedfbaa
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/portalthreekingdoms/XunYuWeiAdvisor.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.portalthreekingdoms;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.ActivateIfConditionActivatedAbility;
+import mage.abilities.condition.common.MyTurnBeforeAttackersDeclaredCondition;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.effects.common.continuous.BoostTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.target.common.TargetControlledCreaturePermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class XunYuWeiAdvisor extends CardImpl {
+
+ public XunYuWeiAdvisor(UUID ownerId) {
+ super(ownerId, 93, "Xun Yu, Wei Advisor", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{1}{B}{B}");
+ this.expansionSetCode = "PTK";
+ this.supertype.add("Legendary");
+ this.subtype.add("Human");
+ this.subtype.add("Advisor");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // {tap}: Target creature you control gets +2/+0 until end of turn. Activate this ability only during your turn, before attackers are declared.
+ Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
+ new BoostTargetEffect(2, 0, Duration.EndOfTurn), new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.getInstance());
+ ability.addTarget(new TargetControlledCreaturePermanent());
+ this.addAbility(ability);
+ }
+
+ public XunYuWeiAdvisor(final XunYuWeiAdvisor card) {
+ super(card);
+ }
+
+ @Override
+ public XunYuWeiAdvisor copy() {
+ return new XunYuWeiAdvisor(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/portalthreekingdoms/ZhugeJinWuStrategist.java b/Mage.Sets/src/mage/sets/portalthreekingdoms/ZhugeJinWuStrategist.java
new file mode 100644
index 00000000000..ff0c1da3e3a
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/portalthreekingdoms/ZhugeJinWuStrategist.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.portalthreekingdoms;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.ActivateIfConditionActivatedAbility;
+import mage.abilities.condition.common.MyTurnBeforeAttackersDeclaredCondition;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.effects.common.combat.CantBeBlockedTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class ZhugeJinWuStrategist extends CardImpl {
+
+ public ZhugeJinWuStrategist(UUID ownerId) {
+ super(ownerId, 66, "Zhuge Jin, Wu Strategist", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{1}{U}{U}");
+ this.expansionSetCode = "PTK";
+ this.supertype.add("Legendary");
+ this.subtype.add("Human");
+ this.subtype.add("Advisor");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // {tap}: Target creature can't be blocked this turn. Activate this ability only during your turn, before attackers are declared.
+ Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
+ new CantBeBlockedTargetEffect(Duration.EndOfTurn), new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.getInstance());
+ ability.addTarget(new TargetCreaturePermanent());
+ this.addAbility(ability);
+ }
+
+ public ZhugeJinWuStrategist(final ZhugeJinWuStrategist card) {
+ super(card);
+ }
+
+ @Override
+ public ZhugeJinWuStrategist copy() {
+ return new ZhugeJinWuStrategist(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/vintagemasters/NorwoodPriestess.java b/Mage.Sets/src/mage/sets/vintagemasters/NorwoodPriestess.java
new file mode 100644
index 00000000000..0c0e924ea3d
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/vintagemasters/NorwoodPriestess.java
@@ -0,0 +1,121 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.vintagemasters;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.ObjectColor;
+import mage.abilities.Ability;
+import mage.abilities.common.ActivateIfConditionActivatedAbility;
+import mage.abilities.condition.common.MyTurnBeforeAttackersDeclaredCondition;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.effects.OneShotEffect;
+import mage.cards.Card;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.common.FilterCreatureCard;
+import mage.filter.predicate.mageobject.ColorPredicate;
+import mage.game.Game;
+import mage.players.Player;
+import mage.target.common.TargetCardInHand;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class NorwoodPriestess extends CardImpl {
+
+ public NorwoodPriestess(UUID ownerId) {
+ super(ownerId, 221, "Norwood Priestess", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{2}{G}{G}");
+ this.expansionSetCode = "VMA";
+ this.subtype.add("Elf");
+ this.subtype.add("Druid");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // {tap}: You may put a green creature card from your hand onto the battlefield. Activate this ability only during your turn, before attackers are declared.
+ Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
+ new NorwoodPriestessEffect(), new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.getInstance());
+ this.addAbility(ability);
+ }
+
+ public NorwoodPriestess(final NorwoodPriestess card) {
+ super(card);
+ }
+
+ @Override
+ public NorwoodPriestess copy() {
+ return new NorwoodPriestess(this);
+ }
+}
+
+class NorwoodPriestessEffect extends OneShotEffect {
+
+ private static final String choiceText = "Put a green creature card from your hand onto the battlefield?";
+
+ private static final FilterCreatureCard filter = new FilterCreatureCard("a green creature card");
+
+ static {
+ filter.add(new ColorPredicate(ObjectColor.GREEN));
+ }
+
+ public NorwoodPriestessEffect() {
+ super(Outcome.PutCreatureInPlay);
+ this.staticText = "You may put a green creature card from your hand onto the battlefield";
+ }
+
+ public NorwoodPriestessEffect(final NorwoodPriestessEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public NorwoodPriestessEffect copy() {
+ return new NorwoodPriestessEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player player = game.getPlayer(source.getControllerId());
+ if (player == null || !player.chooseUse(Outcome.PutCreatureInPlay, choiceText, game)) {
+ return false;
+ }
+
+ TargetCardInHand target = new TargetCardInHand(filter);
+ if (player.choose(Outcome.PutCreatureInPlay, target, source.getSourceId(), game)) {
+ Card card = game.getCard(target.getFirstTarget());
+ if (card != null) {
+ card.putOntoBattlefield(game, Zone.HAND, source.getSourceId(), source.getControllerId());
+ return true;
+ }
+ }
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/Utils/mtg-cards-data.txt b/Utils/mtg-cards-data.txt
index a023be1a7f2..0d72223d52f 100644
--- a/Utils/mtg-cards-data.txt
+++ b/Utils/mtg-cards-data.txt
@@ -25682,6 +25682,7 @@ Marang River Skeleton|Dragons of Tarkir|108|U|{1}{B}|Creature - Skeleton|1|1|{B}
Sidisi, Undead Vizier|Dragons of Tarkir|120|R|{3}{B}{B}|Legendary Creature - Zombie Naga|4|6|Deathtouch$Exploit (When this creature enters the battlefield, you may sacrifice a creature.)$When Sidisi, Undead Vizier exploits a creature, you may search your library for a card, put it into your hand, then shuffle your library.|
Silumgar Assassin|Dragons of Tarkir|121|R|{1}{B}|Creature - Human Assassin|2|1|Creatures with power greater than Silumgar Assassin's power can't block it.$Megamorph {2}{B} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up at any time for its megamorph cost and put a +1/+1 counter on it.)$When Silumgar Assassin is turned face up, destroy target creature with power 3 or less an opponent controls.|
Silumgar Butcher|Dragons of Tarkir|122|C|{4}{B}|Creature - Zombie Djinn|3|3|Exploit (When this creature enters the battlefield, you may sacrifice a creature.)$When Silumgar Butcher exploits a creature, target creature gets -3/-3 until end of turn.|
+Assault Force|Dragons of Tarkir|133|M|{4}{R}{R}|Sorcery||Target any number of creatures. For each creature targeted this way, destroy it. Its controller puts a 4/4 red Dragon token with flying onto the battlefield.|
Dragon Fodder|Dragons of Tarkir|135|C|{1}{R}|Sorcery|||Put two 1/1 red Goblin creature tokens onto the battlefield.|
Dragon Tempest|Dragons of Tarkir|136|R|{1}{R}|Enchantment|||Whenever a creature with flying enters the battlefield under your control, it gains haste until the end of turn.$Whenever a Dragon enters the battlefield under your control, it deals X damage to target creature or player, where X is the number of Dragons you control.|
Dragonlord's Servant|Dragons of Tarkir|138|U|{1}{R}|Creature - Goblin Shaman|1|3|Dragon spells you cast cost {1} less to cast.|
@@ -25692,6 +25693,7 @@ Thunderbreak Regent|Dragons of Tarkir|162|R|{2}{R}{R}|Creature - Dragon|4|4|Flyi
Zurgo Bellstriker|Dragons of Tarkir|169|R|{R}|Legendary Creature - Orc Warrior|2|2|Zurgo Bellstriker can't block creatures with power 2 or greater.$Dash {1}{R} You may cast this creature for its dash cost. If you do, it gains haste, and it's returned to its owner's hand at the beginning of the next end step.)|
Aerie Bowmasters|Dragons of Tarkir|170|C|{2}|{G}{G}|Creature - Hound Archer|Reach (This creature can block creatures with flying.)$Megamorph {5}{G} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up at any time for its megamorph cost and put a +1/+1 counter on it.)|
Deathmist Raptor|Dragons of Tarkir|180|M|{1}{G}{G}|Creature - Lizard Beast|3|3|Deathtouch$Whenever another permanent you control is turned face up, you may return Deathmist Raptor from your graveyard to the battlefield face up or face down.$Megamorph {4}{G} (You may cast this card face down for {3}. Turn it face up any time for its megamorph cost and put a +1/+1 counter on it.)|
+Den Protector|Dragons of Tarkir|181|R|{1}{G}|Creature - Human Warrior|2|1|Creatures with power less than Den Protector's power can't block it.$Megamorph {1}{G} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its megamorph cost and put a +1/+1 counter on it.)|
Foe-Razer Regent|Dragons of Tarkir|187|R|{5}{G}{G}|Creature - Dragon|4|5|Flying$When Foe-Razer Regent enters the battlefield, you may have it fight target creature you don't control.$Whenever a creature you control fights, put two +1/+1 counters on it at the beginning of the next end step.|
Salt Road Ambushers|Dragons of Tarkir|198|U|{3}{G}|Creature - Hound Warrior|3|3|Whenever another permanent you control is turned face up, if it's a creature, put two +1/+1 counters on it.$Megamorph {3}{G}{G} You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its megamorph cost and put a +1/+1 counter on it.)|
Scaleguard Sentinels|Dragons of Tarkir|201|U|{G}{G}|Creature - Human Soldier|2|3|As an additional cost to cast Scaleguard Sentinels, you may reveal a Dragon card from your hand.$Scaleguard Sentinels enters the battlefield with a +1/+1 counter on it if you revealed a Dragon card or controlled a Dragon as you cast Scaleguard Sentinels.|