diff --git a/Mage.Sets/src/mage/sets/conflux/QuenchableFire.java b/Mage.Sets/src/mage/sets/conflux/QuenchableFire.java
index 9b7f9cdaf3..7338637ae0 100644
--- a/Mage.Sets/src/mage/sets/conflux/QuenchableFire.java
+++ b/Mage.Sets/src/mage/sets/conflux/QuenchableFire.java
@@ -29,6 +29,7 @@
package mage.sets.conflux;
import java.util.UUID;
+import mage.MageObject;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.Rarity;
@@ -36,6 +37,7 @@ import mage.abilities.Ability;
import mage.abilities.DelayedTriggeredAbility;
import mage.abilities.SpecialAction;
import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.RemoveDelayedTriggeredAbilityEffect;
@@ -78,7 +80,8 @@ class QuenchableFireEffect extends OneShotEffect {
public QuenchableFireEffect() {
super(Outcome.Damage);
- staticText = "{this} deals an additional 3 damage to that player at the beginning of your next upkeep step unless he or she pays {U} before that step";
+ staticText = "{this} deals an additional 3 damage to that player at the beginning of your next upkeep step unless he or she pays {U} before that step."
+ + "
Use the Special button to pay the {U} with a special action before the beginning of your next upkeep step.";
}
public QuenchableFireEffect(final QuenchableFireEffect effect) {
@@ -92,22 +95,34 @@ class QuenchableFireEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
- //create delayed triggered ability
- QuenchableFireDelayedTriggeredAbility delayedAbility = new QuenchableFireDelayedTriggeredAbility();
- delayedAbility.setSourceId(source.getSourceId());
- delayedAbility.setControllerId(source.getControllerId());
- delayedAbility.setSourceObject(source.getSourceObject(game), game);
- delayedAbility.getTargets().addAll(source.getTargets());
- game.addDelayedTriggeredAbility(delayedAbility);
+ MageObject sourceObject = source.getSourceObject(game);
+ if (sourceObject != null) {
+
+ //create special action
+ QuenchableFireSpecialAction newAction = new QuenchableFireSpecialAction();
- //create special action
- QuenchableFireSpecialAction newAction = new QuenchableFireSpecialAction(delayedAbility.getId());
- delayedAbility.setSpecialActionId(newAction.getId());
- newAction.setSourceId(source.getSourceId());
- newAction.setControllerId(source.getFirstTarget());
- newAction.getTargets().addAll(source.getTargets());
- game.getState().getSpecialActions().add(newAction);
- return true;
+ //create delayed triggered ability
+ QuenchableFireDelayedTriggeredAbility delayedAbility = new QuenchableFireDelayedTriggeredAbility();
+ delayedAbility.setSourceId(source.getSourceId());
+ delayedAbility.setControllerId(source.getControllerId());
+ delayedAbility.setSourceObject(sourceObject, game);
+ delayedAbility.getTargets().addAll(source.getTargets());
+ delayedAbility.setSpecialActionId(newAction.getId());
+ UUID delayedAbilityId = game.addDelayedTriggeredAbility(delayedAbility);
+
+ // update special action
+ newAction.addCost(new ManaCostsImpl("{U}"));
+ Effect effect = new RemoveDelayedTriggeredAbilityEffect(delayedAbilityId);
+ newAction.addEffect(effect);
+ effect.setText(sourceObject.getIdName() + " - Pay {U} to remove the triggered ability that deals 3 damage to you at the beginning of your next upkeep step");
+ newAction.addEffect(new RemoveSpecialActionEffect(newAction.getId()));
+ newAction.setSourceId(source.getSourceId());
+ newAction.setControllerId(source.getFirstTarget());
+ newAction.getTargets().addAll(source.getTargets());
+ game.getState().getSpecialActions().add(newAction);
+ return true;
+ }
+ return false;
}
}
@@ -151,11 +166,8 @@ class QuenchableFireDelayedTriggeredAbility extends DelayedTriggeredAbility {
class QuenchableFireSpecialAction extends SpecialAction {
- public QuenchableFireSpecialAction(UUID effectId) {
+ public QuenchableFireSpecialAction() {
super();
- this.addCost(new ManaCostsImpl("{U}"));
- this.addEffect(new RemoveDelayedTriggeredAbilityEffect(effectId));
- this.addEffect(new RemoveSpecialActionEffect(this.getId()));
}
public QuenchableFireSpecialAction(final QuenchableFireSpecialAction ability) {
diff --git a/Mage/src/mage/game/Game.java b/Mage/src/mage/game/Game.java
index 3743aae59c..40c78f0512 100644
--- a/Mage/src/mage/game/Game.java
+++ b/Mage/src/mage/game/Game.java
@@ -253,7 +253,7 @@ public interface Game extends MageItem, Serializable {
Card copyCard(Card cardToCopy, Ability source, UUID newController);
void addTriggeredAbility(TriggeredAbility ability);
- void addDelayedTriggeredAbility(DelayedTriggeredAbility delayedAbility);
+ UUID addDelayedTriggeredAbility(DelayedTriggeredAbility delayedAbility);
void applyEffects();
boolean checkStateAndTriggered();
void playPriority(UUID activePlayerId, boolean resuming);
diff --git a/Mage/src/mage/game/GameImpl.java b/Mage/src/mage/game/GameImpl.java
index 23561b3425..505bfa8c0f 100644
--- a/Mage/src/mage/game/GameImpl.java
+++ b/Mage/src/mage/game/GameImpl.java
@@ -1383,11 +1383,12 @@ public abstract class GameImpl implements Game, Serializable {
}
@Override
- public void addDelayedTriggeredAbility(DelayedTriggeredAbility delayedAbility) {
+ public UUID addDelayedTriggeredAbility(DelayedTriggeredAbility delayedAbility) {
DelayedTriggeredAbility newAbility = delayedAbility.copy();
newAbility.newId();
newAbility.init(this);
state.addDelayedTriggeredAbility(newAbility);
+ return newAbility.getId();
}
/**