Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tweak the Pillar of the Paruns format #11197

Merged
merged 3 commits into from
Sep 25, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -533,6 +533,7 @@ public class ScryfallImageSupportCards {
add("WOE"); // Wilds of Eldraine
add("WOT"); // Wilds of Eldraine: Enchanting Tales
add("WOC"); // Wilds of Eldraine Commander
add("CALC"); // Custom Alchemized versions of existing cards. Will download the original in directDownloadLinks
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's slightly confusing to add a custom set in this list. But if that's the only way for it to work, it's okay.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah that first add is for "attempt to download through scryfall", then the directDownloadLinks will direct url download the pillar image from dissension to the correct folder for CALC/1

I did not want to do an heavier rework of the logic, but still have some image on the custom card.

}
};

Expand Down Expand Up @@ -999,6 +1000,8 @@ public class ScryfallImageSupportCards {
put("PMEI/Jamuraan Lion/10*", "https://api.scryfall.com/cards/pmei/10★/");
// PRES
put("PRES/Lathliss, Dragon Queen/149*", "https://api.scryfall.com/cards/pres/149★/");
// CALC -- custom alchemy version of cards.
put("CALC/C-Pillar of the Paruns", "https://api.scryfall.com/cards/dis/176/");
}
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,10 @@
* To summarize, this uses the default rules for a 1v1 limited match,
* with two additional custom rules: <p>
* -> At the beginning of each player's first main phase, that player
* conjure into play a Pillar of the Paruns. This does count as a
* land drop for the turn. <p>
* -> The starting hand size is 6, not 7.
* conjure into play a custom version of Pillar of the Paruns. This
* does count as a land drop for the turn. The custom Pillar has
* hexproof and gain "{T}: add {1}."<p>
* -> The starting hand size is 6, and the starting life count is 25.
* <p> <p>
* I did took the inspiration for the mode from this cube list (not
* sure it is the original source for the idea, but i did not found
Expand All @@ -49,15 +50,18 @@
public class CustomPillarOfTheParunsDuel extends GameImpl {

public CustomPillarOfTheParunsDuel(MultiplayerAttackOption attackOption, RangeOfInfluence range, Mulligan mulligan) {
super(attackOption, range, mulligan, 20, 40, 6);
super(attackOption, range, mulligan, 25, 40, 6);
}

@Override
protected void init(UUID choosingPlayerId) {
super.init(choosingPlayerId);

getPlayers().forEach((playerId, p) -> {
addDelayedTriggeredAbility(new AtTheBeginOfPlayerFirstMainPhase(playerId, "Pillar of the Paruns"), null);
addDelayedTriggeredAbility(
new AtTheBeginOfPlayerFirstMainPhase(playerId, "C-Pillar of the Paruns"),
null // TODO: Not sure how to mock something to be displayed instead.
);
});

state.getTurnMods().add(new TurnMod(startingPlayerId).withSkipStep(PhaseStep.DRAW));
Expand Down Expand Up @@ -89,28 +93,28 @@ class InitPillarOfTheParunsEffect extends OneShotEffect {
private UUID playerId;
private String cardName;

InitPillarOfTheParunsEffect(UUID playerId, String cardName){
InitPillarOfTheParunsEffect(UUID playerId, String cardName) {
super(Outcome.PutLandInPlay);
this.playerId = playerId;
this.cardName = cardName;
this.staticText = "conjure " + cardName + " in play. It does count as a land played for the turn.";
}

private InitPillarOfTheParunsEffect(final InitPillarOfTheParunsEffect effect){
private InitPillarOfTheParunsEffect(final InitPillarOfTheParunsEffect effect) {
super(effect);
this.playerId = effect.playerId;
this.cardName = effect.cardName;
}

@Override
public InitPillarOfTheParunsEffect copy(){
public InitPillarOfTheParunsEffect copy() {
return new InitPillarOfTheParunsEffect(this);
}

@Override
public boolean apply(Game game, Ability source){
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(playerId);
if(player == null){
if (player == null) {
return false;
}

Expand Down
46 changes: 46 additions & 0 deletions Mage.Sets/src/mage/cards/p/PillarOfTheParunsCustom.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@

package mage.cards.p;

import mage.abilities.keyword.HexproofAbility;
import mage.abilities.mana.ColorlessManaAbility;
import mage.abilities.mana.ConditionalAnyColorManaAbility;
import mage.abilities.mana.conditional.ConditionalSpellManaBuilder;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.filter.StaticFilters;

import java.util.UUID;

/**
* Custom version of Pillar of the Paruns.
* Tweaked for the needs of the Pillar of the Paruns custom mode.
*
* Has Hexproof and "{T}: Add {1}"
*
* @author Susucr
*/
public final class PillarOfTheParunsCustom extends CardImpl {

public PillarOfTheParunsCustom(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");

// Custom: Hexproof
this.addAbility(HexproofAbility.getInstance());

// Custom: {T}: Add {1}
this.addAbility(new ColorlessManaAbility());

// {T}: Add one mana of any color. Spend this mana only to cast a multicolored spell.
this.addAbility(new ConditionalAnyColorManaAbility(1, new ConditionalSpellManaBuilder(StaticFilters.FILTER_SPELL_A_MULTICOLORED)));
}

private PillarOfTheParunsCustom(final PillarOfTheParunsCustom card) {
super(card);
}

@Override
public PillarOfTheParunsCustom copy() {
return new PillarOfTheParunsCustom(this);
}
}
26 changes: 26 additions & 0 deletions Mage.Sets/src/mage/sets/CustomAlchemy.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@

package mage.sets;

import mage.cards.ExpansionSet;
import mage.constants.Rarity;
import mage.constants.SetType;

/**
* Custom version of the official cards.
* Similar to Alchemy tweaks of cards.
* @author Susucr
*/
public final class CustomAlchemy extends ExpansionSet {
Susucre marked this conversation as resolved.
Show resolved Hide resolved

private static final CustomAlchemy instance = new CustomAlchemy();

public static CustomAlchemy getInstance() {
return instance;
}

private CustomAlchemy() {
super("Custom Alchemy", "CALC", ExpansionSet.buildDate(2023, 9, 24), SetType.CUSTOM_SET);
cards.add(new SetCardInfo("C-Pillar of the Paruns", 1, Rarity.SPECIAL, mage.cards.p.PillarOfTheParunsCustom.class));
}

}