diff --git a/.gitattributes b/.gitattributes index 5bf5eea5093..2962623c8ac 100644 --- a/.gitattributes +++ b/.gitattributes @@ -960,6 +960,7 @@ res/cardsfolder/b/blood_rites.txt svneol=native#text/plain res/cardsfolder/b/blood_seeker.txt svneol=native#text/plain res/cardsfolder/b/blood_speaker.txt svneol=native#text/plain res/cardsfolder/b/blood_tithe.txt svneol=native#text/plain +res/cardsfolder/b/blood_tribute.txt -text res/cardsfolder/b/blood_tyrant.txt svneol=native#text/plain res/cardsfolder/b/blood_vassal.txt svneol=native#text/plain res/cardsfolder/b/bloodbond_march.txt -text diff --git a/res/cardsfolder/b/blood_tribute.txt b/res/cardsfolder/b/blood_tribute.txt new file mode 100644 index 00000000000..b70b45466ee --- /dev/null +++ b/res/cardsfolder/b/blood_tribute.txt @@ -0,0 +1,13 @@ +Name:Blood Tribute +ManaCost:4 B B +Types:Sorcery +Text:no text +K:Kicker tapXType<1/Vampire> +A:SP$ LoseLife | Cost$ 4 B B | ValidTgts$ Opponent | LifeAmount$ X | References$ X | SubAbility$ DBGainLife | SpellDescription$ Target opponent loses half his or her life, rounded up. If CARDNAME was kicked, you gain life equal to the life lost this way. +SVar:DBGainLife:DB$GainLife | Defined$ You | LifeAmount$ X | References$ X | Condition$ Kicked +SVar:X:Count$OppLifeTotal/HalfUp +SVar:Rarity:Rare +SVar:Picture:http://www.wizards.com/global/images/magic/general/blood_tribute.jpg +SetInfo:ZEN|Rare|http://magiccards.info/scans/en/zen/81.jpg +Oracle:Kicker-Tap an untapped Vampire you control. (You may tap a Vampire you control in addition to any other costs as you cast this spell.)\nTarget opponent loses half his or her life, rounded up. If Blood Tribute was kicked, you gain life equal to the life lost this way. +End \ No newline at end of file diff --git a/src/main/java/forge/Card.java b/src/main/java/forge/Card.java index 057b37964cf..c07c7f8d42a 100644 --- a/src/main/java/forge/Card.java +++ b/src/main/java/forge/Card.java @@ -894,7 +894,7 @@ public class Card extends GameEntity implements Comparable { /** *

- * Setter for the field xManaCostPaid. + * Setter or the field xManaCostPaid. *

* * @param n @@ -2582,6 +2582,9 @@ public class Card extends GameEntity implements Comparable { } else if (keyword.startsWith("Buyback")) { final Cost cost = new Cost(this, keyword.substring(8), false); sb.append("Buyback " + cost.toSimpleString() + "\r\n"); + } else if (keyword.startsWith("Kicker")) { + final Cost cost = new Cost(this, keyword.substring(7), false); + sb.append("Kicker " + cost.toSimpleString() + "\r\n"); } if (keyword.startsWith("Storm")) { if (sb.toString().contains("Target") || sb.toString().contains("target")) { diff --git a/src/main/java/forge/GameActionUtil.java b/src/main/java/forge/GameActionUtil.java index dd7ed503f6d..bda12c513c2 100644 --- a/src/main/java/forge/GameActionUtil.java +++ b/src/main/java/forge/GameActionUtil.java @@ -1805,7 +1805,8 @@ public final class GameActionUtil { newSA.setBasicSpell(false); newSA.setPayCosts(GameActionUtil.combineCosts(newSA, keyword.substring(7))); newSA.setManaCost(""); - newSA.setDescription(sa.getDescription() + " (" + keyword + ")"); + final Cost cost = new Cost(source, keyword.substring(7), false); + newSA.setDescription(sa.getDescription() + " (Kicker " + cost.toSimpleString() + ")"); ArrayList newoacs = new ArrayList(); newoacs.addAll(sa.getOptionalAdditionalCosts()); newSA.setOptionalAdditionalCosts(newoacs); diff --git a/src/main/java/forge/card/spellability/SpellAbilityCondition.java b/src/main/java/forge/card/spellability/SpellAbilityCondition.java index 88918361a8b..182db34a3d7 100644 --- a/src/main/java/forge/card/spellability/SpellAbilityCondition.java +++ b/src/main/java/forge/card/spellability/SpellAbilityCondition.java @@ -75,6 +75,9 @@ public class SpellAbilityCondition extends SpellAbilityVariables { if (value.equals("Hellbent")) { this.setHellbent(true); } + if (value.equals("Kicked")) { + this.setKicked(true); + } } if (params.containsKey("ConditionZone")) { @@ -180,6 +183,11 @@ public class SpellAbilityCondition extends SpellAbilityVariables { return false; } } + if (this.isKicked()) { + if (!sa.isKicked()) { + return false; + } + } if (this.isSorcerySpeed() && !PhaseHandler.canCastSorcery(activator)) { return false; diff --git a/src/main/java/forge/card/spellability/SpellAbilityVariables.java b/src/main/java/forge/card/spellability/SpellAbilityVariables.java index b1b98eda931..cabc1d98eaf 100644 --- a/src/main/java/forge/card/spellability/SpellAbilityVariables.java +++ b/src/main/java/forge/card/spellability/SpellAbilityVariables.java @@ -133,6 +133,9 @@ public class SpellAbilityVariables { /** The hellbent. */ private boolean hellbent = false; + /** The Kicked. */ + private boolean kicked = false; + /** The prowl. */ private ArrayList prowl = new ArrayList(); @@ -497,6 +500,21 @@ public class SpellAbilityVariables { this.metalcraft = bMetalcraft; } + /** + * @return the kicked + */ + public boolean isKicked() { + return kicked; + } + + /** + * @param kicked0 the kicked to set + */ + public void setKicked(boolean kicked) { + this.kicked = kicked; + } + + /** *

* Setter for the field prowl.