1
0
Fork 0
mirror of https://github.com/correl/mage.git synced 2025-04-08 17:00:07 -09:00

[KTK] Added TurnedFaceUpAllTriggeredAbility. Changed name of TurnedFaceUpTriggeredAbility.

This commit is contained in:
LevelX2 2014-09-12 19:01:43 +02:00
parent 7b8210ba86
commit 5c564906cd
19 changed files with 191 additions and 78 deletions

View file

@ -30,7 +30,7 @@ package mage.view;
import mage.abilities.Ability;
import mage.abilities.common.TurnFaceUpAbility;
import mage.abilities.common.TurnedFaceUpTriggeredAbility;
import mage.abilities.common.TurnedFaceUpSourceTriggeredAbility;
import mage.cards.Card;
import mage.constants.Rarity;
import mage.game.Game;

View file

@ -29,7 +29,7 @@ package mage.sets.jacevschandra;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.TurnedFaceUpTriggeredAbility;
import mage.abilities.common.TurnedFaceUpSourceTriggeredAbility;
import mage.abilities.costs.common.ReturnToHandTargetCost;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.keyword.MorphAbility;
@ -63,7 +63,7 @@ public class FathomSeer extends CardImpl {
// Morph-Return two Islands you control to their owner's hand.
this.addAbility(new MorphAbility(this, new ReturnToHandTargetCost(new TargetControlledPermanent(2,2, filter, true))));
// When Fathom Seer is turned face up, draw two cards.
this.addAbility(new TurnedFaceUpTriggeredAbility(new DrawCardSourceControllerEffect(2)));
this.addAbility(new TurnedFaceUpSourceTriggeredAbility(new DrawCardSourceControllerEffect(2)));
}
public FathomSeer(final FathomSeer card) {

View file

@ -31,7 +31,7 @@ import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.DiesTriggeredAbility;
import mage.abilities.common.TurnedFaceUpTriggeredAbility;
import mage.abilities.common.TurnedFaceUpSourceTriggeredAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect;
@ -75,7 +75,7 @@ public class AshcloudPhoenix extends CardImpl {
// When Ashcloud Phoenix is turned face up, it deals 2 damage to each player.
Effect effect = new DamagePlayersEffect(2, TargetController.ANY);
effect.setText("it deals 2 damage to each player");
this.addAbility(new TurnedFaceUpTriggeredAbility(effect));
this.addAbility(new TurnedFaceUpSourceTriggeredAbility(effect));
}
public AshcloudPhoenix(final AshcloudPhoenix card) {

View file

@ -31,7 +31,7 @@ import java.util.UUID;
import mage.MageInt;
import mage.ObjectColor;
import mage.abilities.Ability;
import mage.abilities.common.TurnedFaceUpTriggeredAbility;
import mage.abilities.common.TurnedFaceUpSourceTriggeredAbility;
import mage.abilities.costs.common.RevealTargetFromHandCost;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.LookAtTargetPlayerHandEffect;
@ -71,7 +71,7 @@ public class DragonsEyeSavants extends CardImpl {
// When Dragon's Eye Savants is turned face up, look at target opponent's hand.
Effect effect = new LookAtTargetPlayerHandEffect();
effect.setText("look at target opponent's hand");
Ability ability = new TurnedFaceUpTriggeredAbility(effect);
Ability ability = new TurnedFaceUpSourceTriggeredAbility(effect);
ability.addTarget(new TargetOpponent());
this.addAbility(ability);
}

View file

@ -32,7 +32,7 @@ import mage.MageInt;
import mage.ObjectColor;
import mage.abilities.Ability;
import mage.abilities.common.BlocksTriggeredAbility;
import mage.abilities.common.TurnedFaceUpTriggeredAbility;
import mage.abilities.common.TurnedFaceUpSourceTriggeredAbility;
import mage.abilities.costs.common.RevealTargetFromHandCost;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.DamageControllerEffect;
@ -77,7 +77,7 @@ public class HordeAmbusher extends CardImpl {
// When Horde Ambusher is turned face up, target creature can't block this turn.
Effect effect = new CantBlockTargetEffect(Duration.EndOfTurn);
effect.setText("target creature can't block this turn");
Ability ability = new TurnedFaceUpTriggeredAbility(effect);
Ability ability = new TurnedFaceUpSourceTriggeredAbility(effect);
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability);
}

View file

@ -30,7 +30,7 @@ package mage.sets.khansoftarkir;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.TurnedFaceUpTriggeredAbility;
import mage.abilities.common.TurnedFaceUpSourceTriggeredAbility;
import mage.abilities.keyword.FlyingAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.ReturnToHandTargetEffect;
@ -70,7 +70,7 @@ public class IcefeatherAven extends CardImpl {
// Morph {1}{G}{U}
this.addAbility(new MorphAbility(this, new ManaCostsImpl("{1}{G}{U}")));
// When Icefeather Aven is turned face up, you may return another target creature to its owner's hand.
Ability ability = new TurnedFaceUpTriggeredAbility(new ReturnToHandTargetEffect());
Ability ability = new TurnedFaceUpSourceTriggeredAbility(new ReturnToHandTargetEffect());
ability.addTarget(new TargetCreaturePermanent(filter));
this.addAbility(ability);

View file

@ -30,7 +30,7 @@ package mage.sets.khansoftarkir;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.TurnedFaceUpTriggeredAbility;
import mage.abilities.common.TurnedFaceUpSourceTriggeredAbility;
import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.decorator.ConditionalContinousEffect;
@ -72,7 +72,7 @@ public class JeeringInstigator extends CardImpl {
this.addAbility(new MorphAbility(this, new ManaCostsImpl<>("{2}{R}")));
// When Jeering Instigator is turned face up, if it's your turn, gain control of another target creature until end of turn. Untap it. That creature gains haste until end of turn.
Ability ability = new TurnedFaceUpTriggeredAbility(new ConditionalContinousEffect(new GainControlTargetEffect(Duration.EndOfTurn), MyTurnCondition.getInstance(), "if it's your turn, gain control of another target creature until end of turn. Untap it. That creature gains haste until end of turn."));
Ability ability = new TurnedFaceUpSourceTriggeredAbility(new ConditionalContinousEffect(new GainControlTargetEffect(Duration.EndOfTurn), MyTurnCondition.getInstance(), "if it's your turn, gain control of another target creature until end of turn. Untap it. That creature gains haste until end of turn."));
ability.addEffect(new UntapTargetEffect());
ability.addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn));
ability.addTarget(new TargetCreaturePermanent(filter));

View file

@ -31,7 +31,7 @@ import java.util.UUID;
import mage.MageInt;
import mage.MageObject;
import mage.abilities.Ability;
import mage.abilities.common.TurnedFaceUpTriggeredAbility;
import mage.abilities.common.TurnedFaceUpSourceTriggeredAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.AsThoughEffectImpl;
import mage.abilities.effects.ContinuousEffect;
@ -73,7 +73,7 @@ public class KheruSpellsnatcher extends CardImpl {
this.addAbility(new MorphAbility(this, new ManaCostsImpl<>("{4}{U}{U}")));
// When Kheru Spellthief is turned face up, counter target spell. If that spell is countered this way, exile it instead of putting it into its owner's graveyard. You may cast that card without paying its mana cost as long as it remains exiled.
Ability ability = new TurnedFaceUpTriggeredAbility(new KheruSpellsnatcherEffect());
Ability ability = new TurnedFaceUpSourceTriggeredAbility(new KheruSpellsnatcherEffect());
ability.addTarget(new TargetSpell());
this.addAbility(ability);
}

View file

@ -29,7 +29,7 @@ package mage.sets.khansoftarkir;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.TurnedFaceUpTriggeredAbility;
import mage.abilities.common.TurnedFaceUpSourceTriggeredAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.continious.BoostControlledEffect;
import mage.abilities.keyword.MorphAbility;
@ -58,7 +58,7 @@ public class MasterOfPearls extends CardImpl {
// Morph {3}{W}{W}
this.addAbility(new MorphAbility(this, new ManaCostsImpl("{3}{W}{W}")));
// When Master of Pearls is turned face up, creatures you control get +2/+2 until end of turn.
this.addAbility(new TurnedFaceUpTriggeredAbility(new BoostControlledEffect(2,2, Duration.EndOfTurn, new FilterCreaturePermanent("creatures"))));
this.addAbility(new TurnedFaceUpSourceTriggeredAbility(new BoostControlledEffect(2,2, Duration.EndOfTurn, new FilterCreaturePermanent("creatures"))));
}
public MasterOfPearls(final MasterOfPearls card) {

View file

@ -30,7 +30,7 @@ package mage.sets.khansoftarkir;
import java.util.UUID;
import mage.MageInt;
import mage.Mana;
import mage.abilities.common.TurnedFaceUpTriggeredAbility;
import mage.abilities.common.TurnedFaceUpSourceTriggeredAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.AddManaToControllersManaPoolEffect;
import mage.abilities.keyword.MorphAbility;
@ -66,7 +66,7 @@ public class RattleclawMystic extends CardImpl {
this.addAbility(new MorphAbility(this, new ManaCostsImpl("{2}")));
// When Rattleclaw Mystic is turned face up, add {G}{U}{R} to your mana pool.
this.addAbility(new TurnedFaceUpTriggeredAbility(new AddManaToControllersManaPoolEffect(new Mana(1,1,1,0,0,0,0))));
this.addAbility(new TurnedFaceUpSourceTriggeredAbility(new AddManaToControllersManaPoolEffect(new Mana(1,1,1,0,0,0,0))));
}

View file

@ -31,7 +31,7 @@ import java.util.UUID;
import mage.MageInt;
import mage.ObjectColor;
import mage.abilities.Ability;
import mage.abilities.common.TurnedFaceUpTriggeredAbility;
import mage.abilities.common.TurnedFaceUpSourceTriggeredAbility;
import mage.abilities.costs.common.RevealTargetFromHandCost;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.LoseLifeTargetEffect;
@ -75,7 +75,7 @@ public class RuthlessRipper extends CardImpl {
// When Ruthless Ripper is turned face up, target player loses 2 life.
Effect effect = new LoseLifeTargetEffect(2);
effect.setText("target player loses 2 life");
Ability ability = new TurnedFaceUpTriggeredAbility(effect);
Ability ability = new TurnedFaceUpSourceTriggeredAbility(effect);
ability.addTarget(new TargetPlayer());
this.addAbility(ability);
}

View file

@ -31,7 +31,7 @@ import java.util.UUID;
import mage.MageInt;
import mage.ObjectColor;
import mage.abilities.Ability;
import mage.abilities.common.TurnedFaceUpTriggeredAbility;
import mage.abilities.common.TurnedFaceUpSourceTriggeredAbility;
import mage.abilities.costs.common.RevealTargetFromHandCost;
import mage.abilities.effects.common.continious.GainAbilityTargetEffect;
import mage.abilities.keyword.MorphAbility;
@ -70,7 +70,7 @@ public class TemurCharger extends CardImpl {
this.addAbility(new MorphAbility(this, new RevealTargetFromHandCost(new TargetCardInHand(filter))));
// When Temur Charger is turned face up, target creature gains trample until end of turn.
Ability ability = new TurnedFaceUpTriggeredAbility(new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.EndOfTurn));
Ability ability = new TurnedFaceUpSourceTriggeredAbility(new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.EndOfTurn));
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability);

View file

@ -29,7 +29,7 @@ package mage.sets.khansoftarkir;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.TurnedFaceUpTriggeredAbility;
import mage.abilities.common.TurnedFaceUpSourceTriggeredAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.ReturnToHandFromBattlefieldAllEffect;
import mage.abilities.keyword.FlyingAbility;
@ -68,7 +68,7 @@ public class ThousandWinds extends CardImpl {
// Morph {5}{U}{U}
this.addAbility(new MorphAbility(this, new ManaCostsImpl("{5}{U}{U}")));
// When Thousand Winds is turned face up, return all other tapped creatures to their owners' hands.
this.addAbility(new TurnedFaceUpTriggeredAbility(new ReturnToHandFromBattlefieldAllEffect(filter)));
this.addAbility(new TurnedFaceUpSourceTriggeredAbility(new ReturnToHandFromBattlefieldAllEffect(filter)));
}
public ThousandWinds(final ThousandWinds card) {

View file

@ -30,7 +30,7 @@ package mage.sets.khansoftarkir;
import java.util.UUID;
import mage.MageInt;
import mage.ObjectColor;
import mage.abilities.common.TurnedFaceUpTriggeredAbility;
import mage.abilities.common.TurnedFaceUpSourceTriggeredAbility;
import mage.abilities.costs.common.RevealTargetFromHandCost;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.GainLifeEffect;
@ -73,7 +73,7 @@ public class WatcherOfTheRoost extends CardImpl {
// When Watcher of the Roost is turned face up, you gain 2 life.
Effect effect = new GainLifeEffect(2);
effect.setText("you gain 2 life");
this.addAbility(new TurnedFaceUpTriggeredAbility(effect));
this.addAbility(new TurnedFaceUpSourceTriggeredAbility(effect));
}
public WatcherOfTheRoost(final WatcherOfTheRoost card) {

View file

@ -30,7 +30,7 @@ package mage.sets.legions;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.TurnedFaceUpTriggeredAbility;
import mage.abilities.common.TurnedFaceUpSourceTriggeredAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.DestroyTargetEffect;
import mage.abilities.keyword.MorphAbility;
@ -70,7 +70,7 @@ public class NantukoVigilante extends CardImpl {
// Morph {1}{G}
this.addAbility(new MorphAbility(this,new ManaCostsImpl("{1}{G}")));
// When Nantuko Vigilante is turned face up, destroy target artifact or enchantment.
Ability ability = new TurnedFaceUpTriggeredAbility(new DestroyTargetEffect());
Ability ability = new TurnedFaceUpSourceTriggeredAbility(new DestroyTargetEffect());
ability.addTarget(new TargetPermanent(filter));
this.addAbility(ability);
}

View file

@ -30,7 +30,7 @@ package mage.sets.timespiral;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.common.TurnedFaceUpTriggeredAbility;
import mage.abilities.common.TurnedFaceUpSourceTriggeredAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.continious.BoostAllEffect;
@ -73,7 +73,7 @@ public class TheloniteHermit extends CardImpl {
this.addAbility(new MorphAbility(this, new ManaCostsImpl("{3}{G}{G}")));
// When Thelonite Hermit is turned face up, put four 1/1 green Saproling creature tokens onto the battlefield.
this.addAbility(new TurnedFaceUpTriggeredAbility(new CreateTokenEffect(new SaprolingToken(), 4)));
this.addAbility(new TurnedFaceUpSourceTriggeredAbility(new CreateTokenEffect(new SaprolingToken(), 4)));
}
public TheloniteHermit(final TheloniteHermit card) {

View file

@ -0,0 +1,96 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.abilities.common;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.effects.Effect;
import mage.constants.Zone;
import mage.filter.FilterPermanent;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.game.permanent.Permanent;
import mage.target.targetpointer.FixedTarget;
/**
*
* @author LevelX2
*/
public class TurnedFaceUpAllTriggeredAbility extends TriggeredAbilityImpl {
private FilterPermanent filter;
private boolean setTargetPointer;
public TurnedFaceUpAllTriggeredAbility(Effect effect, FilterPermanent filter) {
this(effect, filter, false);
}
public TurnedFaceUpAllTriggeredAbility(Effect effect, FilterPermanent filter, boolean setTargetPointer) {
super(Zone.BATTLEFIELD, effect);
// has to be set so the ability triggers if card is turn faced up
this.setWorksFaceDown(true);
this.filter = filter;
this.setTargetPointer = setTargetPointer;
}
public TurnedFaceUpAllTriggeredAbility(final TurnedFaceUpAllTriggeredAbility ability) {
super(ability);
this.setTargetPointer = ability.setTargetPointer;
this.filter = ability.filter;
}
@Override
public TurnedFaceUpAllTriggeredAbility copy() {
return new TurnedFaceUpAllTriggeredAbility(this);
}
@Override
public boolean checkTrigger(GameEvent event, Game game) {
if (EventType.TURNEDFACEUP.equals(event.getType())) {
Permanent permanent = game.getPermanent(event.getTargetId());
if (filter.match(permanent, getSourceId(), getControllerId(), game)) {
if (setTargetPointer) {
for (Effect effect: getEffects()) {
effect.setTargetPointer(new FixedTarget(event.getTargetId()));
}
}
return true;
}
}
return false;
}
@Override
public String getRule() {
return "When " + filter.getMessage() + " is turned face up, " + super.getRule();
}
}

View file

@ -0,0 +1,64 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package mage.abilities.common;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.effects.Effect;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.target.targetpointer.FixedTarget;
/**
*
* @author LevelX2
*/
public class TurnedFaceUpSourceTriggeredAbility extends TriggeredAbilityImpl {
private boolean setTargetPointer;
public TurnedFaceUpSourceTriggeredAbility(Effect effect) {
this(effect, false);
}
public TurnedFaceUpSourceTriggeredAbility(Effect effect, boolean setTargetPointer) {
super(Zone.BATTLEFIELD, effect);
// has to be set so the ability triggers if card is turn faced up
this.setWorksFaceDown(true);
this.setTargetPointer = setTargetPointer;
}
public TurnedFaceUpSourceTriggeredAbility(final TurnedFaceUpSourceTriggeredAbility ability) {
super(ability);
this.setTargetPointer = ability.setTargetPointer;
}
@Override
public TurnedFaceUpSourceTriggeredAbility copy() {
return new TurnedFaceUpSourceTriggeredAbility(this);
}
@Override
public boolean checkTrigger(GameEvent event, Game game) {
if (EventType.TURNEDFACEUP.equals(event.getType()) && event.getTargetId().equals(this.getSourceId())) {
if (setTargetPointer) {
for (Effect effect: getEffects()) {
effect.setTargetPointer(new FixedTarget(event.getTargetId()));
}
}
return true;
}
return false;
}
@Override
public String getRule() {
return "When {this} is turned face up, " + super.getRule();
}
}

View file

@ -1,47 +0,0 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package mage.abilities.common;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.effects.Effect;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
/**
*
* @author LevelX2
*/
public class TurnedFaceUpTriggeredAbility extends TriggeredAbilityImpl {
public TurnedFaceUpTriggeredAbility(Effect effect) {
super(Zone.BATTLEFIELD, effect);
// has to be set so the ability triggers if card is turn faced up
this.setWorksFaceDown(true);
}
public TurnedFaceUpTriggeredAbility(final TurnedFaceUpTriggeredAbility ability) {
super(ability);
}
@Override
public TurnedFaceUpTriggeredAbility copy() {
return new TurnedFaceUpTriggeredAbility(this);
}
@Override
public boolean checkTrigger(GameEvent event, Game game) {
return EventType.TURNEDFACEUP.equals(event.getType()) && event.getTargetId().equals(this.getSourceId());
}
@Override
public String getRule() {
return "When {this} is turned face up, " + super.getRule();
}
}