mirror of
https://github.com/correl/mage.git
synced 2024-12-24 03:00:14 +00:00
* Swift Warkite - Fixed that it returned object also if the object changed zone meanwhile.
This commit is contained in:
parent
7d3ff0551d
commit
2e01d2ec52
4 changed files with 33 additions and 42 deletions
|
@ -126,10 +126,10 @@ class SwiftWarkiteEffect extends OneShotEffect {
|
|||
Permanent creature = game.getPermanent(card.getId());
|
||||
if (creature != null) {
|
||||
ContinuousEffect effect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.Custom);
|
||||
effect.setTargetPointer(new FixedTarget(creature.getId()));
|
||||
effect.setTargetPointer(new FixedTarget(creature.getId(), creature.getZoneChangeCounter(game)));
|
||||
game.addEffect(effect, source);
|
||||
Effect effect2 = new ReturnToHandTargetEffect();
|
||||
effect2.setTargetPointer(new FixedTarget(creature.getId()));
|
||||
effect2.setTargetPointer(new FixedTarget(creature.getId(), creature.getZoneChangeCounter(game)));
|
||||
DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(effect2);
|
||||
delayedAbility.setControllerId(source.getControllerId());
|
||||
delayedAbility.setSourceId(source.getSourceId());
|
||||
|
@ -147,10 +147,10 @@ class SwiftWarkiteEffect extends OneShotEffect {
|
|||
Permanent creature = game.getPermanent(card.getId());
|
||||
if (creature != null) {
|
||||
ContinuousEffect effect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.Custom);
|
||||
effect.setTargetPointer(new FixedTarget(creature.getId()));
|
||||
effect.setTargetPointer(new FixedTarget(creature.getId(), creature.getZoneChangeCounter(game)));
|
||||
game.addEffect(effect, source);
|
||||
Effect effect2 = new ReturnToHandTargetEffect();
|
||||
effect2.setTargetPointer(new FixedTarget(creature.getId()));
|
||||
effect2.setTargetPointer(new FixedTarget(creature.getId(), creature.getZoneChangeCounter(game)));
|
||||
DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(effect2);
|
||||
delayedAbility.setControllerId(source.getControllerId());
|
||||
delayedAbility.setSourceId(source.getSourceId());
|
||||
|
|
|
@ -25,7 +25,6 @@
|
|||
* authors and should not be interpreted as representing official policies, either expressed
|
||||
* or implied, of BetaSteward_at_googlemail.com.
|
||||
*/
|
||||
|
||||
package mage.sets.returntoravnica;
|
||||
|
||||
import java.util.UUID;
|
||||
|
@ -58,21 +57,19 @@ import mage.target.targetpointer.FixedTarget;
|
|||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
|
||||
public class GraveBetrayal extends CardImpl {
|
||||
|
||||
public GraveBetrayal (UUID ownerId) {
|
||||
public GraveBetrayal(UUID ownerId) {
|
||||
super(ownerId, 67, "Grave Betrayal", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{5}{B}{B}");
|
||||
this.expansionSetCode = "RTR";
|
||||
|
||||
|
||||
// Whenever a creature you don't control dies, return it to the battlefield under
|
||||
// your control with an additional +1/+1 counter on it at the beginning of the
|
||||
// next end step. That creature is a black Zombie in addition to its other colors and types.
|
||||
this.addAbility(new GraveBetrayalTriggeredAbility());
|
||||
}
|
||||
|
||||
public GraveBetrayal (final GraveBetrayal card) {
|
||||
public GraveBetrayal(final GraveBetrayal card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
|
@ -108,13 +105,10 @@ class GraveBetrayalTriggeredAbility extends TriggeredAbilityImpl {
|
|||
&& ((ZoneChangeEvent) event).getFromZone() == Zone.BATTLEFIELD) {
|
||||
Permanent permanent = (Permanent) game.getLastKnownInformation(event.getTargetId(), Zone.BATTLEFIELD);
|
||||
if (permanent != null && !permanent.getControllerId().equals(this.getControllerId()) && permanent.getCardType().contains(CardType.CREATURE)) {
|
||||
Card card = (Card)game.getObject(permanent.getId());
|
||||
Card card = (Card) game.getObject(permanent.getId());
|
||||
if (card != null) {
|
||||
Effect effect = new GraveBetrayalEffect();
|
||||
effect.setTargetPointer(new FixedTarget(card.getId()));
|
||||
Integer zoneChanges = card.getZoneChangeCounter(game);
|
||||
effect.setValue("zoneChanges", zoneChanges);
|
||||
|
||||
effect.setTargetPointer(new FixedTarget(card.getId(), card.getZoneChangeCounter(game)));
|
||||
DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(effect);
|
||||
delayedAbility.setSourceId(this.getSourceId());
|
||||
delayedAbility.setControllerId(this.getControllerId());
|
||||
|
@ -153,17 +147,14 @@ class GraveBetrayalEffect extends OneShotEffect {
|
|||
public boolean apply(Game game, Ability source) {
|
||||
Card card = game.getCard(targetPointer.getFirst(game, source));
|
||||
if (card != null) {
|
||||
Integer zoneChanges = (Integer) getValue("zoneChanges");
|
||||
if (card.getZoneChangeCounter(game) == zoneChanges) {
|
||||
Zone currentZone = game.getState().getZone(card.getId());
|
||||
if (card.putOntoBattlefield(game, currentZone, source.getSourceId(), source.getControllerId())) {
|
||||
Permanent creature = game.getPermanent(card.getId());
|
||||
creature.addCounters(CounterType.P1P1.createInstance(), game);
|
||||
ContinuousEffect effect = new GraveBetrayalContiniousEffect();
|
||||
effect.setTargetPointer(new FixedTarget(creature.getId()));
|
||||
game.addEffect(effect, source);
|
||||
return true;
|
||||
}
|
||||
Zone currentZone = game.getState().getZone(card.getId());
|
||||
if (card.putOntoBattlefield(game, currentZone, source.getSourceId(), source.getControllerId())) {
|
||||
Permanent creature = game.getPermanent(card.getId());
|
||||
creature.addCounters(CounterType.P1P1.createInstance(), game);
|
||||
ContinuousEffect effect = new GraveBetrayalContiniousEffect();
|
||||
effect.setTargetPointer(new FixedTarget(creature.getId()));
|
||||
game.addEffect(effect, source);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
@ -220,4 +211,4 @@ class GraveBetrayalContiniousEffect extends ContinuousEffectImpl {
|
|||
return layer == Layer.ColorChangingEffects_5 || layer == Layer.TypeChangingEffects_4;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,15 +25,11 @@
|
|||
* authors and should not be interpreted as representing official policies, either expressed
|
||||
* or implied, of BetaSteward_at_googlemail.com.
|
||||
*/
|
||||
|
||||
package mage.sets.scarsofmirrodin;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Rarity;
|
||||
import mage.constants.Zone;
|
||||
import mage.MageInt;
|
||||
import mage.MageObject;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility;
|
||||
|
@ -43,7 +39,10 @@ import mage.abilities.effects.OneShotEffect;
|
|||
import mage.abilities.effects.common.ReturnFromExileEffect;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.Rarity;
|
||||
import mage.constants.Zone;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
|
||||
|
@ -53,7 +52,7 @@ import mage.game.permanent.Permanent;
|
|||
*/
|
||||
public class ArgentSphinx extends CardImpl {
|
||||
|
||||
public ArgentSphinx (UUID ownerId) {
|
||||
public ArgentSphinx(UUID ownerId) {
|
||||
super(ownerId, 28, "Argent Sphinx", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{2}{U}{U}");
|
||||
this.expansionSetCode = "SOM";
|
||||
this.subtype.add("Sphinx");
|
||||
|
@ -66,7 +65,7 @@ public class ArgentSphinx extends CardImpl {
|
|||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
public ArgentSphinx (final ArgentSphinx card) {
|
||||
public ArgentSphinx(final ArgentSphinx card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
|
@ -81,7 +80,7 @@ class ArgentSphinxEffect extends OneShotEffect {
|
|||
|
||||
private static final String effectText = "Exile {this}. Return it to the battlefield under your control at the beginning of the next end step";
|
||||
|
||||
ArgentSphinxEffect ( ) {
|
||||
ArgentSphinxEffect() {
|
||||
super(Outcome.Benefit);
|
||||
staticText = effectText;
|
||||
}
|
||||
|
@ -93,10 +92,13 @@ class ArgentSphinxEffect extends OneShotEffect {
|
|||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Permanent permanent = game.getPermanent(source.getSourceId());
|
||||
if (permanent != null) {
|
||||
if (permanent.moveToExile(source.getSourceId(), "Argent Sphinx Exile", source.getSourceId(), game)) {
|
||||
MageObject sourceObject = game.getObject(source.getSourceId());
|
||||
if (permanent != null && sourceObject != null) {
|
||||
if (permanent.moveToExile(source.getSourceId(), sourceObject.getIdName(), source.getSourceId(), game)) {
|
||||
//create delayed triggered ability
|
||||
AtTheBeginOfNextEndStepDelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(new ReturnFromExileEffect(source.getSourceId(), Zone.BATTLEFIELD));
|
||||
AtTheBeginOfNextEndStepDelayedTriggeredAbility delayedAbility
|
||||
= new AtTheBeginOfNextEndStepDelayedTriggeredAbility(
|
||||
new ReturnFromExileEffect(source.getSourceId(), Zone.BATTLEFIELD));
|
||||
delayedAbility.setSourceId(source.getSourceId());
|
||||
delayedAbility.setControllerId(source.getControllerId());
|
||||
delayedAbility.setSourceObject(source.getSourceObject(game), game);
|
||||
|
|
|
@ -25,7 +25,6 @@
|
|||
* authors and should not be interpreted as representing official policies, either expressed
|
||||
* or implied, of BetaSteward_at_googlemail.com.
|
||||
*/
|
||||
|
||||
package mage.sets.scarsofmirrodin;
|
||||
|
||||
import java.util.UUID;
|
||||
|
@ -81,8 +80,6 @@ public class VenserTheSojourner extends CardImpl {
|
|||
this.expansionSetCode = "SOM";
|
||||
this.subtype.add("Venser");
|
||||
|
||||
|
||||
|
||||
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(3)), false));
|
||||
|
||||
// +2: Exile target permanent you own. Return it to the battlefield under your control at the beginning of the next end step.
|
||||
|
@ -131,7 +128,7 @@ class VenserTheSojournerEffect extends OneShotEffect {
|
|||
if (getTargetPointer().getFirst(game, source) != null) {
|
||||
Permanent permanent = game.getPermanent(getTargetPointer().getFirst(game, source));
|
||||
if (permanent != null) {
|
||||
if (controller.moveCardToExileWithInfo(permanent, source.getSourceId(), sourceObject.getName(), source.getSourceId(), game, Zone.BATTLEFIELD, true)) {
|
||||
if (controller.moveCardToExileWithInfo(permanent, source.getSourceId(), sourceObject.getIdName(), source.getSourceId(), game, Zone.BATTLEFIELD, true)) {
|
||||
//create delayed triggered ability
|
||||
AtTheBeginOfNextEndStepDelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(new ReturnFromExileEffect(source.getSourceId(), Zone.BATTLEFIELD));
|
||||
delayedAbility.setSourceId(source.getSourceId());
|
||||
|
@ -174,7 +171,8 @@ class VenserTheSojournerSpellCastTriggeredAbility extends TriggeredAbilityImpl {
|
|||
protected FilterSpell filter;
|
||||
|
||||
/**
|
||||
* If true, the source that triggered the ability will be set as target to effect.
|
||||
* If true, the source that triggered the ability will be set as target to
|
||||
* effect.
|
||||
*/
|
||||
protected boolean rememberSource = false;
|
||||
|
||||
|
|
Loading…
Reference in a new issue