mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 03:38:01 +00:00
Merge branch 'master' of https://git.cardforge.org/core-developers/forge into ui-card-translation
This commit is contained in:
@@ -1339,7 +1339,7 @@ public class ChangeZoneAi extends SpellAbilityAi {
|
|||||||
});
|
});
|
||||||
for (Card pw : aiPlaneswalkers) {
|
for (Card pw : aiPlaneswalkers) {
|
||||||
int curLoyalty = pw.getCounters(CounterType.LOYALTY);
|
int curLoyalty = pw.getCounters(CounterType.LOYALTY);
|
||||||
int freshLoyalty = pw.getCurrentState().getBaseLoyalty();
|
int freshLoyalty = Integer.valueOf(pw.getCurrentState().getBaseLoyalty());
|
||||||
if (freshLoyalty - curLoyalty >= loyaltyDiff && curLoyalty <= maxLoyaltyToConsider) {
|
if (freshLoyalty - curLoyalty >= loyaltyDiff && curLoyalty <= maxLoyaltyToConsider) {
|
||||||
return pw;
|
return pw;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ final class CardFace implements ICardFace {
|
|||||||
private int iToughness = Integer.MAX_VALUE;
|
private int iToughness = Integer.MAX_VALUE;
|
||||||
private String power = null;
|
private String power = null;
|
||||||
private String toughness = null;
|
private String toughness = null;
|
||||||
private int initialLoyalty = -1;
|
private String initialLoyalty = "";
|
||||||
|
|
||||||
private String nonAbilityText = null;
|
private String nonAbilityText = null;
|
||||||
private List<String> keywords = null;
|
private List<String> keywords = null;
|
||||||
@@ -56,7 +56,7 @@ final class CardFace implements ICardFace {
|
|||||||
@Override public int getIntToughness() { return iToughness; }
|
@Override public int getIntToughness() { return iToughness; }
|
||||||
@Override public String getPower() { return power; }
|
@Override public String getPower() { return power; }
|
||||||
@Override public String getToughness() { return toughness; }
|
@Override public String getToughness() { return toughness; }
|
||||||
@Override public int getInitialLoyalty() { return initialLoyalty; }
|
@Override public String getInitialLoyalty() { return initialLoyalty; }
|
||||||
@Override public String getName() { return this.name; }
|
@Override public String getName() { return this.name; }
|
||||||
@Override public CardType getType() { return this.type; }
|
@Override public CardType getType() { return this.type; }
|
||||||
@Override public ManaCost getManaCost() { return this.manaCost; }
|
@Override public ManaCost getManaCost() { return this.manaCost; }
|
||||||
@@ -84,7 +84,7 @@ final class CardFace implements ICardFace {
|
|||||||
void setManaCost(ManaCost manaCost0) { this.manaCost = manaCost0; }
|
void setManaCost(ManaCost manaCost0) { this.manaCost = manaCost0; }
|
||||||
void setColor(ColorSet color0) { this.color = color0; }
|
void setColor(ColorSet color0) { this.color = color0; }
|
||||||
void setOracleText(String text) { this.oracleText = text; }
|
void setOracleText(String text) { this.oracleText = text; }
|
||||||
void setInitialLoyalty(int value) { this.initialLoyalty = value; }
|
void setInitialLoyalty(String value) { this.initialLoyalty = value; }
|
||||||
|
|
||||||
void setPtText(String value) {
|
void setPtText(String value) {
|
||||||
final String k[] = value.split("/");
|
final String k[] = value.split("/");
|
||||||
|
|||||||
@@ -186,7 +186,7 @@ public final class CardRules implements ICardCharacteristics {
|
|||||||
@Override public int getIntToughness() { return mainPart.getIntToughness(); }
|
@Override public int getIntToughness() { return mainPart.getIntToughness(); }
|
||||||
@Override public String getPower() { return mainPart.getPower(); }
|
@Override public String getPower() { return mainPart.getPower(); }
|
||||||
@Override public String getToughness() { return mainPart.getToughness(); }
|
@Override public String getToughness() { return mainPart.getToughness(); }
|
||||||
@Override public int getInitialLoyalty() { return mainPart.getInitialLoyalty(); }
|
@Override public String getInitialLoyalty() { return mainPart.getInitialLoyalty(); }
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getOracleText() {
|
public String getOracleText() {
|
||||||
@@ -409,7 +409,7 @@ public final class CardRules implements ICardCharacteristics {
|
|||||||
|
|
||||||
case 'L':
|
case 'L':
|
||||||
if ("Loyalty".equals(key)) {
|
if ("Loyalty".equals(key)) {
|
||||||
this.faces[this.curFace].setInitialLoyalty(Integer.valueOf(value));
|
this.faces[this.curFace].setInitialLoyalty(value);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ public interface ICardCharacteristics {
|
|||||||
int getIntToughness();
|
int getIntToughness();
|
||||||
String getPower();
|
String getPower();
|
||||||
String getToughness();
|
String getToughness();
|
||||||
int getInitialLoyalty();
|
String getInitialLoyalty();
|
||||||
|
|
||||||
String getOracleText();
|
String getOracleText();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -376,6 +376,9 @@ public class GameAction {
|
|||||||
copied.clearEtbCounters();
|
copied.clearEtbCounters();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// update state for view
|
||||||
|
copied.updateStateForView();
|
||||||
|
|
||||||
if (fromBattlefield) {
|
if (fromBattlefield) {
|
||||||
c.setDamage(0); //clear damage after a card leaves the battlefield
|
c.setDamage(0); //clear damage after a card leaves the battlefield
|
||||||
c.setHasBeenDealtDeathtouchDamage(false);
|
c.setHasBeenDealtDeathtouchDamage(false);
|
||||||
|
|||||||
@@ -539,8 +539,7 @@ public class Card extends GameEntity implements Comparable<Card> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public final void updatePowerToughnessForView() {
|
public final void updatePowerToughnessForView() {
|
||||||
currentState.getView().updatePower(this);
|
view.updateCounters(this);
|
||||||
currentState.getView().updateToughness(this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void updateTypesForView() {
|
public final void updateTypesForView() {
|
||||||
|
|||||||
@@ -325,9 +325,6 @@ public class CardFactory {
|
|||||||
|
|
||||||
// ******************************************************************
|
// ******************************************************************
|
||||||
// ************** Link to different CardFactories *******************
|
// ************** Link to different CardFactories *******************
|
||||||
if (card.isPlaneswalker()) {
|
|
||||||
buildPlaneswalkerAbilities(card);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (state == CardStateName.LeftSplit || state == CardStateName.RightSplit) {
|
if (state == CardStateName.LeftSplit || state == CardStateName.RightSplit) {
|
||||||
for (final SpellAbility sa : card.getSpellAbilities()) {
|
for (final SpellAbility sa : card.getSpellAbilities()) {
|
||||||
@@ -383,18 +380,6 @@ public class CardFactory {
|
|||||||
card.addSpellAbility(planarRoll);
|
card.addSpellAbility(planarRoll);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void buildPlaneswalkerAbilities(Card card) {
|
|
||||||
CardState state = card.getCurrentState();
|
|
||||||
// etbCounter only for Original Card
|
|
||||||
if (state.getBaseLoyalty() > 0) {
|
|
||||||
final String loyalty = Integer.toString(state.getBaseLoyalty());
|
|
||||||
// keyword need to be added to state directly, so init can be disabled
|
|
||||||
if (state.addIntrinsicKeyword("etbCounter:LOYALTY:" + loyalty + ":no Condition:no desc", false) != null) {
|
|
||||||
card.updateKeywords();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static Card readCard(final CardRules rules, final IPaperCard paperCard, int cardId, Game game) {
|
private static Card readCard(final CardRules rules, final IPaperCard paperCard, int cardId, Game game) {
|
||||||
final Card card = new Card(cardId, paperCard, game);
|
final Card card = new Card(cardId, paperCard, game);
|
||||||
|
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ public class CardState extends GameObject {
|
|||||||
private byte color = MagicColor.COLORLESS;
|
private byte color = MagicColor.COLORLESS;
|
||||||
private int basePower = 0;
|
private int basePower = 0;
|
||||||
private int baseToughness = 0;
|
private int baseToughness = 0;
|
||||||
private int baseLoyalty = 0;
|
private String baseLoyalty = "";
|
||||||
private KeywordCollection intrinsicKeywords = new KeywordCollection();
|
private KeywordCollection intrinsicKeywords = new KeywordCollection();
|
||||||
|
|
||||||
private final FCollection<SpellAbility> nonManaAbilities = new FCollection<SpellAbility>();
|
private final FCollection<SpellAbility> nonManaAbilities = new FCollection<SpellAbility>();
|
||||||
@@ -72,6 +72,8 @@ public class CardState extends GameObject {
|
|||||||
private final CardStateView view;
|
private final CardStateView view;
|
||||||
private final Card card;
|
private final Card card;
|
||||||
|
|
||||||
|
private ReplacementEffect loyaltyRep = null;
|
||||||
|
|
||||||
public CardState(Card card, CardStateName name) {
|
public CardState(Card card, CardStateName name) {
|
||||||
this(card.getView().createAlternateState(name), card);
|
this(card.getView().createAlternateState(name), card);
|
||||||
}
|
}
|
||||||
@@ -174,11 +176,11 @@ public class CardState extends GameObject {
|
|||||||
view.updateToughness(this);
|
view.updateToughness(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getBaseLoyalty() {
|
public String getBaseLoyalty() {
|
||||||
return baseLoyalty;
|
return baseLoyalty;
|
||||||
}
|
}
|
||||||
public final void setBaseLoyalty(final int loyalty) {
|
public final void setBaseLoyalty(final String string) {
|
||||||
baseLoyalty = loyalty;
|
baseLoyalty = string;
|
||||||
view.updateLoyalty(this);
|
view.updateLoyalty(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -400,6 +402,14 @@ public class CardState extends GameObject {
|
|||||||
|
|
||||||
public FCollectionView<ReplacementEffect> getReplacementEffects() {
|
public FCollectionView<ReplacementEffect> getReplacementEffects() {
|
||||||
FCollection<ReplacementEffect> result = new FCollection<>(replacementEffects);
|
FCollection<ReplacementEffect> result = new FCollection<>(replacementEffects);
|
||||||
|
|
||||||
|
if (getTypeWithChanges().isPlaneswalker()) {
|
||||||
|
if (loyaltyRep == null) {
|
||||||
|
loyaltyRep = CardFactoryUtil.makeEtbCounter("etbCounter:LOYALTY:" + this.baseLoyalty, card, true);
|
||||||
|
}
|
||||||
|
result.add(loyaltyRep);
|
||||||
|
}
|
||||||
|
|
||||||
card.updateReplacementEffects(result, this);
|
card.updateReplacementEffects(result, this);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -678,6 +678,8 @@ public class CardView extends GameEntityView {
|
|||||||
if (c.getGame() != null) {
|
if (c.getGame() != null) {
|
||||||
currentStateView.updateColors(currentState);
|
currentStateView.updateColors(currentState);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
currentStateView.updateLoyalty(currentState);
|
||||||
}
|
}
|
||||||
currentState.getView().updateKeywords(c, currentState); //update keywords even if state doesn't change
|
currentState.getView().updateKeywords(c, currentState); //update keywords even if state doesn't change
|
||||||
|
|
||||||
@@ -704,6 +706,8 @@ public class CardView extends GameEntityView {
|
|||||||
if (c.getGame() != null) {
|
if (c.getGame() != null) {
|
||||||
alternateStateView.updateColors(alternateState);
|
alternateStateView.updateColors(alternateState);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
alternateStateView.updateLoyalty(alternateState);
|
||||||
}
|
}
|
||||||
alternateState.getView().updateKeywords(c, alternateState);
|
alternateState.getView().updateKeywords(c, alternateState);
|
||||||
}
|
}
|
||||||
@@ -908,13 +912,17 @@ public class CardView extends GameEntityView {
|
|||||||
set(TrackableProperty.Toughness, c.getBaseToughness());
|
set(TrackableProperty.Toughness, c.getBaseToughness());
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getLoyalty() {
|
public String getLoyalty() {
|
||||||
return get(TrackableProperty.Loyalty);
|
return get(TrackableProperty.Loyalty);
|
||||||
}
|
}
|
||||||
void updateLoyalty(Card c) {
|
void updateLoyalty(Card c) {
|
||||||
updateLoyalty(c.getCurrentLoyalty());
|
if (c.isInZone(ZoneType.Battlefield)) {
|
||||||
|
updateLoyalty(String.valueOf(c.getCurrentLoyalty()));
|
||||||
|
} else {
|
||||||
|
updateLoyalty(c.getCurrentState().getBaseLoyalty());
|
||||||
}
|
}
|
||||||
void updateLoyalty(int loyalty) {
|
}
|
||||||
|
void updateLoyalty(String loyalty) {
|
||||||
set(TrackableProperty.Loyalty, loyalty);
|
set(TrackableProperty.Loyalty, loyalty);
|
||||||
}
|
}
|
||||||
void updateLoyalty(CardState c) {
|
void updateLoyalty(CardState c) {
|
||||||
@@ -930,7 +938,7 @@ public class CardView extends GameEntityView {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
set(TrackableProperty.Loyalty, 0); //alternates don't need loyalty
|
set(TrackableProperty.Loyalty, "0"); //alternates don't need loyalty
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getSetCode() {
|
public String getSetCode() {
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ public enum TrackableProperty {
|
|||||||
RulesText(TrackableTypes.StringType),
|
RulesText(TrackableTypes.StringType),
|
||||||
Power(TrackableTypes.IntegerType),
|
Power(TrackableTypes.IntegerType),
|
||||||
Toughness(TrackableTypes.IntegerType),
|
Toughness(TrackableTypes.IntegerType),
|
||||||
Loyalty(TrackableTypes.IntegerType),
|
Loyalty(TrackableTypes.StringType),
|
||||||
ChangedColorWords(TrackableTypes.StringMapType),
|
ChangedColorWords(TrackableTypes.StringMapType),
|
||||||
ChangedTypes(TrackableTypes.StringMapType),
|
ChangedTypes(TrackableTypes.StringMapType),
|
||||||
HasDeathtouch(TrackableTypes.BooleanType),
|
HasDeathtouch(TrackableTypes.BooleanType),
|
||||||
|
|||||||
@@ -437,7 +437,7 @@ public class VAssignDamage {
|
|||||||
}
|
}
|
||||||
else if (defender instanceof CardView) { // planeswalker
|
else if (defender instanceof CardView) { // planeswalker
|
||||||
final CardView pw = (CardView)defender;
|
final CardView pw = (CardView)defender;
|
||||||
lethalDamage = pw.getCurrentState().getLoyalty();
|
lethalDamage = Integer.valueOf(pw.getCurrentState().getLoyalty());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|||||||
@@ -706,7 +706,7 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
|
|||||||
String sPt = "";
|
String sPt = "";
|
||||||
if (state.isCreature() && state.isPlaneswalker()) {
|
if (state.isCreature() && state.isPlaneswalker()) {
|
||||||
sPt = state.getPower() + "/" + state.getToughness() +
|
sPt = state.getPower() + "/" + state.getToughness() +
|
||||||
" (" + String.valueOf(state.getLoyalty()) + ")";
|
" (" + state.getLoyalty() + ")";
|
||||||
}
|
}
|
||||||
else if (state.isCreature()) {
|
else if (state.isCreature()) {
|
||||||
sPt = state.getPower() + "/" + state.getToughness();
|
sPt = state.getPower() + "/" + state.getToughness();
|
||||||
@@ -715,7 +715,7 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
|
|||||||
sPt = "[" + state.getPower() + "/" + state.getToughness() + "]";
|
sPt = "[" + state.getPower() + "/" + state.getToughness() + "]";
|
||||||
}
|
}
|
||||||
else if (state.isPlaneswalker()) {
|
else if (state.isPlaneswalker()) {
|
||||||
sPt = String.valueOf(state.getLoyalty());
|
sPt = state.getLoyalty();
|
||||||
}
|
}
|
||||||
ptText.setText(sPt);
|
ptText.setText(sPt);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -273,7 +273,7 @@ public class CardRenderer {
|
|||||||
state.getLoyalty(), count, suffix, x, y, w, h, compactMode);
|
state.getLoyalty(), count, suffix, x, y, w, h, compactMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void drawCardListItem(Graphics g, FSkinFont font, FSkinColor foreColor, FImageComplex cardArt, CardView card, String set, CardRarity rarity, int power, int toughness, int loyalty, int count, String suffix, float x, float y, float w, float h, boolean compactMode) {
|
public static void drawCardListItem(Graphics g, FSkinFont font, FSkinColor foreColor, FImageComplex cardArt, CardView card, String set, CardRarity rarity, int power, int toughness, String loyalty, int count, String suffix, float x, float y, float w, float h, boolean compactMode) {
|
||||||
float cardArtHeight = h + 2 * FList.PADDING;
|
float cardArtHeight = h + 2 * FList.PADDING;
|
||||||
float cardArtWidth = cardArtHeight * CARD_ART_RATIO;
|
float cardArtWidth = cardArtHeight * CARD_ART_RATIO;
|
||||||
if (cardArt != null) {
|
if (cardArt != null) {
|
||||||
|
|||||||
@@ -446,7 +446,7 @@ public class VAssignDamage extends FDialog {
|
|||||||
}
|
}
|
||||||
else if (defender instanceof CardView) { // planeswalker
|
else if (defender instanceof CardView) { // planeswalker
|
||||||
CardView pw = (CardView)defender;
|
CardView pw = (CardView)defender;
|
||||||
lethalDamage = pw.getCurrentState().getLoyalty();
|
lethalDamage = Integer.valueOf(pw.getCurrentState().getLoyalty());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
Name:Chance for Glory
|
Name:Chance for Glory
|
||||||
ManaCost:1 R W
|
ManaCost:1 R W
|
||||||
Types:Instant
|
Types:Instant
|
||||||
A:SP$ PumpAll | Cost$ 1 R W | ValidCards$ Creature.YouCtrl | KW$ Indestructible | Permanent$ True | SubAbility$ DBAddTurn | SpellDescription$ Creatures you control gain indestructible. Take an extra turn after this one. At the beginning of that turn's end step, you lose the game.
|
A:SP$ PumpAll | Cost$ 1 R W | ValidCards$ Creature.YouCtrl | KW$ Indestructible | Permanent$ True | SubAbility$ DBAddTurn | SpellDescription$ Creatures you control gain indestructible.
|
||||||
SVar:DBAddTurn:DB$ AddTurn | NumTurns$ 1 | ExtraTurnDelayedTrigger$ DBDelTrig | ExtraTurnDelayedTriggerExcute$ TrigLose | References$ DBDelTrig,TrigLose | SpellDescription$ Take an extra turn after this one. At the beginning of that turn's end step, you lose the game.
|
SVar:DBAddTurn:DB$ AddTurn | NumTurns$ 1 | ExtraTurnDelayedTrigger$ DBDelTrig | ExtraTurnDelayedTriggerExcute$ TrigLose | References$ DBDelTrig,TrigLose | SpellDescription$ Take an extra turn after this one. At the beginning of that turn's end step, you lose the game.
|
||||||
SVar:DBDelTrig:ThisTurn$ True | Mode$ Phase | Phase$ End of Turn | TriggerDescription$ At the beginning of that turn's end step, you lose the game.
|
SVar:DBDelTrig:ThisTurn$ True | Mode$ Phase | Phase$ End of Turn | TriggerDescription$ At the beginning of that turn's end step, you lose the game.
|
||||||
SVar:TrigLose:DB$ LosesGame | Defined$ You
|
SVar:TrigLose:DB$ LosesGame | Defined$ You
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ Name:Cruel Celebrant
|
|||||||
ManaCost:W B
|
ManaCost:W B
|
||||||
Types:Creature Vampire
|
Types:Creature Vampire
|
||||||
PT:1/2
|
PT:1/2
|
||||||
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.Other+YouCtrl,Planeswalker.YouCtrl+Other | TriggerZones$ Battlefield | Execute$ TrigDrain | TriggerDescription$ Whenever CARDNAME or another creature you control dies, each opponent loses 1 life and you gain 1 life.
|
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.Other+YouCtrl,Planeswalker.YouCtrl+Other | TriggerZones$ Battlefield | Execute$ TrigDrain | TriggerDescription$ Whenever CARDNAME or another creature or planeswalker you control dies, each opponent loses 1 life and you gain 1 life.
|
||||||
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | TriggerController$ TriggeredCardController | Execute$ TrigDrain | Secondary$ True | TriggerDescription$ Whenever CARDNAME or another creature you control dies, each opponent loses 1 life and you gain 1 life.
|
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | TriggerController$ TriggeredCardController | Execute$ TrigDrain | Secondary$ True | TriggerDescription$ Whenever CARDNAME or another creature or planeswalker you control dies, each opponent loses 1 life and you gain 1 life.
|
||||||
SVar:TrigDrain:DB$ LoseLife | Defined$ Player.Opponent | LifeAmount$ 1 | SubAbility$ DBGainLife
|
SVar:TrigDrain:DB$ LoseLife | Defined$ Player.Opponent | LifeAmount$ 1 | SubAbility$ DBGainLife
|
||||||
SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 1
|
SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 1
|
||||||
DeckHas:Ability$LifeGain
|
DeckHas:Ability$LifeGain
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ PT:5/5
|
|||||||
K:Kicker:3
|
K:Kicker:3
|
||||||
K:etbCounter:P1P1:5:CheckSVar$ WasKicked:If CARDNAME was kicked, it enters the battlefield with five +1/+1 counters on it.
|
K:etbCounter:P1P1:5:CheckSVar$ WasKicked:If CARDNAME was kicked, it enters the battlefield with five +1/+1 counters on it.
|
||||||
SVar:WasKicked:Count$Kicked.1.0
|
SVar:WasKicked:Count$Kicked.1.0
|
||||||
T:Mode$ Attacks | ValidCard$ Card.Self | Alone$ True | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever CARDNAMRE attacks alone, double its power and toughness until end of turn.
|
T:Mode$ Attacks | ValidCard$ Card.Self | Alone$ True | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever CARDNAME attacks alone, double its power and toughness until end of turn.
|
||||||
SVar:TrigPump:DB$ Pump | Defined$ Self | NumAtt$ +X | NumDef$ +Y | References$ X,Y
|
SVar:TrigPump:DB$ Pump | Defined$ Self | NumAtt$ +X | NumDef$ +Y | References$ X,Y
|
||||||
SVar:X:Count$CardPower
|
SVar:X:Count$CardPower
|
||||||
SVar:Y:Count$CardToughness
|
SVar:Y:Count$CardToughness
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
Name:Nissa, Steward of Elements
|
Name:Nissa, Steward of Elements
|
||||||
ManaCost:X G U
|
ManaCost:X G U
|
||||||
Types:Legendary Planeswalker Nissa
|
Types:Legendary Planeswalker Nissa
|
||||||
Loyalty:0
|
Loyalty:X
|
||||||
K:etbCounter:LOYALTY:X
|
|
||||||
SVar:X:Count$xPaid
|
SVar:X:Count$xPaid
|
||||||
A:AB$ Scry | Cost$ AddCounter<2/LOYALTY> | Planeswalker$ True | ScryNum$ 2 | SpellDescription$ Scry 2.
|
A:AB$ Scry | Cost$ AddCounter<2/LOYALTY> | Planeswalker$ True | ScryNum$ 2 | SpellDescription$ Scry 2.
|
||||||
A:AB$ Dig | Cost$ AddCounter<0/LOYALTY> | Planeswalker$ True | DigNum$ 1 | ChangeNum$ 1 | Optional$ True | ChangeValid$ Land,Creature.cmcLEY | ForceRevealToController$ True | PromptToSkipOptionalAbility$ True | References$ Y | AILogic$ AlwaysConfirm | OptionalAbilityPrompt$ Would you like to put the permanent onto the battlefield? | DestinationZone$ Battlefield | LibraryPosition2$ 0 | SpellDescription$ Look at the top card of your library. If it's a land card or a creature card with converted mana cost less than or equal to the number of loyalty counters on Nissa, Steward of Elements, you may put that card onto the battlefield.
|
A:AB$ Dig | Cost$ AddCounter<0/LOYALTY> | Planeswalker$ True | DigNum$ 1 | ChangeNum$ 1 | Optional$ True | ChangeValid$ Land,Creature.cmcLEY | ForceRevealToController$ True | PromptToSkipOptionalAbility$ True | References$ Y | AILogic$ AlwaysConfirm | OptionalAbilityPrompt$ Would you like to put the permanent onto the battlefield? | DestinationZone$ Battlefield | LibraryPosition2$ 0 | SpellDescription$ Look at the top card of your library. If it's a land card or a creature card with converted mana cost less than or equal to the number of loyalty counters on Nissa, Steward of Elements, you may put that card onto the battlefield.
|
||||||
|
|||||||
@@ -2,7 +2,8 @@ Name:Yanling's Harbinger
|
|||||||
ManaCost:3 U U
|
ManaCost:3 U U
|
||||||
Types:Creature Bird
|
Types:Creature Bird
|
||||||
PT:2/4
|
PT:2/4
|
||||||
|
K:Flying
|
||||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigSearch | OptionalDecider$ You | TriggerDescription$ When CARDNAME enters the battlefield, you may search your library and/or graveyard for a card named Mu Yanling, Celestial Wind, reveal it, and put it into your hand. If you search your library this way, shuffle it.
|
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigSearch | OptionalDecider$ You | TriggerDescription$ When CARDNAME enters the battlefield, you may search your library and/or graveyard for a card named Mu Yanling, Celestial Wind, reveal it, and put it into your hand. If you search your library this way, shuffle it.
|
||||||
SVar:TrigSearch:DB$ ChangeZone | Origin$ Library,Graveyard | Destination$ Hand | ChangeType$ Card.namedMu Yanling; Celestial Wind | ChangeNum$ 1 | Optional$ True
|
SVar:TrigSearch:DB$ ChangeZone | Origin$ Library,Graveyard | Destination$ Hand | ChangeType$ Card.namedMu Yanling; Celestial Wind | ChangeNum$ 1 | Optional$ True
|
||||||
DeckHints:Name$Mu Yanling, Celestial Wind
|
DeckHints:Name$Mu Yanling, Celestial Wind
|
||||||
Oracle:When Yanling's Harbinger enters the battlefield, you may search your library and/or graveyard for a card named Mu Yanling, Celestial Wind, reveal it, and put it into your hand. If you search your library this way, shuffle it.
|
Oracle:Flying\nWhen Yanling's Harbinger enters the battlefield, you may search your library and/or graveyard for a card named Mu Yanling, Celestial Wind, reveal it, and put it into your hand. If you search your library this way, shuffle it.
|
||||||
|
|||||||
@@ -3,5 +3,5 @@ Name:Brawl
|
|||||||
Order:101
|
Order:101
|
||||||
Type:Casual
|
Type:Casual
|
||||||
Subtype:Commander
|
Subtype:Commander
|
||||||
Sets:XLN, RIX, DOM, M19, G18, GRN, RNA, WAR
|
Sets:XLN, RIX, DOM, M19, G18, GRN, RNA, WAR, M20
|
||||||
Banned:Sorcerous Spyglass
|
Banned:Sorcerous Spyglass
|
||||||
@@ -35,6 +35,8 @@ import java.math.BigDecimal;
|
|||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
public enum ColumnDef {
|
public enum ColumnDef {
|
||||||
/**The column containing the inventory item name.*/
|
/**The column containing the inventory item name.*/
|
||||||
STRING("", "", 0, false, SortState.ASC,
|
STRING("", "", 0, false, SortState.ASC,
|
||||||
@@ -512,7 +514,8 @@ public enum ColumnDef {
|
|||||||
result = ((IPaperCard) i).getRules().getIntPower();
|
result = ((IPaperCard) i).getRules().getIntPower();
|
||||||
if (result == Integer.MAX_VALUE) {
|
if (result == Integer.MAX_VALUE) {
|
||||||
if (((IPaperCard)i).getRules().getType().isPlaneswalker()) {
|
if (((IPaperCard)i).getRules().getType().isPlaneswalker()) {
|
||||||
result = ((IPaperCard) i).getRules().getInitialLoyalty();
|
String loy = ((IPaperCard) i).getRules().getInitialLoyalty();
|
||||||
|
result = StringUtils.isNumeric(loy) ? Integer.valueOf(loy) : 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user