mirror of
https://github.com/correl/mage.git
synced 2024-11-15 03:00:16 +00:00
Fix Tail Swipe
This commit is contained in:
parent
7ececeffb3
commit
b5459efa04
3 changed files with 68 additions and 159 deletions
|
@ -1,39 +1,61 @@
|
|||
package mage.cards.b;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.AddContinuousEffectToGame;
|
||||
import mage.abilities.effects.common.FightTargetsEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
|
||||
import mage.abilities.keyword.IndestructibleAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.target.TargetPermanent;
|
||||
import mage.target.common.TargetControlledCreaturePermanent;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
* @author awjackson
|
||||
*/
|
||||
public final class BlizzardBrawl extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterPermanent("you control three or more snow permanents");
|
||||
|
||||
static {
|
||||
filter.add(SuperType.SNOW.getPredicate());
|
||||
}
|
||||
|
||||
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.MORE_THAN, 2);
|
||||
|
||||
public BlizzardBrawl(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{G}");
|
||||
|
||||
this.addSuperType(SuperType.SNOW);
|
||||
|
||||
// Choose target creature you control and target creature you don't control. If you control three or more snow permanents, the creature you control gets +1/+0 and gains indestructible until end of turn. Then those creatures fight each other.
|
||||
this.getSpellAbility().addEffect(new BlizzardBrawlEffect());
|
||||
// Choose target creature you control and target creature you don't control.
|
||||
// If you control three or more snow permanents, the creature you control gets +1/+0 and gains indestructible until end of turn.
|
||||
this.getSpellAbility().addEffect(
|
||||
new ConditionalOneShotEffect(
|
||||
new AddContinuousEffectToGame(new BoostTargetEffect(1, 0)),
|
||||
condition,
|
||||
"Choose target creature you control and target creature you don't control. " +
|
||||
"If you control three or more snow permanents, the creature you control gets +1/+0 " +
|
||||
"and gains indestructible until end of turn."
|
||||
).addEffect(
|
||||
new AddContinuousEffectToGame(new GainAbilityTargetEffect(IndestructibleAbility.getInstance()))
|
||||
)
|
||||
);
|
||||
|
||||
// Then those creatures fight each other.
|
||||
this.getSpellAbility().addEffect(new FightTargetsEffect()
|
||||
.setText("Then those creatures fight each other. <i>(Each deals damage equal to its power to the other.)</i>")
|
||||
);
|
||||
this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent());
|
||||
this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL));
|
||||
}
|
||||
|
@ -47,52 +69,3 @@ public final class BlizzardBrawl extends CardImpl {
|
|||
return new BlizzardBrawl(this);
|
||||
}
|
||||
}
|
||||
|
||||
class BlizzardBrawlEffect extends OneShotEffect {
|
||||
|
||||
private static final FilterPermanent filter = new FilterControlledPermanent();
|
||||
|
||||
static {
|
||||
filter.add(SuperType.SNOW.getPredicate());
|
||||
}
|
||||
|
||||
BlizzardBrawlEffect() {
|
||||
super(Outcome.Benefit);
|
||||
staticText = "Choose target creature you control and target creature you don't control. " +
|
||||
"If you control three or more snow permanents, the creature you control gets +1/+0 " +
|
||||
"and gains indestructible until end of turn. " +
|
||||
"Then those creatures fight each other. " +
|
||||
"<i>(Each deals damage equal to its power to the other.)</i>";
|
||||
}
|
||||
|
||||
private BlizzardBrawlEffect(final BlizzardBrawlEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlizzardBrawlEffect copy() {
|
||||
return new BlizzardBrawlEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Permanent creature1 = game.getPermanent(source.getTargets().get(0).getFirstTarget());
|
||||
Permanent creature2 = game.getPermanent(source.getTargets().get(1).getFirstTarget());
|
||||
if (creature1 == null) {
|
||||
return false;
|
||||
}
|
||||
if (game.getBattlefield().count(filter, source.getControllerId(), source, game) >= 3) {
|
||||
game.addEffect(new BoostTargetEffect(
|
||||
1, 0, Duration.EndOfTurn
|
||||
).setTargetPointer(new FixedTarget(creature1.getId(), game)), source);
|
||||
game.addEffect(new GainAbilityTargetEffect(
|
||||
IndestructibleAbility.getInstance(), Duration.EndOfTurn
|
||||
).setTargetPointer(new FixedTarget(creature1.getId(), game)), source);
|
||||
}
|
||||
if (creature2 == null) {
|
||||
return true;
|
||||
}
|
||||
game.getState().processAction(game);
|
||||
return creature1.fight(creature2, source, game);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,34 +1,44 @@
|
|||
package mage.cards.j;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.effects.ContinuousEffect;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.TargetHasSubtypeCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.AddContinuousEffectToGame;
|
||||
import mage.abilities.effects.common.FightTargetsEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
||||
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.filter.StaticFilters;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.target.TargetPermanent;
|
||||
import mage.target.common.TargetControlledCreaturePermanent;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
* @author awjackson
|
||||
*/
|
||||
public final class Joust extends CardImpl {
|
||||
|
||||
private static final Condition condition = new TargetHasSubtypeCondition(SubType.KNIGHT);
|
||||
|
||||
public Joust(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{R}");
|
||||
|
||||
// Choose target creature you control and target creature you don't control. The creature you control gets +2/+1 until end of turn if it's a Knight. Then those creatures fight each other.
|
||||
this.getSpellAbility().addEffect(new JoustEffect());
|
||||
// Choose target creature you control and target creature you don't control.
|
||||
// The creature you control gets +2/+1 until end of turn if it's a Knight.
|
||||
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
|
||||
new AddContinuousEffectToGame(new BoostTargetEffect(2, 1)),
|
||||
condition,
|
||||
"Choose target creature you control and target creature you don't control. " +
|
||||
"The creature you control gets +2/+1 until end of turn if it's a Knight."
|
||||
));
|
||||
|
||||
// Then those creatures fight each other.
|
||||
this.getSpellAbility().addEffect(new FightTargetsEffect()
|
||||
.setText("Then those creatures fight each other. <i>(Each deals damage equal to its power to the other.)</i>")
|
||||
);
|
||||
this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent());
|
||||
this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL));
|
||||
}
|
||||
|
@ -42,41 +52,3 @@ public final class Joust extends CardImpl {
|
|||
return new Joust(this);
|
||||
}
|
||||
}
|
||||
|
||||
class JoustEffect extends OneShotEffect {
|
||||
|
||||
JoustEffect() {
|
||||
super(Outcome.Benefit);
|
||||
staticText = "Choose target creature you control and target creature you don't control. " +
|
||||
"The creature you control gets +2/+1 until end of turn if it's a Knight. " +
|
||||
"Then those creatures fight each other. <i>(Each deals damage equal to its power to the other.)</i>";
|
||||
}
|
||||
|
||||
private JoustEffect(final JoustEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public JoustEffect copy() {
|
||||
return new JoustEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Permanent creature1 = game.getPermanent(source.getTargets().get(0).getFirstTarget());
|
||||
Permanent creature2 = game.getPermanent(source.getTargets().get(1).getFirstTarget());
|
||||
if (creature1 == null) {
|
||||
return false;
|
||||
}
|
||||
if (creature1.hasSubtype(SubType.KNIGHT, game)) {
|
||||
ContinuousEffect effect = new BoostTargetEffect(2, 1, Duration.EndOfTurn);
|
||||
effect.setTargetPointer(new FixedTarget(creature1.getId(), game));
|
||||
game.addEffect(effect, source);
|
||||
}
|
||||
if (creature2 == null) {
|
||||
return true;
|
||||
}
|
||||
game.getState().processAction(game);
|
||||
return creature1.fight(creature2, source, game);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,25 +2,21 @@ package mage.cards.t;
|
|||
|
||||
import java.util.UUID;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.condition.common.AddendumCondition;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.AddContinuousEffectToGame;
|
||||
import mage.abilities.effects.common.FightTargetsEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.target.TargetPermanent;
|
||||
import mage.target.Targets;
|
||||
import mage.target.common.TargetControlledCreaturePermanent;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author weirddan455
|
||||
* @author awjackson
|
||||
*/
|
||||
public final class TailSwipe extends CardImpl {
|
||||
|
||||
|
@ -29,8 +25,17 @@ public final class TailSwipe extends CardImpl {
|
|||
|
||||
// Choose target creature you control and target creature you don't control.
|
||||
// If you cast this spell during your main phase, the creature you control gets +1/+1 until end of turn.
|
||||
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
|
||||
new AddContinuousEffectToGame(new BoostTargetEffect(1, 1)),
|
||||
AddendumCondition.instance,
|
||||
"Choose target creature you control and target creature you don't control. " +
|
||||
"If you cast this spell during your main phase, the creature you control gets +1/+1 until end of turn."
|
||||
));
|
||||
|
||||
// Then those creatures fight each other.
|
||||
this.getSpellAbility().addEffect(new TailSwipeEffect());
|
||||
this.getSpellAbility().addEffect(new FightTargetsEffect()
|
||||
.setText("Then those creatures fight each other. <i>(Each deals damage equal to its power to the other.)</i>")
|
||||
);
|
||||
this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent());
|
||||
this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL));
|
||||
}
|
||||
|
@ -44,44 +49,3 @@ public final class TailSwipe extends CardImpl {
|
|||
return new TailSwipe(this);
|
||||
}
|
||||
}
|
||||
|
||||
class TailSwipeEffect extends OneShotEffect {
|
||||
|
||||
public TailSwipeEffect() {
|
||||
super(Outcome.Benefit);
|
||||
this.staticText = "Choose target creature you control and target creature you don't control. " +
|
||||
"If you cast this spell during your main phase, the creature you control gets +1/+1 until end of turn. " +
|
||||
"Then those creatures fight each other. " +
|
||||
"<i>(Each deals damage equal to its power to the other.)</i>";
|
||||
}
|
||||
|
||||
private TailSwipeEffect(final TailSwipeEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TailSwipeEffect copy() {
|
||||
return new TailSwipeEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Targets targets = source.getTargets();
|
||||
if (targets.size() < 2) {
|
||||
return false;
|
||||
}
|
||||
Permanent creature1 = game.getPermanent(targets.get(0).getFirstTarget());
|
||||
Permanent creature2 = game.getPermanent(targets.get(1).getFirstTarget());
|
||||
if (creature1 == null) {
|
||||
return false;
|
||||
}
|
||||
if (AddendumCondition.instance.apply(game, source)) {
|
||||
game.addEffect(new BoostTargetEffect(1, 1)
|
||||
.setTargetPointer(new FixedTarget(creature1, game)), source);
|
||||
}
|
||||
if (creature2 != null) {
|
||||
creature1.fight(creature2, source, game);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue