mirror of
https://github.com/correl/mage.git
synced 2024-12-25 03:00:15 +00:00
* Mortal Obstinacy - Mortal Obstinacy was not sacrificed as the triggered effect was used. Decision to sacrifice Mortal Obstinacy takes place now during resolution instead of while ability goes to stack.
This commit is contained in:
parent
a1cfd040d7
commit
63a083ef0d
3 changed files with 10 additions and 18 deletions
|
@ -31,8 +31,10 @@ import java.util.UUID;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.TriggeredAbilityImpl;
|
import mage.abilities.TriggeredAbilityImpl;
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
|
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||||
import mage.abilities.effects.common.AttachEffect;
|
import mage.abilities.effects.common.AttachEffect;
|
||||||
import mage.abilities.effects.common.DestroyTargetEffect;
|
import mage.abilities.effects.common.DestroyTargetEffect;
|
||||||
|
import mage.abilities.effects.common.DoIfCostPaid;
|
||||||
import mage.abilities.effects.common.continious.BoostEnchantedEffect;
|
import mage.abilities.effects.common.continious.BoostEnchantedEffect;
|
||||||
import mage.abilities.keyword.EnchantAbility;
|
import mage.abilities.keyword.EnchantAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
|
@ -45,7 +47,6 @@ import mage.game.Game;
|
||||||
import mage.game.events.DamagedPlayerEvent;
|
import mage.game.events.DamagedPlayerEvent;
|
||||||
import mage.game.events.GameEvent;
|
import mage.game.events.GameEvent;
|
||||||
import mage.game.permanent.Permanent;
|
import mage.game.permanent.Permanent;
|
||||||
import mage.players.Player;
|
|
||||||
import mage.target.TargetPermanent;
|
import mage.target.TargetPermanent;
|
||||||
import mage.target.common.TargetControlledCreaturePermanent;
|
import mage.target.common.TargetControlledCreaturePermanent;
|
||||||
import mage.target.common.TargetEnchantmentPermanent;
|
import mage.target.common.TargetEnchantmentPermanent;
|
||||||
|
@ -90,7 +91,8 @@ public class MortalObstinacy extends CardImpl<MortalObstinacy> {
|
||||||
class MortalObstinacyAbility extends TriggeredAbilityImpl<MortalObstinacyAbility> {
|
class MortalObstinacyAbility extends TriggeredAbilityImpl<MortalObstinacyAbility> {
|
||||||
|
|
||||||
public MortalObstinacyAbility() {
|
public MortalObstinacyAbility() {
|
||||||
super(Zone.BATTLEFIELD, new DestroyTargetEffect());
|
super(Zone.BATTLEFIELD, new DoIfCostPaid(new DestroyTargetEffect(), new SacrificeSourceCost()));
|
||||||
|
addTarget(new TargetEnchantmentPermanent(true));
|
||||||
}
|
}
|
||||||
|
|
||||||
public MortalObstinacyAbility(final MortalObstinacyAbility ability) {
|
public MortalObstinacyAbility(final MortalObstinacyAbility ability) {
|
||||||
|
@ -108,18 +110,7 @@ class MortalObstinacyAbility extends TriggeredAbilityImpl<MortalObstinacyAbility
|
||||||
DamagedPlayerEvent damageEvent = (DamagedPlayerEvent)event;
|
DamagedPlayerEvent damageEvent = (DamagedPlayerEvent)event;
|
||||||
Permanent damageMakingCreature = game.getPermanent(event.getSourceId());
|
Permanent damageMakingCreature = game.getPermanent(event.getSourceId());
|
||||||
if (damageEvent.isCombatDamage() && damageMakingCreature != null && damageMakingCreature.getAttachments().contains(this.getSourceId())) {
|
if (damageEvent.isCombatDamage() && damageMakingCreature != null && damageMakingCreature.getAttachments().contains(this.getSourceId())) {
|
||||||
Player controller = game.getPlayer(this.getControllerId());
|
return true;
|
||||||
Permanent sourceEnchantment = game.getPermanent(this.getSourceId());
|
|
||||||
if (controller != null && sourceEnchantment != null) {
|
|
||||||
StringBuilder sb = new StringBuilder();
|
|
||||||
sb.append("Do you wish to sacrifice ").append(sourceEnchantment.getName());
|
|
||||||
sb.append(" to destroy target enchantment?");
|
|
||||||
if (controller.chooseUse(Outcome.DestroyPermanent, sb.toString(), game)) {
|
|
||||||
this.getTargets().clear();
|
|
||||||
this.addTarget(new TargetEnchantmentPermanent(true));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@ -127,6 +118,7 @@ class MortalObstinacyAbility extends TriggeredAbilityImpl<MortalObstinacyAbility
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getRule() {
|
public String getRule() {
|
||||||
return "Whenever enchanted creature deals combat damage to a player, you may sacrifice {this}. If you do, destroy target enchantment.";
|
return new StringBuilder("Whenever enchanted creature deals combat damage to a player, ").append(super.getRule()).toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,7 @@ public class DoIfCostPaid extends OneShotEffect<DoIfCostPaid> {
|
||||||
message = chooseUseText;
|
message = chooseUseText;
|
||||||
}
|
}
|
||||||
message = CardUtil.replaceSourceName(message, mageObject.getName());
|
message = CardUtil.replaceSourceName(message, mageObject.getName());
|
||||||
if (player.chooseUse(executingEffect.getOutcome(), message, game)) {
|
if (cost.canPay(source.getSourceId(), player.getId(), game) && player.chooseUse(executingEffect.getOutcome(), message, game)) {
|
||||||
cost.clearPaid();
|
cost.clearPaid();
|
||||||
if (cost.pay(source, game, source.getSourceId(), source.getControllerId(), false)) {
|
if (cost.pay(source, game, source.getSourceId(), source.getControllerId(), false)) {
|
||||||
executingEffect.setTargetPointer(this.targetPointer);
|
executingEffect.setTargetPointer(this.targetPointer);
|
||||||
|
|
|
@ -24,7 +24,7 @@ You will need to have the [Java Runtime Environment](http://java.com/en/) Versio
|
||||||
|
|
||||||
Here you can find a log of the latest changes: [Release changes] (http://github.com/magefree/mage/wiki/Release-changes)
|
Here you can find a log of the latest changes: [Release changes] (http://github.com/magefree/mage/wiki/Release-changes)
|
||||||
|
|
||||||
(looke here for more in detail description what to do: http://www.slightlymagic.net/forum/viewtopic.php?f=70&t=13632)
|
(look here for more in detail description what to do: http://www.slightlymagic.net/forum/viewtopic.php?f=70&t=13632)
|
||||||
|
|
||||||
## Developer
|
## Developer
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue