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

[DRC] implement Aetherflux Conduit #13311

Merged
merged 5 commits into from
Feb 7, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
74 changes: 74 additions & 0 deletions Mage.Sets/src/mage/cards/a/AetherfluxConduit.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
package mage.cards.a;

import java.util.Optional;
import java.util.UUID;

import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SpellCastControllerTriggeredAbility;
import mage.abilities.costs.common.PayEnergyCost;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.continuous.CastFromHandWithoutPayingManaCostEffect;
import mage.abilities.effects.common.counter.GetEnergyCountersControllerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.game.Game;
import mage.game.stack.Spell;

/**
* @author sobiech
*/
public final class AetherfluxConduit extends CardImpl {

public AetherfluxConduit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{6}");

// Whenever you cast a spell, you get an amount of {E} equal to the amount of mana spent to cast that spell.
this.addAbility(new SpellCastControllerTriggeredAbility(
new AetherfluxConduitEffect(),false
));

// {T}, Pay fifty {E}: Draw seven cards. You may cast any number of spells from your hand without paying their mana costs.
final Ability ability = new SimpleActivatedAbility(new DrawCardSourceControllerEffect(7), new TapSourceCost());
ability.addCost(new PayEnergyCost(50).setText("Pay fifty {E}"));
ability.addEffect(new CastFromHandWithoutPayingManaCostEffect());
this.addAbility(ability);
}

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

@Override
public AetherfluxConduit copy() {
return new AetherfluxConduit(this);
}
}
class AetherfluxConduitEffect extends OneShotEffect {

AetherfluxConduitEffect() {
super(Outcome.Benefit);
this.staticText = "you get an amount of {E} <i>(energy counters)</i> equal to the amount of mana spent to cast that spell";
}
private AetherfluxConduitEffect(AetherfluxConduitEffect effect) {
super(effect);
}

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

@Override
public boolean apply(Game game, Ability source) {
Optional.ofNullable(this.getValue("spellCast"))
.map(Spell.class::cast)
.ifPresent(spell -> new GetEnergyCountersControllerEffect(spell.getManaValue()).apply(game, source));
return true;
}
}

1 change: 1 addition & 0 deletions Mage.Sets/src/mage/sets/AetherdriftCommander.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ private AetherdriftCommander() {
cards.add(new SetCardInfo("Adaptive Omnitool", 16, Rarity.RARE, mage.cards.a.AdaptiveOmnitool.class));
cards.add(new SetCardInfo("Adarkar Wastes", 144, Rarity.RARE, mage.cards.a.AdarkarWastes.class));
cards.add(new SetCardInfo("Aether Hub", 145, Rarity.UNCOMMON, mage.cards.a.AetherHub.class));
cards.add(new SetCardInfo("Aetherflux Conduit", 17, Rarity.RARE, mage.cards.a.AetherfluxConduit.class));
cards.add(new SetCardInfo("Aethersquall Ancient", 68, Rarity.RARE, mage.cards.a.AethersquallAncient.class));
cards.add(new SetCardInfo("Aethertide Whale", 69, Rarity.RARE, mage.cards.a.AethertideWhale.class));
cards.add(new SetCardInfo("Aetherwind Basker", 107, Rarity.MYTHIC, mage.cards.a.AetherwindBasker.class));
Expand Down