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