mirror of
https://github.com/magefree/mage.git
synced 2026-01-24 20:29:19 -08:00
* Added test and some minor changes.
This commit is contained in:
parent
4d0e3b3a70
commit
ac7cd27f34
4 changed files with 65 additions and 32 deletions
|
|
@ -28,15 +28,15 @@
|
|||
package mage.sets.mirrodin;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.Rarity;
|
||||
import mage.MageObject;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.DamagePlayersEffect;
|
||||
import mage.abilities.effects.common.UntapAllLandsControllerEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.Rarity;
|
||||
import mage.constants.TargetController;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
|
|
@ -53,7 +53,6 @@ public class FieryGambit extends CardImpl {
|
|||
super(ownerId, 90, "Fiery Gambit", Rarity.RARE, new CardType[]{CardType.SORCERY}, "{2}{R}");
|
||||
this.expansionSetCode = "MRD";
|
||||
|
||||
|
||||
// Flip a coin until you lose a flip or choose to stop flipping. If you lose a flip, Fiery Gambit has no effect. If you win one or more flips, Fiery Gambit deals 3 damage to target creature. If you win two or more flips, Fiery Gambit deals 6 damage to each opponent. If you win three or more flips, draw nine cards and untap all lands you control.
|
||||
this.getSpellAbility().addEffect(new FieryGambitEffect());
|
||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||
|
|
@ -69,7 +68,6 @@ public class FieryGambit extends CardImpl {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
class FieryGambitEffect extends OneShotEffect {
|
||||
|
||||
public FieryGambitEffect() {
|
||||
|
|
@ -89,12 +87,13 @@ class FieryGambitEffect extends OneShotEffect {
|
|||
@java.lang.Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
if (controller != null) {
|
||||
MageObject sourceObject = source.getSourceObject(game);
|
||||
if (controller != null && sourceObject != null) {
|
||||
int flipsWon = 0;
|
||||
boolean controllerStopped = false;
|
||||
while (controller.flipCoin(game)) {
|
||||
++flipsWon;
|
||||
if (!controller.chooseUse(outcome, new StringBuilder("You won ").append(flipsWon).append(flipsWon == 1?" flip.":" flips.")
|
||||
if (!controller.chooseUse(outcome, new StringBuilder("You won ").append(flipsWon).append(flipsWon == 1 ? " flip." : " flips.")
|
||||
.append(" Flip another coin?").toString(), source, game)) {
|
||||
controllerStopped = true;
|
||||
break;
|
||||
|
|
@ -113,7 +112,7 @@ class FieryGambitEffect extends OneShotEffect {
|
|||
new UntapAllLandsControllerEffect().apply(game, source);
|
||||
}
|
||||
} else {
|
||||
game.informPlayers("Fiery Gambit had no effect");
|
||||
game.informPlayers(sourceObject.getIdName() + " had no effect");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,15 +29,15 @@ package mage.sets.mirrodin;
|
|||
|
||||
import java.util.Random;
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.ReplacementEffectImpl;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.Rarity;
|
||||
import mage.constants.Zone;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.ReplacementEffectImpl;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.game.Game;
|
||||
import mage.game.events.GameEvent;
|
||||
import mage.players.Player;
|
||||
|
|
@ -68,6 +68,7 @@ public class KrarksThumb extends CardImpl {
|
|||
}
|
||||
|
||||
class KrarksThumbEffect extends ReplacementEffectImpl {
|
||||
|
||||
KrarksThumbEffect() {
|
||||
super(Duration.WhileOnBattlefield, Outcome.Benefit);
|
||||
staticText = "If you would flip a coin, instead flip two coins and ignore one";
|
||||
|
|
@ -88,9 +89,9 @@ class KrarksThumbEffect extends ReplacementEffectImpl {
|
|||
}
|
||||
if (player.chooseUse(outcome, "Ignore the first coin flip?", source, game)) {
|
||||
event.setFlag(secondCoinFlip);
|
||||
game.informPlayers(new StringBuilder(player.getLogName()).append(" ignores the first coin flip.").toString());
|
||||
game.informPlayers(player.getLogName() + " ignores the first coin flip.");
|
||||
} else {
|
||||
game.informPlayers(new StringBuilder(player.getLogName()).append(" ignores the second coin flip.").toString());
|
||||
game.informPlayers(player.getLogName() + " ignores the second coin flip.");
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -59,7 +59,6 @@ public class GiftOfImmortality extends CardImpl {
|
|||
this.expansionSetCode = "THS";
|
||||
this.subtype.add("Aura");
|
||||
|
||||
|
||||
// Enchant creature
|
||||
TargetPermanent auraTarget = new TargetCreaturePermanent();
|
||||
this.getSpellAbility().addTarget(auraTarget);
|
||||
|
|
@ -67,9 +66,9 @@ public class GiftOfImmortality extends CardImpl {
|
|||
Ability ability = new EnchantAbility(auraTarget.getTargetName());
|
||||
this.addAbility(ability);
|
||||
|
||||
// When enchanted creature dies, return that card to the battlefield under its owner's control.
|
||||
// When enchanted creature dies, return that card to the battlefield under its owner's control.
|
||||
// Return Gift of Immortality to the battlefield attached to that creature at the beginning of the next end step.
|
||||
this.addAbility(new DiesAttachedTriggeredAbility(new GiftOfImmortalityEffect(),"enchanted creature", false));
|
||||
this.addAbility(new DiesAttachedTriggeredAbility(new GiftOfImmortalityEffect(), "enchanted creature", false));
|
||||
}
|
||||
|
||||
public GiftOfImmortality(final GiftOfImmortality card) {
|
||||
|
|
@ -106,21 +105,22 @@ class GiftOfImmortalityEffect extends OneShotEffect {
|
|||
if (card != null) {
|
||||
Zone currentZone = game.getState().getZone(card.getId());
|
||||
if (card.putOntoBattlefield(game, currentZone, source.getSourceId(), card.getOwnerId())) {
|
||||
//create delayed triggered ability
|
||||
Effect effect = new GiftOfImmortalityReturnEnchantmentEffect();
|
||||
effect.setTargetPointer(new FixedTarget(card.getId()));
|
||||
AtTheBeginOfNextEndStepDelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(effect);
|
||||
delayedAbility.setSourceId(source.getSourceId());
|
||||
delayedAbility.setControllerId(source.getControllerId());
|
||||
delayedAbility.setSourceObject(source.getSourceObject(game), game);
|
||||
game.addDelayedTriggeredAbility(delayedAbility);
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
if (permanent != null) {
|
||||
//create delayed triggered ability
|
||||
Effect effect = new GiftOfImmortalityReturnEnchantmentEffect();
|
||||
effect.setTargetPointer(new FixedTarget(permanent, game));
|
||||
AtTheBeginOfNextEndStepDelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(effect);
|
||||
delayedAbility.setSourceId(source.getSourceId());
|
||||
delayedAbility.setControllerId(source.getControllerId());
|
||||
delayedAbility.setSourceObject(source.getSourceObject(game), game);
|
||||
game.addDelayedTriggeredAbility(delayedAbility);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
@ -128,7 +128,7 @@ class GiftOfImmortalityEffect extends OneShotEffect {
|
|||
class GiftOfImmortalityReturnEnchantmentEffect extends OneShotEffect {
|
||||
|
||||
public GiftOfImmortalityReturnEnchantmentEffect() {
|
||||
super(Outcome.BoostCreature);
|
||||
super(Outcome.PutCardInPlay);
|
||||
staticText = "Return {this} to the battlefield attached to that creature at the beginning of the next end step";
|
||||
}
|
||||
|
||||
|
|
@ -140,11 +140,11 @@ class GiftOfImmortalityReturnEnchantmentEffect extends OneShotEffect {
|
|||
public boolean apply(Game game, Ability source) {
|
||||
Card aura = game.getCard(source.getSourceId());
|
||||
if (aura != null && game.getState().getZone(aura.getId()).equals(Zone.GRAVEYARD)) {
|
||||
Player you = game.getPlayer(source.getControllerId());
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
Permanent creature = game.getPermanent(getTargetPointer().getFirst(game, source));
|
||||
if (you != null && creature != null) {
|
||||
if (controller != null && creature != null) {
|
||||
game.getState().setValue("attachTo:" + aura.getId(), creature);
|
||||
aura.putOntoBattlefield(game, Zone.GRAVEYARD, source.getSourceId(), you.getId());
|
||||
aura.putOntoBattlefield(game, Zone.GRAVEYARD, source.getSourceId(), controller.getId());
|
||||
return creature.addAttachment(aura.getId(), game);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue