Skip to content
Open
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
109 changes: 109 additions & 0 deletions Mage.Sets/src/mage/cards/k/KangTheConqueror.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
package mage.cards.k;

import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.ContinuousRuleModifyingEffectImpl;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.effects.common.turn.AddExtraTurnControllerEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.PowerUpAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.counters.CounterType;
import mage.game.Game;
import mage.game.events.GameEvent;

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

/**
* @author muz
*/
public final class KangTheConqueror extends CardImpl {

public KangTheConqueror(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}{U}");

this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.VILLAIN);

this.power = new MageInt(4);
this.toughness = new MageInt(5);

// Flying
this.addAbility(FlyingAbility.getInstance());

// Power-up -- {5}{U}{U}{U}: Put a +1/+1 counter on Kang. Take an extra turn after this one. During that turn, power-up abilities can't be activated.
Ability ability = new PowerUpAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance()),
new ManaCostsImpl<>("{5}{U}{U}{U}")
);
ability.addEffect(new AddExtraTurnControllerEffect(false, KangTheConquerorApplier.instance)
.setText("take an extra turn after this one. During that turn, power-up abilities can't be activated"));
this.addAbility(ability);
}

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

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

enum KangTheConquerorApplier implements AddExtraTurnControllerEffect.TurnModApplier {
instance;

@Override
public void apply(UUID turnId, Ability source, Game game) {
game.addEffect(new KangTheConquerorEffect(turnId), source);
}
}

class KangTheConquerorEffect extends ContinuousRuleModifyingEffectImpl {

private final UUID turnId;

KangTheConquerorEffect(UUID turnId) {
super(Duration.Custom, Outcome.Detriment);
this.turnId = turnId;
}

private KangTheConquerorEffect(final KangTheConquerorEffect effect) {
super(effect);
this.turnId = effect.turnId;
}

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

@Override
public String getInfoMessage(Ability source, GameEvent event, Game game) {
return "Power-up abilities can't be activated during this turn.";
}

@Override
public boolean checksEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.ACTIVATE_ABILITY;
}

@Override
public boolean applies(GameEvent event, Ability source, Game game) {
if (turnId == null || !turnId.equals(game.getState().getExtraTurnId())) {
return false;
}
Optional<Ability> ability = game.getAbility(event.getTargetId(), event.getSourceId());
return ability.isPresent() && ability.get() instanceof PowerUpAbility;
}
}
2 changes: 2 additions & 0 deletions Mage.Sets/src/mage/sets/MarvelSuperHeroes.java
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,8 @@ private MarvelSuperHeroes() {
cards.add(new SetCardInfo("Jessica Jones, Private Eye", 139, Rarity.UNCOMMON, mage.cards.j.JessicaJonesPrivateEye.class));
cards.add(new SetCardInfo("K'un-Lun Warrior", 140, Rarity.COMMON, mage.cards.k.KunLunWarrior.class));
cards.add(new SetCardInfo("Ka-Zar of the Savage Land", 174, Rarity.UNCOMMON, mage.cards.k.KaZarOfTheSavageLand.class));
cards.add(new SetCardInfo("Kang the Conqueror", 62, Rarity.MYTHIC, mage.cards.k.KangTheConqueror.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Kang the Conqueror", 403, Rarity.MYTHIC, mage.cards.k.KangTheConqueror.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Kang, Temporal Tyrant", 217, Rarity.UNCOMMON, mage.cards.k.KangTemporalTyrant.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Kang, Temporal Tyrant", 450, Rarity.UNCOMMON, mage.cards.k.KangTemporalTyrant.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Killmonger, Scourge of Wakanda", 218, Rarity.UNCOMMON, mage.cards.k.KillmongerScourgeOfWakanda.class));
Expand Down
Loading