mirror of
https://github.com/correl/mage.git
synced 2024-12-25 03:00:15 +00:00
* Fall of the Hammer - Fixed that both targets got the damage instead correctly only the second.
This commit is contained in:
parent
13d488757a
commit
d1b2851f3e
1 changed files with 45 additions and 6 deletions
|
@ -31,20 +31,30 @@ import java.util.UUID;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.dynamicvalue.common.TargetPermanentPowerCount;
|
import mage.abilities.dynamicvalue.common.TargetPermanentPowerCount;
|
||||||
import mage.abilities.effects.Effect;
|
import mage.abilities.effects.Effect;
|
||||||
|
import mage.abilities.effects.OneShotEffect;
|
||||||
import mage.abilities.effects.common.DamageTargetEffect;
|
import mage.abilities.effects.common.DamageTargetEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Outcome;
|
||||||
import mage.constants.Rarity;
|
import mage.constants.Rarity;
|
||||||
import mage.constants.TargetController;
|
|
||||||
import mage.filter.common.FilterCreaturePermanent;
|
import mage.filter.common.FilterCreaturePermanent;
|
||||||
import mage.filter.predicate.permanent.ControllerPredicate;
|
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
|
import mage.game.permanent.Permanent;
|
||||||
import mage.target.common.TargetControlledCreaturePermanent;
|
import mage.target.common.TargetControlledCreaturePermanent;
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
import mage.target.targetpointer.SecondTargetPointer;
|
import mage.target.targetpointer.SecondTargetPointer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
*
|
||||||
|
* As Fall of the Hammer tries to resolve, if only one of the targets is legal,
|
||||||
|
* Fall of the Hammer will still resolve but will have no effect: If the first
|
||||||
|
* target creature is illegal, it can't deal damage to anything. If the second
|
||||||
|
* target creature is illegal, it can't be dealt damage.
|
||||||
|
*
|
||||||
|
* The amount of damage dealt is based on the first target creature's power as Fall of the Hammer resolves.
|
||||||
|
|
||||||
|
|
||||||
* @author LevelX2
|
* @author LevelX2
|
||||||
*/
|
*/
|
||||||
public class FallOfTheHammer extends CardImpl<FallOfTheHammer> {
|
public class FallOfTheHammer extends CardImpl<FallOfTheHammer> {
|
||||||
|
@ -58,10 +68,7 @@ public class FallOfTheHammer extends CardImpl<FallOfTheHammer> {
|
||||||
this.color.setRed(true);
|
this.color.setRed(true);
|
||||||
|
|
||||||
// Target creature you control deals damage equal to its power to another target creature.
|
// Target creature you control deals damage equal to its power to another target creature.
|
||||||
Effect effect = new DamageTargetEffect(new TargetPermanentPowerCount());
|
this.getSpellAbility().addEffect(new FallOfTheHammerDamageEffect());
|
||||||
effect.setTargetPointer(new SecondTargetPointer());
|
|
||||||
effect.setText("Target creature you control deals damage equal to its power to another target creature");
|
|
||||||
this.getSpellAbility().addEffect(effect);
|
|
||||||
this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent(true));
|
this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent(true));
|
||||||
this.getSpellAbility().addTarget(new FallOfTheHammerTargetCreaturePermanent(filter, true));
|
this.getSpellAbility().addTarget(new FallOfTheHammerTargetCreaturePermanent(filter, true));
|
||||||
}
|
}
|
||||||
|
@ -76,6 +83,38 @@ public class FallOfTheHammer extends CardImpl<FallOfTheHammer> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class FallOfTheHammerDamageEffect extends OneShotEffect<FallOfTheHammerDamageEffect> {
|
||||||
|
|
||||||
|
public FallOfTheHammerDamageEffect() {
|
||||||
|
super(Outcome.Damage);
|
||||||
|
this.staticText = "Target creature you control deals damage equal to its power to another target creature";
|
||||||
|
}
|
||||||
|
|
||||||
|
public FallOfTheHammerDamageEffect(final FallOfTheHammerDamageEffect effect) {
|
||||||
|
super(effect);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public FallOfTheHammerDamageEffect copy() {
|
||||||
|
return new FallOfTheHammerDamageEffect(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean apply(Game game, Ability source) {
|
||||||
|
Permanent ownCreature = game.getPermanent(source.getFirstTarget());
|
||||||
|
if (ownCreature != null) {
|
||||||
|
int damage = ownCreature.getPower().getValue();
|
||||||
|
Permanent targetCreature = game.getPermanent(source.getTargets().get(1).getFirstTarget());
|
||||||
|
if (targetCreature != null) {
|
||||||
|
targetCreature.damage(damage, ownCreature.getId(), game, true, false);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class FallOfTheHammerTargetCreaturePermanent extends TargetCreaturePermanent {
|
class FallOfTheHammerTargetCreaturePermanent extends TargetCreaturePermanent {
|
||||||
|
|
||||||
public FallOfTheHammerTargetCreaturePermanent(FilterCreaturePermanent filter, boolean required) {
|
public FallOfTheHammerTargetCreaturePermanent(FilterCreaturePermanent filter, boolean required) {
|
||||||
|
|
Loading…
Reference in a new issue