mirror of
https://github.com/correl/mage.git
synced 2024-11-15 03:00:16 +00:00
[MH2] Implemented Sword of Hearth and Home
This commit is contained in:
parent
b8c7fd2e12
commit
836bc95007
9 changed files with 190 additions and 175 deletions
|
@ -1,14 +1,10 @@
|
|||
|
||||
|
||||
package mage.cards.s;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.ObjectColor;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.TriggeredAbilityImpl;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.abilities.effects.common.PutLibraryIntoGraveTargetEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostEquippedEffect;
|
||||
|
@ -17,34 +13,30 @@ import mage.abilities.keyword.EquipAbility;
|
|||
import mage.abilities.keyword.ProtectionAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AttachmentType;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.Zone;
|
||||
import mage.constants.*;
|
||||
import mage.game.Game;
|
||||
import mage.game.events.DamagedPlayerEvent;
|
||||
import mage.game.events.GameEvent;
|
||||
import mage.game.events.GameEvent.EventType;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.game.permanent.token.WolfToken;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Loki
|
||||
*/
|
||||
public final class SwordOfBodyAndMind extends CardImpl {
|
||||
|
||||
public SwordOfBodyAndMind(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
|
||||
this.subtype.add(SubType.EQUIPMENT);
|
||||
|
||||
// Equipped creature gets +2/+2 and has protection from green and from blue.
|
||||
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(2, 2));
|
||||
Effect effect = new GainAbilityAttachedEffect(ProtectionAbility.from(ObjectColor.GREEN, ObjectColor.BLUE), AttachmentType.EQUIPMENT);
|
||||
effect.setText("and has protection from green and from blue");
|
||||
ability.addEffect(effect);
|
||||
Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(2, 2));
|
||||
ability.addEffect(new GainAbilityAttachedEffect(
|
||||
ProtectionAbility.from(ObjectColor.GREEN, ObjectColor.BLUE), AttachmentType.EQUIPMENT
|
||||
).setText("and has protection from green and from blue"));
|
||||
this.addAbility(ability);
|
||||
|
||||
// Whenever equipped creature deals combat damage to a player, you create a 2/2 green Wolf creature token and that player puts the top ten cards of their library into their graveyard.
|
||||
|
@ -87,12 +79,10 @@ class SwordOfBodyAndMindAbility extends TriggeredAbilityImpl {
|
|||
|
||||
@Override
|
||||
public boolean checkTrigger(GameEvent event, Game game) {
|
||||
DamagedPlayerEvent damageEvent = (DamagedPlayerEvent)event;
|
||||
DamagedPlayerEvent damageEvent = (DamagedPlayerEvent) event;
|
||||
Permanent p = game.getPermanent(event.getSourceId());
|
||||
if (damageEvent.isCombatDamage() && p != null && p.getAttachments().contains(this.getSourceId())) {
|
||||
for (Effect effect : this.getEffects()) {
|
||||
effect.setTargetPointer(new FixedTarget(event.getPlayerId()));
|
||||
}
|
||||
this.getEffects().setTargetPointer(new FixedTarget(event.getPlayerId()));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@ -102,4 +92,4 @@ class SwordOfBodyAndMindAbility extends TriggeredAbilityImpl {
|
|||
public String getRule() {
|
||||
return "Whenever equipped creature deals combat damage to a player, you create a 2/2 green Wolf creature token and that player mills ten cards.";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
package mage.cards.s;
|
||||
|
||||
import mage.ObjectColor;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.TriggeredAbilityImpl;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.abilities.effects.common.UntapAllLandsControllerEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostEquippedEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
|
||||
|
@ -17,7 +17,6 @@ import mage.constants.*;
|
|||
import mage.game.Game;
|
||||
import mage.game.events.DamagedPlayerEvent;
|
||||
import mage.game.events.GameEvent;
|
||||
import mage.game.events.GameEvent.EventType;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
|
||||
|
@ -32,15 +31,18 @@ public final class SwordOfFeastAndFamine extends CardImpl {
|
|||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
|
||||
this.subtype.add(SubType.EQUIPMENT);
|
||||
|
||||
// Equip {2}
|
||||
this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(2)));
|
||||
|
||||
// Equipped creature gets +2/+2 and has protection from black and from green.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(2, 2)));
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(ProtectionAbility.from(ObjectColor.GREEN, ObjectColor.BLACK), AttachmentType.EQUIPMENT)));
|
||||
Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(2, 2));
|
||||
ability.addEffect(new GainAbilityAttachedEffect(
|
||||
ProtectionAbility.from(ObjectColor.BLACK, ObjectColor.GREEN), AttachmentType.EQUIPMENT
|
||||
).setText("and has protection from black and from green"));
|
||||
this.addAbility(ability);
|
||||
|
||||
// Whenever equipped creature deals combat damage to a player, that player discards a card and you untap all lands you control.
|
||||
this.addAbility(new SwordOfFeastAndFamineAbility());
|
||||
|
||||
// Equip {2}
|
||||
this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(2)));
|
||||
}
|
||||
|
||||
private SwordOfFeastAndFamine(final SwordOfFeastAndFamine card) {
|
||||
|
@ -79,9 +81,7 @@ class SwordOfFeastAndFamineAbility extends TriggeredAbilityImpl {
|
|||
DamagedPlayerEvent damageEvent = (DamagedPlayerEvent) event;
|
||||
Permanent p = game.getPermanent(event.getSourceId());
|
||||
if (damageEvent.isCombatDamage() && p != null && p.getAttachments().contains(this.getSourceId())) {
|
||||
for (Effect effect : this.getEffects()) {
|
||||
effect.setTargetPointer(new FixedTarget(event.getPlayerId()));
|
||||
}
|
||||
this.getEffects().setTargetPointer(new FixedTarget(event.getPlayerId()));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@ -89,6 +89,7 @@ class SwordOfFeastAndFamineAbility extends TriggeredAbilityImpl {
|
|||
|
||||
@Override
|
||||
public String getRule() {
|
||||
return "Whenever equipped creature deals combat damage to a player, that player discards a card and you untap all lands you control.";
|
||||
return "Whenever equipped creature deals combat damage to a player, " +
|
||||
"that player discards a card and you untap all lands you control.";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
package mage.cards.s;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.ObjectColor;
|
||||
import mage.abilities.TriggeredAbilityImpl;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.DealsDamageToAPlayerAttachedTriggeredAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.effects.common.DamageTargetEffect;
|
||||
|
@ -15,16 +15,12 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AttachmentType;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.Zone;
|
||||
import mage.game.Game;
|
||||
import mage.game.events.DamagedPlayerEvent;
|
||||
import mage.game.events.GameEvent;
|
||||
import mage.game.events.GameEvent.EventType;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.constants.SubType;
|
||||
import mage.target.common.TargetAnyTarget;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author Loki
|
||||
*/
|
||||
|
@ -35,12 +31,21 @@ public final class SwordOfFireAndIce extends CardImpl {
|
|||
this.subtype.add(SubType.EQUIPMENT);
|
||||
|
||||
// Equipped creature gets +2/+2 and has protection from red and from blue.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(2, 2)));
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(
|
||||
ProtectionAbility.from(ObjectColor.RED, ObjectColor.BLUE), AttachmentType.EQUIPMENT)));
|
||||
Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(2, 2));
|
||||
ability.addEffect(new GainAbilityAttachedEffect(
|
||||
ProtectionAbility.from(ObjectColor.RED, ObjectColor.BLUE), AttachmentType.EQUIPMENT
|
||||
).setText("and has protection from red and from blue"));
|
||||
this.addAbility(ability);
|
||||
|
||||
// Whenever equipped creature deals combat damage to a player, Sword of Fire
|
||||
// and Ice deals 2 damage to any target and you draw a card.
|
||||
this.addAbility(new SwordOfFireAndIceAbility());
|
||||
ability = new DealsDamageToAPlayerAttachedTriggeredAbility(
|
||||
new DamageTargetEffect(2), "equipped", false
|
||||
);
|
||||
ability.addEffect(new DrawCardSourceControllerEffect(1).concatBy("and"));
|
||||
ability.addTarget(new TargetAnyTarget());
|
||||
this.addAbility(ability);
|
||||
|
||||
// Equip {2}
|
||||
this.addAbility(new EquipAbility(Outcome.Benefit, new GenericManaCost(2)));
|
||||
}
|
||||
|
@ -55,41 +60,3 @@ public final class SwordOfFireAndIce extends CardImpl {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
class SwordOfFireAndIceAbility extends TriggeredAbilityImpl {
|
||||
|
||||
public SwordOfFireAndIceAbility() {
|
||||
super(Zone.BATTLEFIELD, new DamageTargetEffect(2));
|
||||
this.addEffect(new DrawCardSourceControllerEffect(1));
|
||||
this.addTarget(new TargetAnyTarget());
|
||||
}
|
||||
|
||||
public SwordOfFireAndIceAbility(final SwordOfFireAndIceAbility ability) {
|
||||
super(ability);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SwordOfFireAndIceAbility copy() {
|
||||
return new SwordOfFireAndIceAbility(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkEventType(GameEvent event, Game game) {
|
||||
return event.getType() == GameEvent.EventType.DAMAGED_PLAYER;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkTrigger(GameEvent event, Game game) {
|
||||
DamagedPlayerEvent damageEvent = (DamagedPlayerEvent) event;
|
||||
Permanent p = game.getPermanent(event.getSourceId());
|
||||
return damageEvent.isCombatDamage()
|
||||
&& p != null
|
||||
&& p.getAttachments().contains(this.getSourceId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRule() {
|
||||
return "Whenever equipped creature deals combat damage to a player, "
|
||||
+ "{this} deals 2 damage to any target and you draw a card.";
|
||||
}
|
||||
}
|
||||
|
|
109
Mage.Sets/src/mage/cards/s/SwordOfHearthAndHome.java
Normal file
109
Mage.Sets/src/mage/cards/s/SwordOfHearthAndHome.java
Normal file
|
@ -0,0 +1,109 @@
|
|||
package mage.cards.s;
|
||||
|
||||
import mage.ObjectColor;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.DealsDamageToAPlayerAttachedTriggeredAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostEquippedEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
|
||||
import mage.abilities.keyword.EquipAbility;
|
||||
import mage.abilities.keyword.ProtectionAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.Cards;
|
||||
import mage.cards.CardsImpl;
|
||||
import mage.constants.*;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
import mage.target.TargetPermanent;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class SwordOfHearthAndHome extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterCreaturePermanent("creature you own");
|
||||
|
||||
static {
|
||||
filter.add(TargetController.YOU.getOwnerPredicate());
|
||||
}
|
||||
|
||||
public SwordOfHearthAndHome(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
|
||||
|
||||
this.subtype.add(SubType.EQUIPMENT);
|
||||
|
||||
// Equipped creature gets +2/+2 and has protection from green and from white.
|
||||
Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(2, 2));
|
||||
ability.addEffect(new GainAbilityAttachedEffect(
|
||||
ProtectionAbility.from(ObjectColor.GREEN, ObjectColor.WHITE), AttachmentType.EQUIPMENT
|
||||
).setText("and has protection from green and from white"));
|
||||
this.addAbility(ability);
|
||||
|
||||
// Whenever equipped creature deals combat damage to a player, exile up to one target creature you own, then search your library for a basic land card. Put both cards onto the battlefield under your control, then shuffle.
|
||||
ability = new DealsDamageToAPlayerAttachedTriggeredAbility(
|
||||
new SwordOfHearthAndHomeEffect(), "equipped", false
|
||||
);
|
||||
ability.addTarget(new TargetPermanent(0, 1, filter));
|
||||
this.addAbility(ability);
|
||||
|
||||
// Equip {2}
|
||||
this.addAbility(new EquipAbility(Outcome.Benefit, new GenericManaCost(2)));
|
||||
}
|
||||
|
||||
private SwordOfHearthAndHome(final SwordOfHearthAndHome card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SwordOfHearthAndHome copy() {
|
||||
return new SwordOfHearthAndHome(this);
|
||||
}
|
||||
}
|
||||
|
||||
class SwordOfHearthAndHomeEffect extends OneShotEffect {
|
||||
|
||||
SwordOfHearthAndHomeEffect() {
|
||||
super(Outcome.Benefit);
|
||||
staticText = "exile up to one target creature you own, then search your library for a basic land card. " +
|
||||
"Put both cards onto the battlefield under your control, then shuffle";
|
||||
}
|
||||
|
||||
private SwordOfHearthAndHomeEffect(final SwordOfHearthAndHomeEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SwordOfHearthAndHomeEffect copy() {
|
||||
return new SwordOfHearthAndHomeEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Player player = game.getPlayer(source.getControllerId());
|
||||
if (player == null) {
|
||||
return false;
|
||||
}
|
||||
Cards cards = new CardsImpl();
|
||||
Permanent permanent = game.getPermanent(source.getFirstTarget());
|
||||
if (permanent != null) {
|
||||
player.moveCards(permanent, Zone.EXILED, source, game);
|
||||
cards.add(permanent);
|
||||
}
|
||||
TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND);
|
||||
player.searchLibrary(target, source, game);
|
||||
cards.add(player.getLibrary().getCard(target.getFirstTarget(), game));
|
||||
player.moveCards(cards, Zone.BATTLEFIELD, source, game);
|
||||
player.shuffleLibrary(source, game);
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -1,10 +1,8 @@
|
|||
|
||||
package mage.cards.s;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.ObjectColor;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.TriggeredAbilityImpl;
|
||||
import mage.abilities.common.DealsDamageToAPlayerAttachedTriggeredAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
|
@ -16,20 +14,14 @@ import mage.abilities.keyword.ProtectionAbility;
|
|||
import mage.cards.Card;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AttachmentType;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
import mage.constants.*;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.Game;
|
||||
import mage.game.events.DamagedPlayerEvent;
|
||||
import mage.game.events.GameEvent;
|
||||
import mage.game.events.GameEvent.EventType;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInYourGraveyard;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author Loki
|
||||
*/
|
||||
|
@ -40,12 +32,22 @@ public final class SwordOfLightAndShadow extends CardImpl {
|
|||
this.subtype.add(SubType.EQUIPMENT);
|
||||
|
||||
// Equipped creature gets +2/+2 and has protection from white and from black.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(2, 2)));
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(ProtectionAbility.from(ObjectColor.WHITE, ObjectColor.BLACK), AttachmentType.EQUIPMENT)));
|
||||
// Whenever equipped creature deals combat damage to a player, you gain 3 life and you may return up to one target creature card from your graveyard to your hand.
|
||||
Ability ability = new SwordOfLightAndShadowAbility();
|
||||
ability.addTarget(new TargetCardInYourGraveyard(0, 1, StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD));
|
||||
Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(2, 2));
|
||||
ability.addEffect(new GainAbilityAttachedEffect(
|
||||
ProtectionAbility.from(ObjectColor.WHITE, ObjectColor.BLACK), AttachmentType.EQUIPMENT
|
||||
).setText("and has protection from white and from black"));
|
||||
this.addAbility(ability);
|
||||
|
||||
// Whenever equipped creature deals combat damage to a player, you gain 3 life and you may return up to one target creature card from your graveyard to your hand.
|
||||
ability = new DealsDamageToAPlayerAttachedTriggeredAbility(
|
||||
new GainLifeEffect(3), "equipped", false
|
||||
);
|
||||
ability.addEffect(new SwordOfLightAndShadowEffect());
|
||||
ability.addTarget(new TargetCardInYourGraveyard(
|
||||
0, 1, StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD
|
||||
));
|
||||
this.addAbility(ability);
|
||||
|
||||
// Equip {2}
|
||||
this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(2)));
|
||||
}
|
||||
|
@ -60,81 +62,28 @@ public final class SwordOfLightAndShadow extends CardImpl {
|
|||
}
|
||||
}
|
||||
|
||||
class SwordOfLightAndShadowAbility extends TriggeredAbilityImpl {
|
||||
class SwordOfLightAndShadowEffect extends OneShotEffect {
|
||||
|
||||
public SwordOfLightAndShadowAbility() {
|
||||
super(Zone.BATTLEFIELD, new GainLifeEffect(3), false);
|
||||
this.addEffect(new SwordOfLightAndShadowReturnToHandTargetEffect());
|
||||
|
||||
}
|
||||
|
||||
public SwordOfLightAndShadowAbility(final SwordOfLightAndShadowAbility ability) {
|
||||
super(ability);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SwordOfLightAndShadowAbility copy() {
|
||||
return new SwordOfLightAndShadowAbility(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkEventType(GameEvent event, Game game) {
|
||||
return event.getType() == GameEvent.EventType.DAMAGED_PLAYER;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkTrigger(GameEvent event, Game game) {
|
||||
DamagedPlayerEvent damageEvent = (DamagedPlayerEvent) event;
|
||||
Permanent p = game.getPermanent(event.getSourceId());
|
||||
return damageEvent.isCombatDamage() && p != null && p.getAttachments().contains(this.getSourceId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRule() {
|
||||
return "Whenever equipped creature deals combat damage to a player, you gain 3 life and you may return up to one target creature card from your graveyard to your hand.";
|
||||
}
|
||||
}
|
||||
|
||||
class SwordOfLightAndShadowReturnToHandTargetEffect extends OneShotEffect {
|
||||
|
||||
public SwordOfLightAndShadowReturnToHandTargetEffect() {
|
||||
public SwordOfLightAndShadowEffect() {
|
||||
super(Outcome.ReturnToHand);
|
||||
staticText = "and you may return up to one target creature card from your graveyard to your hand";
|
||||
}
|
||||
|
||||
public SwordOfLightAndShadowReturnToHandTargetEffect(final SwordOfLightAndShadowReturnToHandTargetEffect effect) {
|
||||
public SwordOfLightAndShadowEffect(final SwordOfLightAndShadowEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SwordOfLightAndShadowReturnToHandTargetEffect copy() {
|
||||
return new SwordOfLightAndShadowReturnToHandTargetEffect(this);
|
||||
public SwordOfLightAndShadowEffect copy() {
|
||||
return new SwordOfLightAndShadowEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
boolean result = true; // in case no target is selected
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
if (controller == null) {
|
||||
return false;
|
||||
}
|
||||
if (!source.getTargets().isEmpty() && targetPointer.getFirst(game, source) != null) {
|
||||
if (controller.chooseUse(outcome, "Return creature card from graveyard to hand?", source, game)) {
|
||||
for (UUID targetId : targetPointer.getTargets(game, source)) {
|
||||
switch (game.getState().getZone(targetId)) {
|
||||
case GRAVEYARD:
|
||||
Card card = game.getCard(targetId);
|
||||
if (card != null) {
|
||||
controller.moveCards(card, Zone.HAND, source, game);
|
||||
} else {
|
||||
result = false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
Card card = game.getCard(targetPointer.getFirst(game, source));
|
||||
return controller != null && card != null && controller.chooseUse(
|
||||
outcome, "Return " + card.getName() + " from your graveyard to your hand?", source, game
|
||||
) && controller.moveCards(card, Zone.HAND, source, game);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -33,9 +33,9 @@ public final class SwordOfSinewAndSteel extends CardImpl {
|
|||
|
||||
// Equipped creature gets +2/+2 and has protection from black and from red.
|
||||
Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(2, 2));
|
||||
ability.addEffect(new GainAbilityAttachedEffect(ProtectionAbility.from(
|
||||
ObjectColor.BLACK, ObjectColor.RED
|
||||
), AttachmentType.EQUIPMENT).setText("and has protection from black and from red"));
|
||||
ability.addEffect(new GainAbilityAttachedEffect(
|
||||
ProtectionAbility.from(ObjectColor.BLACK, ObjectColor.RED), AttachmentType.EQUIPMENT
|
||||
).setText("and has protection from black and from red"));
|
||||
this.addAbility(ability);
|
||||
|
||||
// Whenever equipped creature deals combat damage to a player, destroy up to one target planeswalker and up to one target artifact.
|
||||
|
|
|
@ -38,9 +38,9 @@ public final class SwordOfTruthAndJustice extends CardImpl {
|
|||
|
||||
// Equipped creature gets +2/+2 and has protection from white and from blue.
|
||||
Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(2, 2));
|
||||
ability.addEffect(new GainAbilityAttachedEffect(ProtectionAbility.from(
|
||||
ObjectColor.WHITE, ObjectColor.BLUE
|
||||
), AttachmentType.EQUIPMENT).setText("and has protection from white and from blue"));
|
||||
ability.addEffect(new GainAbilityAttachedEffect(
|
||||
ProtectionAbility.from(ObjectColor.WHITE, ObjectColor.BLUE), AttachmentType.EQUIPMENT
|
||||
).setText("and has protection from white and from blue"));
|
||||
this.addAbility(ability);
|
||||
|
||||
// Whenever equipped creature deals combat damage to a player, put a +1/+1 counter on a creature you control, then proliferate.
|
||||
|
|
|
@ -6,7 +6,6 @@ import mage.abilities.TriggeredAbilityImpl;
|
|||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.dynamicvalue.common.CardsInControllerHandCount;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.GainLifeEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostEquippedEffect;
|
||||
|
@ -19,7 +18,6 @@ import mage.constants.*;
|
|||
import mage.game.Game;
|
||||
import mage.game.events.DamagedPlayerEvent;
|
||||
import mage.game.events.GameEvent;
|
||||
import mage.game.events.GameEvent.EventType;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
|
@ -36,10 +34,10 @@ public final class SwordOfWarAndPeace extends CardImpl {
|
|||
this.subtype.add(SubType.EQUIPMENT);
|
||||
|
||||
// Equipped creature gets +2/+2 and has protection from red and from white.
|
||||
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(2, 2));
|
||||
Effect effect = new GainAbilityAttachedEffect(ProtectionAbility.from(ObjectColor.RED, ObjectColor.WHITE), AttachmentType.EQUIPMENT);
|
||||
effect.setText("and has protection from red and from white");
|
||||
ability.addEffect(effect);
|
||||
Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(2, 2));
|
||||
ability.addEffect(new GainAbilityAttachedEffect(
|
||||
ProtectionAbility.from(ObjectColor.RED, ObjectColor.WHITE), AttachmentType.EQUIPMENT
|
||||
).setText("and has protection from red and from white"));
|
||||
this.addAbility(ability);
|
||||
|
||||
// Whenever equipped creature deals combat damage to a player, Sword of War and Peace deals damage to that player equal to the number of cards in their hand and you gain 1 life for each card in your hand.
|
||||
|
|
|
@ -261,6 +261,7 @@ public final class ModernHorizons2 extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Svyelun of Sea and Sky", 69, Rarity.MYTHIC, mage.cards.s.SvyelunOfSeaAndSky.class));
|
||||
cards.add(new SetCardInfo("Swamp", 485, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Sweep the Skies", 70, Rarity.UNCOMMON, mage.cards.s.SweepTheSkies.class));
|
||||
cards.add(new SetCardInfo("Sword of Hearth and Home", 238, Rarity.MYTHIC, mage.cards.s.SwordOfHearthAndHome.class));
|
||||
cards.add(new SetCardInfo("Sylvan Anthem", 176, Rarity.RARE, mage.cards.s.SylvanAnthem.class));
|
||||
cards.add(new SetCardInfo("Sythis, Harvest's Hand", 214, Rarity.RARE, mage.cards.s.SythisHarvestsHand.class));
|
||||
cards.add(new SetCardInfo("Tanglepool Bridge", 257, Rarity.COMMON, mage.cards.t.TanglepoolBridge.class));
|
||||
|
|
Loading…
Reference in a new issue