mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 18:58:00 +00:00
Merge branch 'AftermathFix' into 'master'
CardFactory: fixed keywords for SplitCards See merge request core-developers/forge!239
This commit is contained in:
@@ -295,9 +295,10 @@ public class CardFactory {
|
||||
sa.setRightSplit();
|
||||
}
|
||||
}
|
||||
CardFactoryUtil.setupKeywordedAbilities(card);
|
||||
final CardState original = card.getState(CardStateName.Original);
|
||||
original.addNonManaAbilities(card.getCurrentState().getNonManaAbilities());
|
||||
original.addIntrinsicKeywords(card.getCurrentState().getIntrinsicKeywordStrings(), false); // Copy 'Fuse' to original side
|
||||
original.addIntrinsicKeywords(card.getCurrentState().getIntrinsicKeywords()); // Copy 'Fuse' to original side
|
||||
original.getSVars().putAll(card.getCurrentState().getSVars()); // Unfortunately need to copy these to (Effect looks for sVars on execute)
|
||||
} else if (state != CardStateName.Original){
|
||||
CardFactoryUtil.setupKeywordedAbilities(card);
|
||||
@@ -305,6 +306,10 @@ public class CardFactory {
|
||||
}
|
||||
|
||||
card.setState(CardStateName.Original, false);
|
||||
// need to update keyword cache for original spell
|
||||
if (card.isSplitCard()) {
|
||||
card.updateKeywordsCache(card.getCurrentState());
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// ************** Link to different CardFactories *******************
|
||||
|
||||
@@ -2999,7 +2999,7 @@ public class CardFactoryUtil {
|
||||
public static void addReplacementEffect(final KeywordInterface inst, final Card card, final boolean intrinsic) {
|
||||
|
||||
String keyword = inst.getOriginal();
|
||||
if (keyword.equals("Aftermath")) {
|
||||
if (keyword.equals("Aftermath") && card.getCurrentStateName().equals(CardStateName.RightSplit)) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("Event$ Moved | ValidCard$ Card.Self | Origin$ Stack | ExcludeDestination$ Exile ");
|
||||
sb.append("| ValidStackSa$ Spell.Aftermath | Description$ Aftermath");
|
||||
@@ -3021,8 +3021,6 @@ public class CardFactoryUtil {
|
||||
|
||||
re.setOverridingAbility(saExile);
|
||||
|
||||
// Aftermath only on Rightsplit
|
||||
// doesn't make a copy with it
|
||||
inst.addReplacement(re);
|
||||
} else if (keyword.startsWith("Amplify")) {
|
||||
final String[] ampString = keyword.split(":");
|
||||
@@ -3493,11 +3491,11 @@ public class CardFactoryUtil {
|
||||
inst.addSpellAbility(newSA);
|
||||
|
||||
}
|
||||
} else if (keyword.equals("Aftermath")) {
|
||||
} else if (keyword.equals("Aftermath") && card.getCurrentStateName().equals(CardStateName.RightSplit)) {
|
||||
// Aftermath does modify existing SA, and does not add new one
|
||||
|
||||
// only target RightSplit of it
|
||||
final SpellAbility origSA = card.getState(CardStateName.RightSplit).getFirstAbility();
|
||||
final SpellAbility origSA = card.getFirstSpellAbility();
|
||||
origSA.setAftermath(true);
|
||||
origSA.getRestrictions().setZone(ZoneType.Graveyard);
|
||||
// The Exile part is done by the System itself
|
||||
@@ -3742,9 +3740,9 @@ public class CardFactoryUtil {
|
||||
inst.addSpellAbility(sa);
|
||||
|
||||
|
||||
} else if (keyword.startsWith("Fuse")) {
|
||||
} else if (keyword.startsWith("Fuse") && card.getCurrentStateName().equals(CardStateName.Original)) {
|
||||
final SpellAbility sa = AbilityFactory.buildFusedAbility(card);
|
||||
card.getState(CardStateName.Original).addNonManaAbility(sa);
|
||||
card.addSpellAbility(sa);
|
||||
|
||||
sa.setTemporary(!intrinsic);
|
||||
inst.addSpellAbility(sa);
|
||||
|
||||
@@ -164,9 +164,6 @@ public class CardState extends GameObject {
|
||||
public final Collection<KeywordInterface> getIntrinsicKeywords() {
|
||||
return intrinsicKeywords.getValues();
|
||||
}
|
||||
public final Iterable<String> getIntrinsicKeywordStrings() {
|
||||
return intrinsicKeywords;
|
||||
}
|
||||
public final boolean hasIntrinsicKeyword(String k) {
|
||||
return intrinsicKeywords.contains(k);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user