From badf7e50b5b089ace15a58612d8e6d2b8404728c Mon Sep 17 00:00:00 2001 From: swordshine Date: Tue, 3 Mar 2015 13:00:45 +0000 Subject: [PATCH] =?UTF-8?q?-=20DTK=EF=BC=9AAdded=20Stratus=20Dancer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/forge/game/card/Card.java | 13 +++++++++ .../java/forge/game/card/CardFactoryUtil.java | 27 +++++++++++++++++-- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/forge-game/src/main/java/forge/game/card/Card.java b/forge-game/src/main/java/forge/game/card/Card.java index 5c1c9b8ad19..5a347136e5b 100644 --- a/forge-game/src/main/java/forge/game/card/Card.java +++ b/forge-game/src/main/java/forge/game/card/Card.java @@ -1285,6 +1285,19 @@ public class Card extends GameEntity implements Comparable { } sbLong.append("\r\n"); } + } else if (keyword.startsWith("Megamorph")) { + sbLong.append("Megamorph"); + if (keyword.contains(":")) { + final Cost mCost = new Cost(keyword.substring(10), true); + if (!mCost.isOnlyManaCost()) { + sbLong.append(" -"); + } + sbLong.append(" ").append(mCost.toString()).delete(sbLong.length() - 2, sbLong.length()); + if (!mCost.isOnlyManaCost()) { + sbLong.append("."); + } + sbLong.append("\r\n"); + } } else if (keyword.startsWith("Echo")) { sbLong.append("Echo "); final String[] upkeepCostParams = keyword.split(":"); diff --git a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java index 6efa411c958..f25229f22cc 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java @@ -131,7 +131,7 @@ public class CardFactoryUtil { * a {@link forge.game.cost.Cost} object. * @return a {@link forge.game.spellability.AbilityActivated} object. */ - public static AbilityStatic abilityMorphUp(final Card sourceCard, final Cost cost) { + public static AbilityStatic abilityMorphUp(final Card sourceCard, final Cost cost, final boolean mega) { final AbilityStatic morphUp = new AbilityStatic(sourceCard, cost, null) { @Override @@ -141,6 +141,9 @@ public class CardFactoryUtil { sourceCard.getGame().getGameLog().add(GameLogEntryType.STACK_RESOLVE, sb); sourceCard.getGame().fireEvent(new GameEventCardStatsChanged(sourceCard)); } + if (mega) { + sourceCard.addCounter(CounterType.P1P1, 1, true); + } } @Override @@ -3126,12 +3129,32 @@ public class CardFactoryUtil { card.setState(CardStateName.FaceDown, false); - card.addSpellAbility(abilityMorphUp(card, cost)); + card.addSpellAbility(abilityMorphUp(card, cost, false)); card.setSVars(sVars); // for Warbreak Trumpeter. card.setState(CardStateName.Original, false); } + } // Morph + if (hasKeyword(card, "Megamorph") != -1) { + final int n = hasKeyword(card, "Megamorph"); + if (n != -1) { + + final String parse = card.getKeywords().get(n).toString(); + Map sVars = card.getSVars(); + + final String[] k = parse.split(":"); + final Cost cost = new Cost(k[1], true); + + card.addSpellAbility(abilityMorphDown(card)); + + card.setState(CardStateName.FaceDown, false); + + card.addSpellAbility(abilityMorphUp(card, cost, true)); + card.setSVars(sVars); + card.setState(CardStateName.Original, false); + } + } // Megamorph if (hasKeyword(card, "Madness") != -1) { final int n = hasKeyword(card, "Madness");