mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 03:38:01 +00:00
Merge branch 'agadeem' into 'master'
ZNR: Agadeem's Awakening // Agadeem, the Undercrypt See merge request core-developers/forge!3146
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -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 don’t, it enters the battlefield tapped.\n{T}: Add {B}.
|
||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user