Merge branch 'agadeem' into 'master'

ZNR: Agadeem's Awakening // Agadeem, the Undercrypt

See merge request core-developers/forge!3146
This commit is contained in:
Michael Kamensky
2020-09-17 04:19:26 +00:00
4 changed files with 53 additions and 1 deletions

View File

@@ -347,6 +347,9 @@ public final class AbilityFactory {
if (mapParams.containsKey("TargetsWithDifferentControllers")) { if (mapParams.containsKey("TargetsWithDifferentControllers")) {
abTgt.setDifferentControllers(true); abTgt.setDifferentControllers(true);
} }
if (mapParams.containsKey("TargetsWithDifferentCMC")) {
abTgt.setDifferentCMC(true);
}
if (mapParams.containsKey("DividedAsYouChoose")) { if (mapParams.containsKey("DividedAsYouChoose")) {
abTgt.calculateStillToDivide(mapParams.get("DividedAsYouChoose"), null, null); abTgt.calculateStillToDivide(mapParams.get("DividedAsYouChoose"), null, null);
abTgt.setDividedAsYouChoose(true); abTgt.setDividedAsYouChoose(true);

View File

@@ -62,6 +62,7 @@ public class TargetRestrictions {
private boolean uniqueTargets = false; private boolean uniqueTargets = false;
private boolean singleZone = false; private boolean singleZone = false;
private boolean differentControllers = false; private boolean differentControllers = false;
private boolean differentCMC = false;
private boolean sameController = false; private boolean sameController = false;
private boolean withoutSameCreatureType = false; private boolean withoutSameCreatureType = false;
private boolean withSameCreatureType = false; private boolean withSameCreatureType = false;
@@ -105,6 +106,7 @@ public class TargetRestrictions {
this.uniqueTargets = target.isUniqueTargets(); this.uniqueTargets = target.isUniqueTargets();
this.singleZone = target.isSingleZone(); this.singleZone = target.isSingleZone();
this.differentControllers = target.isDifferentControllers(); this.differentControllers = target.isDifferentControllers();
this.differentCMC = target.isDifferentCMC();
this.sameController = target.isSameController(); this.sameController = target.isSameController();
this.withoutSameCreatureType = target.isWithoutSameCreatureType(); this.withoutSameCreatureType = target.isWithoutSameCreatureType();
this.withSameCreatureType = target.isWithSameCreatureType(); this.withSameCreatureType = target.isWithSameCreatureType();
@@ -675,6 +677,19 @@ public class TargetRestrictions {
this.randomTarget = random; this.randomTarget = random;
} }
/**
* @return the differentCMC
*/
public boolean isDifferentCMC() {
return differentCMC;
}
/**
* @param different the differentCMC to set
*/
public void setDifferentCMC(boolean different) {
this.differentCMC = different;
}
/** /**
* @return the differentControllers * @return the differentControllers
*/ */

View File

@@ -0,0 +1,19 @@
Name:Agadeem's Awakening
ManaCost:X B B B
Types:Sorcery
A:SP$ ChangeZone | Cost$ X B B B | Origin$ Graveyard | Destination$ Battlefield | TargetMin$ 0 | TargetMax$ Y | ValidTgts$ Creature.YouOwn+cmcLEX | TgtPrompt$ Select any number of target creature cards in your graveyard with different converted mana costs X or less | TargetsWithDifferentCMC$ True | References$ X,Y | StackDescription$ {p:You} returns {c:Targeted} from the graveyard to the battlefield. | SpellDescription$ Return from your graveyard to the battlefield any number of target creature cards that each have a different converted mana cost X or less.
SVar:X:Count$xPaid
SVar:Y:Count$ValidGraveyard Creature.YouOwn
AlternateMode:Modal
DeckHas:Ability$Graveyard
Oracle:Return from your graveyard to the battlefield any number of target creature cards that each have a different converted mana cost X or less.
ALTERNATE
Name:Agadeem, the Undercrypt
ManaCost:no cost
Types:Land
K:ETBReplacement:Other:DBTap
SVar:DBTap:DB$ Tap | ETB$ True | Defined$ Self | UnlessCost$ PayLife<3> | UnlessPayer$ You | UnlessAI$ Shockland | StackDescription$ enters the battlefield tapped. | SpellDescription$ As CARDNAME enters the battlefield, you may pay 3 life. If you don't, it enters the battlefield tapped.
A:AB$ Mana | Cost$ T | Produced$ B | SpellDescription$ Add {B}.
Oracle:As Agadeem, the Undercrypt enters the battlefield, you may pay 3 life. If you dont, it enters the battlefield tapped.\n{T}: Add {B}.

View File

@@ -189,7 +189,7 @@ public final class InputSelectTargets extends InputSyncronizedBase {
} }
} }
// If all cards must have different controllers // If all cards must have same controllers
if (tgt.isSameController()) { if (tgt.isSameController()) {
final List<Player> targetedControllers = new ArrayList<>(); final List<Player> targetedControllers = new ArrayList<>();
for (final GameObject o : targetDepth.keySet()) { for (final GameObject o : targetDepth.keySet()) {
@@ -219,6 +219,21 @@ public final class InputSelectTargets extends InputSyncronizedBase {
} }
} }
// If all cards must have different CMC
if (tgt.isDifferentCMC()) {
final List<Integer> targetedCMCs = new ArrayList<>();
for (final GameObject o : targetDepth.keySet()) {
if (o instanceof Card) {
final Integer cmc = ((Card) o).getCMC();
targetedCMCs.add(cmc);
}
}
if (targetedCMCs.contains(card.getCMC())) {
showMessage(sa.getHostCard() + " - Cannot target this card (must have different CMC)");
return false;
}
}
if (!choices.contains(card)) { if (!choices.contains(card)) {
showMessage(sa.getHostCard() + " - The selected card is not a valid choice to be targeted."); showMessage(sa.getHostCard() + " - The selected card is not a valid choice to be targeted.");
return false; return false;