mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 10:18:01 +00:00
- 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:
@@ -366,26 +366,9 @@ public class GameActionPlay {
|
||||
sa.setActivatingPlayer(activator);
|
||||
|
||||
final Card source = sa.getSourceCard();
|
||||
|
||||
|
||||
// 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) {
|
||||
source.setState(CardCharacteristicName.LeftSplit);
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (SpellAbility a : rightSplitAbilities) {
|
||||
if (sa == a) {
|
||||
source.setState(CardCharacteristicName.RightSplit);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
setSplitCardState(source, sa);
|
||||
|
||||
if (sa.getApi() == ApiType.Charm && !sa.isWrapper()) {
|
||||
CharmEffect.makeChoices(sa);
|
||||
@@ -555,4 +538,26 @@ public class GameActionPlay {
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user