- Fixed a bug that caused copies of split card spells (e.g. from Isochron Scepter) not to go on stack correctly. Please revise, I'm not sure if there may be other cases like that which are not yet accounted for.

This commit is contained in:
Agetian
2013-03-05 13:30:21 +00:00
parent 1d7e80d675
commit d6f16061ed

View File

@@ -368,24 +368,7 @@ public class GameActionPlay {
final Card source = sa.getSourceCard(); final Card source = sa.getSourceCard();
// Split card support // Split card support
if (source.getRules() != null) { setSplitCardState(source, sa);
if (source.getRules().getSplitType() == CardSplitType.Split) {
List<SpellAbility> leftSplitAbilities = source.getState(CardCharacteristicName.LeftSplit).getSpellAbility();
List<SpellAbility> rightSplitAbilities = source.getState(CardCharacteristicName.RightSplit).getSpellAbility();
for (SpellAbility a : leftSplitAbilities) {
if (sa == a) {
source.setState(CardCharacteristicName.LeftSplit);
break;
}
}
for (SpellAbility a : rightSplitAbilities) {
if (sa == a) {
source.setState(CardCharacteristicName.RightSplit);
break;
}
}
}
}
if (sa.getApi() == ApiType.Charm && !sa.isWrapper()) { if (sa.getApi() == ApiType.Charm && !sa.isWrapper()) {
CharmEffect.makeChoices(sa); CharmEffect.makeChoices(sa);
@@ -555,4 +538,26 @@ public class GameActionPlay {
return usableColors; return usableColors;
} }
private void setSplitCardState(final Card source, SpellAbility sa) {
// Split card support
if (source.getRules() != null) {
if (source.getRules().getSplitType() == CardSplitType.Split) {
List<SpellAbility> leftSplitAbilities = source.getState(CardCharacteristicName.LeftSplit).getSpellAbility();
List<SpellAbility> rightSplitAbilities = source.getState(CardCharacteristicName.RightSplit).getSpellAbility();
for (SpellAbility a : leftSplitAbilities) {
if (sa == a || sa.getDescription().equals(String.format("%s (without paying its mana cost)", a.getDescription()))) {
source.setState(CardCharacteristicName.LeftSplit);
break;
}
}
for (SpellAbility a : rightSplitAbilities) {
if (sa == a || sa.getDescription().equals(String.format("%s (without paying its mana cost)", a.getDescription()))) {
source.setState(CardCharacteristicName.RightSplit);
break;
}
}
}
}
}
} }