Fix Piracy mana restriction

This commit is contained in:
Alumi
2021-03-20 08:37:59 +00:00
committed by Hans Mackowiak
parent cd3a4da41d
commit 9c11c90f48
4 changed files with 7 additions and 3 deletions

View File

@@ -259,7 +259,7 @@ public final class GameActionUtil {
if (sa.isManaAbility() && sa.isActivatedAbility() && activator.hasKeyword("Piracy") && source.isLand() && source.isInPlay() && !activator.equals(source.getController()) && sa.getPayCosts().hasTapCost()) {
SpellAbility newSA = sa.copy(activator);
// to bypass Activator restriction, set Activator to Player
sa.getRestrictions().setActivator("Player");
newSA.getRestrictions().setActivator("Player");
// extra Mana restriction to only Spells
for (AbilityManaPart mp : newSA.getAllManaParts()) {

View File

@@ -61,7 +61,7 @@ public class Mana {
return false;
}
return mp == mp2 || mp.getManaRestrictions().equals(mp2.getManaRestrictions());
return mp == mp2 || (mp.getManaRestrictions().equals(mp2.getManaRestrictions()) && mp.getExtraManaRestriction().equals(mp2.getExtraManaRestriction()));
}
private byte color;
@@ -84,7 +84,7 @@ public class Mana {
}
public final boolean isRestricted() {
return this.manaAbility != null && !manaAbility.getManaRestrictions().isEmpty();
return this.manaAbility != null && (!manaAbility.getManaRestrictions().isEmpty() || !manaAbility.getExtraManaRestriction().isEmpty());
}

View File

@@ -276,6 +276,10 @@ public class AbilityManaPart implements java.io.Serializable {
this.extraManaRestrictions = str;
}
public String getExtraManaRestriction() {
return extraManaRestrictions;
}
public boolean meetsManaRestrictions(final SpellAbility sa) {
return meetsManaRestrictions(sa, this.manaRestrictions) && meetsManaRestrictions(sa, this.extraManaRestrictions);
}