* Fixed some Ferocious effects.

This commit is contained in:
LevelX2 2014-10-18 18:11:37 +02:00
parent 2bd14269d6
commit e4d2782a08
5 changed files with 171 additions and 42 deletions

View file

@ -28,8 +28,8 @@
package mage.sets.khansoftarkir;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.condition.common.FerociousCondition;
import mage.abilities.decorator.ConditionalRestrictionEffect;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.DamageAllEffect;
import mage.abilities.effects.common.combat.CantBlockAllEffect;
@ -40,6 +40,7 @@ import mage.constants.Rarity;
import mage.constants.TargetController;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.permanent.ControllerPredicate;
import mage.game.Game;
/**
*
@ -62,9 +63,7 @@ public class BarrageOfBoulders extends CardImpl {
// Barrage of Boulders deals 1 damage to each creature you don't control.
this.getSpellAbility().addEffect(new DamageAllEffect(1, filter));
// Ferocious - If you control a creature with power 4 or greater, creatures can't block this turn
Effect effect = new ConditionalRestrictionEffect(Duration.EndOfTurn,
new CantBlockAllEffect(new FilterCreaturePermanent("creatures"), Duration.EndOfTurn),
FerociousCondition.getInstance() , null);
Effect effect = new BarrageOfBouldersCantBlockAllEffect(new FilterCreaturePermanent("creatures"), Duration.EndOfTurn);
effect.setText("<br/><br/><i>Ferocious</i> - If you control a creature with power 4 or greater, creatures can't block this turn");
this.getSpellAbility().addEffect(effect);
}
@ -78,3 +77,27 @@ public class BarrageOfBoulders extends CardImpl {
return new BarrageOfBoulders(this);
}
}
class BarrageOfBouldersCantBlockAllEffect extends CantBlockAllEffect {
public BarrageOfBouldersCantBlockAllEffect(FilterCreaturePermanent filter, Duration duration) {
super(filter, duration);
}
public BarrageOfBouldersCantBlockAllEffect(final BarrageOfBouldersCantBlockAllEffect effect) {
super(effect);
}
@Override
public void init(Ability source, Game game) {
if (!FerociousCondition.getInstance().apply(game, source)) {
discard();
}
}
@Override
public BarrageOfBouldersCantBlockAllEffect copy() {
return new BarrageOfBouldersCantBlockAllEffect(this);
}
}

View file

@ -28,15 +28,17 @@
package mage.sets.khansoftarkir;
import java.util.UUID;
import mage.abilities.condition.InvertCondition;
import mage.abilities.Ability;
import mage.abilities.Mode;
import mage.abilities.condition.common.FerociousCondition;
import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.IntPlusDynamicValue;
import mage.abilities.dynamicvalue.common.ManacostVariableValue;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.cards.CardImpl;
import mage.constants.CardType;
import mage.constants.Rarity;
import mage.game.Game;
import mage.target.common.TargetCreatureOrPlayer;
/**
@ -52,17 +54,9 @@ public class CratersClaws extends CardImpl {
this.color.setRed(true);
// Crater's Claws deals X damage to target creature or player.
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
new DamageTargetEffect(new ManacostVariableValue()),
new InvertCondition(FerociousCondition.getInstance()),
"{this} deals X damage to target creature or player."));
this.getSpellAbility().addTarget(new TargetCreatureOrPlayer());
// <i>Ferocious</i> - Crater's Claws deals X plus 2 damage to that creature or player instead if you control a creature with power 4 or greater.
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
new DamageTargetEffect(new IntPlusDynamicValue(2, new ManacostVariableValue())),
FerociousCondition.getInstance(),
"<br><br><i>Ferocious</i> - Crater's Claws deals X plus 2 damage to that creature or player instead if you control a creature with power 4 or greater"));
this.getSpellAbility().addEffect(new CratersClawsDamageTargetEffect(new ManacostVariableValue()));
this.getSpellAbility().addTarget(new TargetCreatureOrPlayer());
}
public CratersClaws(final CratersClaws card) {
@ -74,3 +68,35 @@ public class CratersClaws extends CardImpl {
return new CratersClaws(this);
}
}
class CratersClawsDamageTargetEffect extends DamageTargetEffect {
public CratersClawsDamageTargetEffect(DynamicValue amount) {
super(amount, false);
}
public CratersClawsDamageTargetEffect(final CratersClawsDamageTargetEffect effect) {
super(effect);
}
@Override
public CratersClawsDamageTargetEffect copy() {
return new CratersClawsDamageTargetEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
if (FerociousCondition.getInstance().apply(game, source)) {
amount = new IntPlusDynamicValue(2, new ManacostVariableValue());
}
return super.apply(game, source);
}
@Override
public String getText(Mode mode) {
return "{this} deals X damage to target creature or player." +
"<br><br><i>Ferocious</i> - {this} deals X plus 2 damage to that creature or player instead if you control a creature with power 4 or greater";
}
}

View file

@ -28,16 +28,15 @@
package mage.sets.khansoftarkir;
import java.util.UUID;
import mage.abilities.condition.InvertCondition;
import mage.abilities.Ability;
import mage.abilities.condition.common.FerociousCondition;
import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.dynamicvalue.IntPlusDynamicValue;
import mage.abilities.dynamicvalue.common.ManacostVariableValue;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.GainLifeEffect;
import mage.abilities.effects.OneShotEffect;
import mage.cards.CardImpl;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.Rarity;
import mage.game.Game;
import mage.players.Player;
/**
*
@ -52,16 +51,8 @@ public class FeedTheClan extends CardImpl {
this.color.setGreen(true);
// You gain 5 life.
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
new GainLifeEffect(5),
new InvertCondition(FerociousCondition.getInstance()),
"You gain 5 life"));
// Ferocious - You gain 10 life instead if you control a creature with power 4 or greater.
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
new GainLifeEffect(10),
FerociousCondition.getInstance(),
"<br><br><i>Ferocious</i> - You gain 10 life instead if you control a creature with power 4 or greater"));
// Ferocious - You gain 10 life instead if you control a creature with power 4 or greater
this.getSpellAbility().addEffect(new FeedTheClanEffect());
}
@ -74,3 +65,34 @@ public class FeedTheClan extends CardImpl {
return new FeedTheClan(this);
}
}
class FeedTheClanEffect extends OneShotEffect {
public FeedTheClanEffect() {
super(Outcome.GainLife);
this.staticText = "You gain 5 life. <br><br><i>Ferocious</i> - You gain 10 life instead if you control a creature with power 4 or greater";
}
public FeedTheClanEffect(final FeedTheClanEffect effect) {
super(effect);
}
@Override
public FeedTheClanEffect copy() {
return new FeedTheClanEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
if (FerociousCondition.getInstance().apply(game, source)) {
controller.gainLife(10, game);
} else {
controller.gainLife(5, game);
}
return true;
}
return false;
}
}

View file

@ -31,7 +31,6 @@ import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.SpellAbility;
import mage.abilities.condition.common.FerociousCondition;
import mage.abilities.decorator.ConditionalContinuousRuleModifyingEffect;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.SkipNextUntapTargetEffect;
import mage.abilities.effects.common.TapTargetEffect;
@ -59,9 +58,7 @@ public class IcyBlast extends CardImpl {
this.getSpellAbility().addTarget(new TargetCreaturePermanent(0, 1, new FilterCreaturePermanent(), false));
// <i>Ferocious</i> - If you control a creature with power 4 or greater, those creatures don't untap during their controllers' next untap steps.
Effect effect = new ConditionalContinuousRuleModifyingEffect(
new SkipNextUntapTargetEffect(),
FerociousCondition.getInstance());
Effect effect = new IcyBlastSkipNextUntapTargetEffect();
effect.setText("<br/><br/><i>Ferocious</i> - If you control a creature with power 4 or greater, those creatures don't untap during their controllers' next untap steps");
this.getSpellAbility().addEffect(effect);
}
@ -85,3 +82,31 @@ public class IcyBlast extends CardImpl {
return new IcyBlast(this);
}
}
class IcyBlastSkipNextUntapTargetEffect extends SkipNextUntapTargetEffect {
public IcyBlastSkipNextUntapTargetEffect() {
super();
}
public IcyBlastSkipNextUntapTargetEffect(final IcyBlastSkipNextUntapTargetEffect effect) {
super(effect);
}
@Override
public IcyBlastSkipNextUntapTargetEffect copy() {
return new IcyBlastSkipNextUntapTargetEffect(this);
}
@Override
public void init(Ability source, Game game) {
if (!FerociousCondition.getInstance().apply(game, source)) {
discard();
}
}
@Override
public boolean apply(Game game, Ability source) {
return false;
}
}

View file

@ -33,15 +33,20 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.LockedInCondition;
import mage.abilities.condition.common.FerociousCondition;
import mage.abilities.decorator.ConditionalContinousEffect;
import mage.abilities.effects.ContinuousEffect;
import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.combat.MustBeBlockedByAllTargetEffect;
import mage.abilities.effects.common.continious.GainAbilityTargetEffect;
import mage.abilities.keyword.IndestructibleAbility;
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.game.Game;
import mage.players.Player;
import mage.target.common.TargetCreaturePermanent;
/**
@ -57,13 +62,10 @@ public class RoarOfChallenge extends CardImpl {
this.color.setGreen(true);
// All creatures able to block target creature this turn do so.
this.getSpellAbility().addEffect(new MustBeBlockedByAllTargetEffect(Duration.EndOfTurn));
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
// <i>Ferocious</i> - That creature gains indestructible until end of turn if you control a creature with power 4 or greater.
this.getSpellAbility().addEffect(new ConditionalContinousEffect(
new GainAbilityTargetEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn),
new LockedInCondition(FerociousCondition.getInstance()),
"<br/><br/><i>Ferocious</i> - That creature gains indestructible until end of turn if you control a creature with power 4 or greater"));
this.getSpellAbility().addEffect(new MustBeBlockedByAllTargetEffect(Duration.EndOfTurn));
this.getSpellAbility().addEffect(new RoarOfChallengeEffect());
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
}
public RoarOfChallenge(final RoarOfChallenge card) {
@ -75,3 +77,34 @@ public class RoarOfChallenge extends CardImpl {
return new RoarOfChallenge(this);
}
}
class RoarOfChallengeEffect extends OneShotEffect {
public RoarOfChallengeEffect() {
super(Outcome.AddAbility);
this.staticText = "<br/><br/><i>Ferocious</i> - That creature gains indestructible until end of turn if you control a creature with power 4 or greater";
}
public RoarOfChallengeEffect(final RoarOfChallengeEffect effect) {
super(effect);
}
@Override
public RoarOfChallengeEffect copy() {
return new RoarOfChallengeEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
if (FerociousCondition.getInstance().apply(game, source)) {
ContinuousEffect effect = new GainAbilityTargetEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn);
effect.setTargetPointer(getTargetPointer());
game.addEffect(effect, source);
}
return true;
}
return false;
}
}