Fix Vapor Snare effect (#10188)

* Fix Vapor Snare and refactor "unless you return a land" effects to use correct static filter

* Fix capitalization of return to hand cost

* Fix capitalization of sacrifice unless pays effect
This commit is contained in:
xenohedron 2023-04-20 18:22:59 -04:00 committed by GitHub
parent 639106ad19
commit 68b3fc80e9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 28 additions and 84 deletions

View file

@ -26,7 +26,7 @@ public class ReturnToHandChosenControlledPermanentCost extends CostImpl {
target.setNotTarget(true);
this.addTarget(target);
if (target.getMaxNumberOfTargets() > 1 && target.getMaxNumberOfTargets() == target.getNumberOfTargets()) {
this.text = "Return " + CardUtil.numberToText(target.getMaxNumberOfTargets()) + ' '
this.text = "return " + CardUtil.numberToText(target.getMaxNumberOfTargets()) + ' '
+ target.getTargetName()
+ (target.getTargetName().endsWith(" you control") ? "" : " you control")
+ " to their owner's hand";

View file

@ -57,20 +57,26 @@ public class SacrificeSourceUnlessPaysEffect extends OneShotEffect {
costValueMessage = "{" + genericMana.calculate(game, source, this) + "}";
}
String message = "";
String logMessage = "";
if (costToPay instanceof ManaCost) {
message += "Pay ";
message += "Pay " + costValueMessage;
logMessage += "pay " + costValueMessage;
}
message += costValueMessage + '?';
else if (costValueMessage.length() > 1) {
message += costValueMessage.substring(0,1).toUpperCase() + costValueMessage.substring(1);
logMessage += costValueMessage;
}
message += '?';
costToPay.clearPaid();
if (costToPay.canPay(source, source, source.getControllerId(), game)
&& player.chooseUse(Outcome.Benefit, message, source, game)
&& costToPay.pay(source, game, source, source.getControllerId(), false, null)) {
game.informPlayers(player.getLogName() + " chooses to pay " + costValueMessage + " to prevent sacrifice effect");
game.informPlayers(player.getLogName() + " chooses to " + logMessage + " to prevent sacrifice effect");
return true;
}
game.informPlayers(player.getLogName() + " chooses not to pay " + costValueMessage + " to prevent sacrifice effect");
game.informPlayers(player.getLogName() + " chooses not to " + logMessage + " to prevent sacrifice effect");
if (source.getSourceObjectZoneChangeCounter() == game.getState().getZoneChangeCounter(source.getSourceId())
&& game.getState().getZone(source.getSourceId()) == Zone.BATTLEFIELD) {
sourcePermanent.sacrifice(source, game);