diff --git a/.gitattributes b/.gitattributes index bee9d3aed3e..dbc88486f5b 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1614,6 +1614,8 @@ res/cardsfolder/c/cessation.txt svneol=native#text/plain res/cardsfolder/c/ceta_disciple.txt svneol=native#text/plain res/cardsfolder/c/ceta_sanctuary.txt svneol=native#text/plain res/cardsfolder/c/cetavolver.txt -text +res/cardsfolder/c/chain_lightning.txt -text +res/cardsfolder/c/chain_of_vapor.txt -text res/cardsfolder/c/chain_reaction.txt svneol=native#text/plain res/cardsfolder/c/chainbreaker.txt svneol=native#text/plain res/cardsfolder/c/chained_throatseeker.txt svneol=native#text/plain @@ -11697,6 +11699,7 @@ res/cardsfolder/v/viscerid_drone.txt -text res/cardsfolder/v/viscid_lemures.txt svneol=native#text/plain res/cardsfolder/v/viseling.txt svneol=native#text/plain res/cardsfolder/v/vish_kal_blood_arbiter.txt -text +res/cardsfolder/v/vision_charm.txt -text res/cardsfolder/v/vision_skeins.txt svneol=native#text/plain res/cardsfolder/v/visions.txt svneol=native#text/plain res/cardsfolder/v/visions_of_beyond.txt svneol=native#text/plain diff --git a/res/cardsfolder/c/chain_lightning.txt b/res/cardsfolder/c/chain_lightning.txt new file mode 100644 index 00000000000..bdce8fb61b0 --- /dev/null +++ b/res/cardsfolder/c/chain_lightning.txt @@ -0,0 +1,10 @@ +Name:Chain Lightning +ManaCost:R +Types:Sorcery +A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SubAbility$ DBCopy1 | SpellDescription$ CARDNAME deals 3 damage to target creature or player. Then that player or that creature's controller may pay R R. If the player does, he or she may copy this spell and may choose a new target for that copy. +SVar:DBCopy1:DB$ Play | Defined$ Self | Controller$ TargetedController | WithoutManaCost$ True | CopyCard$ True | UnlessPayer$ TargetedController | UnlessCost$ R R | UnlessSwitched$ True | ConditionDefined$ Targeted | ConditionPresent$ Creature | ConditionCompare$ GE1 | SubAbility$ DBCopy2 | StackDescription$ None +SVar:DBCopy2:DB$ Play | Defined$ Self | Controller$ Targeted | WithoutManaCost$ True | CopyCard$ True | UnlessPayer$ Targeted | UnlessCost$ R R | UnlessSwitched$ True | ConditionDefined$ Targeted | ConditionPresent$ Creature | ConditionCompare$ EQ0 | StackDescription$ None +SVar:Picture:http://www.wizards.com/global/images/magic/general/chain_lightning.jpg +Oracle:Chain Lightning deals 3 damage to target creature or player. Then that player or that creature's controller may pay {R}{R}. If the player does, he or she may copy this spell and may choose a new target for that copy. +SetInfo:LEG Common +SetInfo:PD2 Common \ No newline at end of file diff --git a/res/cardsfolder/c/chain_of_vapor.txt b/res/cardsfolder/c/chain_of_vapor.txt new file mode 100644 index 00000000000..56a2de1c3c9 --- /dev/null +++ b/res/cardsfolder/c/chain_of_vapor.txt @@ -0,0 +1,8 @@ +Name:Chain of Vapor +ManaCost:U +Types:Instant +A:SP$ ChangeZone | Cost$ U | ValidTgts$ Permanent.nonLand | TgtPrompt$ Select target nonland permanent | Origin$ Battlefield | Destination$ Hand | SubAbility$ DBCopy | StackDescription$ SpellDescription | SpellDescription$ Return target nonland permanent to its owner's hand. Then that permanent's controller may sacrifice a land. If the player does, he or she may copy this spell and may choose a new target for that copy. +SVar:DBCopy:DB$ Play | Defined$ Self | Controller$ TargetedController | WithoutManaCost$ True | CopyCard$ True | UnlessPayer$ TargetedController | UnlessCost$ Sac<1/Land> | UnlessSwitched$ True | StackDescription$ None +SVar:Picture:http://www.wizards.com/global/images/magic/general/chain_of_vapor.jpg +Oracle:Return target nonland permanent to its owner's hand. Then that permanent's controller may sacrifice a land. If the player does, he or she may copy this spell and may choose a new target for that copy. +SetInfo:ONS Uncommon \ No newline at end of file diff --git a/res/cardsfolder/v/vision_charm.txt b/res/cardsfolder/v/vision_charm.txt new file mode 100644 index 00000000000..9bcef7c8368 --- /dev/null +++ b/res/cardsfolder/v/vision_charm.txt @@ -0,0 +1,16 @@ +Name:Vision Charm +ManaCost:U +Types:Instant +Text:no text +A:SP$ Charm | Cost$ U | Choices$ MillOpp,ChangeType,PhaseArtifact | CharmNum$ 1 | SpellDescription$ Choose one - Target player puts the top four cards of his or her library into his or her graveyard; or choose a land type and a basic land type, and each land of the first chosen type becomes the second chosen type until end of turn; or target artifact phases out. (While it's phased out, it's treated as though it doesn't exist. It phases in before its controller untaps during his or her next untap step.) +SVar:MillOpp:DB$ Mill | NumCards$ 4 | ValidTgts$ Player | TgtPrompt$ Choose a player | SpellDescription$ Target player puts the top four cards of his or her library into his or her graveyard. +SVar:ChangeType:DB$ ChooseType | Defined$ You | Type$ Land | SubAbility$ RemFirstLand | SpellDescription$ Choose a land type and a basic land type, and each land of the first chosen type becomes the second chosen type until end of turn. +SVar:RemFirstLand:DB$ PumpAll | ValidCards$ Land.ChosenType | RememberAllPumped$ True | SubAbility$ ChooseType2 +SVar:ChooseType2:DB$ ChooseType | Defined$ You | Type$ Basic Land | AILogic$ MostNeededType | SubAbility$ AnimateFirst +SVar:AnimateFirst:DB$ AnimateAll | ValidCards$ Land.IsRemembered | Types$ ChosenType | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True | RemoveAllAbilities$ True | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:PhaseArtifact:DB$ Phases | ValidTgts$ Artifact | TgtPrompt$ Choose a artifact | SpellDescription$ Target artifact phases out. +SVar:RemAIDeck:True +SVar:Picture:http://www.wizards.com/global/images/magic/general/vision_charm.jpg +Oracle:Choose one - Target player puts the top four cards of his or her library into his or her graveyard; or choose a land type and a basic land type, and each land of the first chosen type becomes the second chosen type until end of turn; or target artifact phases out. (While it's phased out, it's treated as though it doesn't exist. It phases in before its controller untaps during his or her next untap step.) +SetInfo:VIS Common \ No newline at end of file diff --git a/src/main/java/forge/Card.java b/src/main/java/forge/Card.java index a2d05b771d8..3cc268f2b89 100644 --- a/src/main/java/forge/Card.java +++ b/src/main/java/forge/Card.java @@ -9171,7 +9171,7 @@ public class Card extends GameEntity implements Comparable { int requestedCMC = 0; - if (getRules().getSplitType() == CardSplitType.Split) { + if (getRules() != null && getRules().getSplitType() == CardSplitType.Split) { switch(mode) { case CurrentSideCMC: // TODO: test if this returns combined CMC for the full face (then get rid of CombinedCMC mode?) diff --git a/src/main/java/forge/card/ability/AbilityUtils.java b/src/main/java/forge/card/ability/AbilityUtils.java index 85ffcff32c3..09c3269fd9a 100644 --- a/src/main/java/forge/card/ability/AbilityUtils.java +++ b/src/main/java/forge/card/ability/AbilityUtils.java @@ -1201,7 +1201,9 @@ public class AbilityUtils { && ComputerUtilCost.checkDamageCost(payer, ability.getPayCosts(), source, 4) && ComputerUtilCost.checkDiscardCost(payer, ability.getPayCosts(), source) && (!source.getName().equals("Tyrannize") || payer.getCardsIn(ZoneType.Hand).size() > 2) - && (!source.getName().equals("Breaking Point") || payer.getCreaturesInPlay().size() > 1)) { + && (!source.getName().equals("Breaking Point") || payer.getCreaturesInPlay().size() > 1) + && (!source.getName().equals("Chain of Vapor") + || (payer.getOpponent().getCreaturesInPlay().size() > 0 && payer.getLandsInPlay().size() > 3))) { // AI was crashing because the blank ability used to pay costs // Didn't have any of the data on the original SA to pay dependant costs return true;