[BRO] Implemented Urza, Lord Protector / Urza, Planeswalker

This commit is contained in:
Evan Kranzler 2022-09-30 22:02:38 -04:00
parent 5fa9a850b1
commit 9706274141
7 changed files with 241 additions and 3 deletions

View file

@ -478,7 +478,7 @@ public enum SubType {
TIBALT("Tibalt", SubTypeSet.PlaneswalkerType),
TYVAR("Tyvar", SubTypeSet.PlaneswalkerType),
UGIN("Ugin", SubTypeSet.PlaneswalkerType),
URZA("Urza", SubTypeSet.PlaneswalkerType, true), // Unstable
URZA("Urza", SubTypeSet.PlaneswalkerType),
VENSER("Venser", SubTypeSet.PlaneswalkerType),
VIVIEN("Vivien", SubTypeSet.PlaneswalkerType),
VRASKA("Vraska", SubTypeSet.PlaneswalkerType),

View file

@ -214,6 +214,8 @@ public interface Permanent extends Card, Controllable {
void removeAbilities(List<Ability> abilitiesToRemove, UUID sourceId, Game game);
void incrementLoyaltyActivationsAvailable();
void addLoyaltyUsed();
boolean canLoyaltyBeUsed(Game game);

View file

@ -102,6 +102,7 @@ public abstract class PermanentImpl extends CardImpl implements Permanent {
protected List<MarkedDamageInfo> markedDamage;
protected int markedLifelink;
protected int timesLoyaltyUsed = 0;
protected int loyaltyActivationsAvailable = 1;
protected int transformCount = 0;
protected Map<String, String> info;
protected int createOrder;
@ -169,6 +170,7 @@ public abstract class PermanentImpl extends CardImpl implements Permanent {
this.pairedPermanent = permanent.pairedPermanent;
this.bandedCards.addAll(permanent.bandedCards);
this.timesLoyaltyUsed = permanent.timesLoyaltyUsed;
this.loyaltyActivationsAvailable = permanent.loyaltyActivationsAvailable;
this.transformCount = permanent.transformCount;
this.morphed = permanent.morphed;
@ -211,6 +213,7 @@ public abstract class PermanentImpl extends CardImpl implements Permanent {
this.maxBlockedBy = 0;
this.copy = false;
this.goadingPlayers.clear();
this.loyaltyActivationsAvailable = 1;
}
@Override
@ -462,6 +465,11 @@ public abstract class PermanentImpl extends CardImpl implements Permanent {
}
}
@Override
public void incrementLoyaltyActivationsAvailable() {
this.loyaltyActivationsAvailable++;
}
@Override
public void addLoyaltyUsed() {
this.timesLoyaltyUsed++;
@ -471,7 +479,7 @@ public abstract class PermanentImpl extends CardImpl implements Permanent {
public boolean canLoyaltyBeUsed(Game game) {
Player controller = game.getPlayer(controllerId);
if (controller != null) {
return controller.getLoyaltyUsePerTurn() > timesLoyaltyUsed;
return Math.max(controller.getLoyaltyUsePerTurn(), loyaltyActivationsAvailable) > timesLoyaltyUsed;
}
return false;
}

View file

@ -0,0 +1,33 @@
package mage.game.permanent.token;
import mage.MageInt;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
/**
* @author TheElk801
*/
public final class SoldierArtifactToken extends TokenImpl {
public SoldierArtifactToken() {
super("Soldier Token", "1/1 colorless Soldier artifact creature token");
cardType.add(CardType.ARTIFACT);
cardType.add(CardType.CREATURE);
subtype.add(SubType.SOLDIER);
power = new MageInt(1);
toughness = new MageInt(1);
availableImageSetCodes = Arrays.asList("BRO");
}
public SoldierArtifactToken(final SoldierArtifactToken token) {
super(token);
}
public SoldierArtifactToken copy() {
return new SoldierArtifactToken(this);
}
}