diff --git a/src/forge/Card.java b/src/forge/Card.java index fee4484203b..873d12a7baa 100644 --- a/src/forge/Card.java +++ b/src/forge/Card.java @@ -187,7 +187,7 @@ public class Card extends MyObservable return !hasFirstStrike() || (hasFirstStrike() && hasDoubleStrike()); }; - //for Planeswalker abilities and Effects (like Wither), Doubling Season gets ignored. + //for Planeswalker abilities and Combat Damage (like Wither), Doubling Season gets ignored. public void addCounterFromNonEffect(Counters counterName, int n) { if(counters.containsKey(counterName)) @@ -684,7 +684,7 @@ public class Card extends MyObservable public String getController(){return controller;} public void setName(String s) {name = s; this.updateObservers();} - public void setOwner(String player) {owner = player;} + public void setOwner(String player) {owner = player; this.updateObservers();} public void setController(String player){controller = player; this.updateObservers();} public ArrayList getEquippedBy() diff --git a/src/forge/CardFactory.java b/src/forge/CardFactory.java index 430727cb42f..2f3e5d4ebb8 100644 --- a/src/forge/CardFactory.java +++ b/src/forge/CardFactory.java @@ -4230,7 +4230,8 @@ public class CardFactory implements NewConstants { { if(AllZone.GameAction.isCardInPlay(getTargetCard()) && CardFactoryUtil.canTarget(card,getTargetCard()) ) { - CardFactoryUtil.makeToken("Ape", "G 3 3 Ape", card, "G", new String[] {"Creature", "Ape"}, 3, 3, new String[] {""} ); + CardFactoryUtil.makeToken("Ape", "G 3 3 Ape", AllZone.GameAction.getOpponent(card.getController()), "G", + new String[] {"Creature", "Ape"}, 3, 3, new String[] {""} ); AllZone.GameAction.destroyNoRegeneration(getTargetCard()); } }//resolve() @@ -5593,7 +5594,8 @@ public class CardFactory implements NewConstants { { if(AllZone.GameAction.isCardInPlay(getTargetCard()) && CardFactoryUtil.canTarget(card, getTargetCard()) ) { - CardFactoryUtil.makeToken("Shapeshifter", "C 1 1 Shapeshifter", card, "", new String[] {"Creature", "Shapeshifter"}, 1, 1, new String[] {"Changeling"} ); + CardFactoryUtil.makeToken("Shapeshifter", "C 1 1 Shapeshifter", AllZone.GameAction.getOpponent(card.getController()), "", + new String[] {"Creature", "Shapeshifter"}, 1, 1, new String[] {"Changeling"} ); //remove card from play AllZone.GameAction.removeFromGame(getTargetCard()); } @@ -17259,7 +17261,12 @@ return land.size() > 1 && CardFactoryUtil.AI_isMainPhase(); c.setType(sim.getType()); c.setText(sim.getSpellText()); c.setManaCost(sim.getManaCost()); - + + if (!sim.getOwner().equals("")) + c.setOwner(sim.getOwner()); + if (!sim.getController().equals("")) + c.setController(sim.getController()); + return c; }// copyStats() diff --git a/src/forge/CardFactoryUtil.java b/src/forge/CardFactoryUtil.java index 4eb0f469e3e..24c841adc2a 100644 --- a/src/forge/CardFactoryUtil.java +++ b/src/forge/CardFactoryUtil.java @@ -3185,8 +3185,8 @@ public class CardFactoryUtil c.setName(name); c.setImageName(imageName); - c.setOwner(source.getController()); c.setController(source.getController()); + c.setOwner(source.getOwner()); c.setManaCost(manaCost); c.setToken(true); @@ -3217,6 +3217,45 @@ public class CardFactoryUtil } + public static CardList makeToken(String name, String imageName, String controller, String manaCost, String[] types, int baseAttack, int baseDefense, + String[] intrinsicKeywords) + { + CardList list = new CardList(); + Card c = new Card(); + c.setName(name); + c.setImageName(imageName); + + c.setController(controller); + c.setOwner(controller); + + c.setManaCost(manaCost); + c.setToken(true); + + for (String t : types) + c.addType(t); + + c.setBaseAttack(baseAttack); + c.setBaseDefense(baseDefense); + + for (String kw : intrinsicKeywords) + c.addIntrinsicKeyword(kw); + + PlayerZone play = AllZone.getZone(Constant.Zone.Play, controller); + + int multiplier = 1; + int doublingSeasons = CardFactoryUtil.getCards("Doubling Season", controller).size(); + if (doublingSeasons > 0) + multiplier = (int) Math.pow(2, doublingSeasons); + + for (int i=0;i 0) + obj = AllZone.Display.getChoiceOptional("Pick a land to attach "+c.getName() + " to",lands.toArray() ); + } + if (obj != null) + { + Card target = (Card)obj; + if(AllZone.GameAction.isCardInPlay(target)) { + c.enchantCard(target); + } + } + } } } AllZone.GameAction.removeFromGame(card); diff --git a/src/forge/CombatUtil.java b/src/forge/CombatUtil.java index 3404ed968b3..7e6bd202be3 100644 --- a/src/forge/CombatUtil.java +++ b/src/forge/CombatUtil.java @@ -1146,7 +1146,6 @@ public class CombatUtil crd.enchantCard(target); } } - } AllZone.GameAction.shuffle(c.getController()); //we have to have cards like glorious anthem take effect immediately: