diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryGainControl.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryGainControl.java index bd515f2b9e0..4027a478a59 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryGainControl.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryGainControl.java @@ -269,7 +269,7 @@ public class AbilityFactoryGainControl { if ((tgt != null) && !this.params.containsKey("Defined")) { tgtCards = tgt.getTargetCards(); } else { - tgtCards = AbilityFactory.getDefinedCards(this.hostCard, this.params.get("Defined"), sa); + tgtCards = AbilityFactory.getDefinedCards(sa.getSourceCard(), this.params.get("Defined"), sa); } ArrayList newController = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), @@ -332,7 +332,7 @@ public class AbilityFactoryGainControl { } CardList list = AllZone.getHumanPlayer().getCardsIn(ZoneType.Battlefield); - list = list.getValidCards(tgt.getValidTgts(), this.hostCard.getController(), this.hostCard); + list = list.getValidCards(tgt.getValidTgts(), sa.getSourceCard().getController(), sa.getSourceCard()); // AI won't try to grab cards that are filtered out of AI decks on // purpose list = list.filter(new CardListFilter() { @@ -424,7 +424,7 @@ public class AbilityFactoryGainControl { } else if ((tgt != null) && !this.params.containsKey("Defined")) { tgtCards.addAll(tgt.getTargetCards()); } else { - tgtCards.addAll(AbilityFactory.getDefinedCards(this.hostCard, this.params.get("Defined"), sa)); + tgtCards.addAll(AbilityFactory.getDefinedCards(sa.getSourceCard(), this.params.get("Defined"), sa)); } ArrayList controllers = new ArrayList(); @@ -441,7 +441,7 @@ public class AbilityFactoryGainControl { if (sa.isSpell()) { newController = sa.getActivatingPlayer(); } else { - newController = this.hostCard; + newController = sa.getSourceCard(); } } else { newController = controllers.get(0); @@ -452,8 +452,8 @@ public class AbilityFactoryGainControl { final Card tgtC = tgtCards.get(j); final Player originalController = tgtC.getController(); - if (!tgtC.equals(this.hostCard) && !this.hostCard.getGainControlTargets().contains(tgtC)) { - this.hostCard.addGainControlTarget(tgtC); + if (!tgtC.equals(sa.getSourceCard()) && !sa.getSourceCard().getGainControlTargets().contains(tgtC)) { + sa.getSourceCard().addGainControlTarget(tgtC); } if (AllZoneUtil.isCardInPlay(tgtC)) { @@ -477,13 +477,13 @@ public class AbilityFactoryGainControl { if (this.lose != null) { if (this.lose.contains("LeavesPlay")) { - this.hostCard.addLeavesPlayCommand(this.getLoseControlCommand(tgtC, originalController, newController)); + sa.getSourceCard().addLeavesPlayCommand(this.getLoseControlCommand(tgtC, originalController, newController)); } if (this.lose.contains("Untap")) { - this.hostCard.addUntapCommand(this.getLoseControlCommand(tgtC, originalController, newController)); + sa.getSourceCard().addUntapCommand(this.getLoseControlCommand(tgtC, originalController, newController)); } if (this.lose.contains("LoseControl")) { - this.hostCard.addChangeControllerCommand(this.getLoseControlCommand(tgtC, originalController, newController)); + sa.getSourceCard().addChangeControllerCommand(this.getLoseControlCommand(tgtC, originalController, newController)); } if (this.lose.contains("EOT")) { AllZone.getEndOfTurn().addAt(this.getLoseControlCommand(tgtC, originalController, newController)); @@ -492,18 +492,18 @@ public class AbilityFactoryGainControl { if (this.destroyOn != null) { if (this.destroyOn.contains("LeavesPlay")) { - this.hostCard.addLeavesPlayCommand(this.getDestroyCommand(tgtC)); + sa.getSourceCard().addLeavesPlayCommand(this.getDestroyCommand(tgtC)); } if (this.destroyOn.contains("Untap")) { - this.hostCard.addUntapCommand(this.getDestroyCommand(tgtC)); + sa.getSourceCard().addUntapCommand(this.getDestroyCommand(tgtC)); } if (this.destroyOn.contains("LoseControl")) { - this.hostCard.addChangeControllerCommand(this.getDestroyCommand(tgtC)); + sa.getSourceCard().addChangeControllerCommand(this.getDestroyCommand(tgtC)); } } - this.hostCard.clearGainControlReleaseCommands(); - this.hostCard.addGainControlReleaseCommand(this.getLoseControlCommand(tgtC, originalController, newController)); + sa.getSourceCard().clearGainControlReleaseCommands(); + sa.getSourceCard().addGainControlReleaseCommand(this.getLoseControlCommand(tgtC, originalController, newController)); } // end foreach target } @@ -843,7 +843,7 @@ public class AbilityFactoryGainControl { tgt.resetTargets(); CardList list = AllZone.getHumanPlayer().getCardsIn(ZoneType.Battlefield); - list = list.getValidCards(tgt.getValidTgts(), AllZone.getComputerPlayer(), this.hostCard); + list = list.getValidCards(tgt.getValidTgts(), AllZone.getComputerPlayer(), sa.getSourceCard()); // AI won't try to grab cards that are filtered out of AI decks on // purpose list = list.filter(new CardListFilter() { @@ -858,7 +858,7 @@ public class AbilityFactoryGainControl { object2 = AbilityFactory.getDefinedCards(sa.getSourceCard(), params.get("Defined"), sa).get(0); } else if (tgt.getMinTargets(sa.getSourceCard(), sa) > 1) { CardList list2 = AllZone.getComputerPlayer().getCardsIn(ZoneType.Battlefield); - list2 = list2.getValidCards(tgt.getValidTgts(), AllZone.getComputerPlayer(), this.hostCard); + list2 = list2.getValidCards(tgt.getValidTgts(), AllZone.getComputerPlayer(), sa.getSourceCard()); object2 = CardFactoryUtil.getWorstAI(list2); tgt.addTarget(object2); } diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryPump.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryPump.java index f58010c98f4..de09e345749 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryPump.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryPump.java @@ -260,7 +260,7 @@ public class AbilityFactoryPump { * @return a int. */ private int getNumAttack(final SpellAbility sa) { - return AbilityFactory.calculateAmount(this.hostCard, this.numAttack, sa); + return AbilityFactory.calculateAmount(sa.getSourceCard(), this.numAttack, sa); } /** @@ -273,7 +273,7 @@ public class AbilityFactoryPump { * @return a int. */ private int getNumDefense(final SpellAbility sa) { - return AbilityFactory.calculateAmount(this.hostCard, this.numDefense, sa); + return AbilityFactory.calculateAmount(sa.getSourceCard(), this.numDefense, sa); } /** @@ -753,19 +753,19 @@ public class AbilityFactoryPump { private boolean pumpPlayAI(final SpellAbility sa) { final Cost cost = sa.getPayCosts(); - if (!CostUtil.checkLifeCost(cost, this.hostCard, 4)) { + if (!CostUtil.checkLifeCost(cost, sa.getSourceCard(), 4)) { return false; } - if (!CostUtil.checkDiscardCost(cost, this.hostCard)) { + if (!CostUtil.checkDiscardCost(cost, sa.getSourceCard())) { return false; } - if (!CostUtil.checkCreatureSacrificeCost(cost, this.hostCard)) { + if (!CostUtil.checkCreatureSacrificeCost(cost, sa.getSourceCard())) { return false; } - if (!CostUtil.checkRemoveCounterCost(cost, this.hostCard)) { + if (!CostUtil.checkRemoveCounterCost(cost, sa.getSourceCard())) { return false; } @@ -1164,12 +1164,12 @@ public class AbilityFactoryPump { } if ((this.abilityFactory.getAbTgt() == null) || !this.abilityFactory.getAbTgt().doesTarget()) { - if (this.hostCard.isCreature()) { - if (!this.hostCard.hasKeyword("Indestructible") - && ((this.hostCard.getNetDefense() + defense) <= this.hostCard.getDamage())) { + if (source.isCreature()) { + if (!source.hasKeyword("Indestructible") + && ((source.getNetDefense() + defense) <= source.getDamage())) { return false; } - if ((this.hostCard.getNetDefense() + defense) <= 0) { + if ((source.getNetDefense() + defense) <= 0) { return false; } } @@ -1315,13 +1315,13 @@ public class AbilityFactoryPump { } if (pumpRemembered != null) { - for (final Object o : AbilityFactory.getDefinedObjects(this.hostCard, pumpRemembered, sa)) { - this.hostCard.addRemembered(o); + for (final Object o : AbilityFactory.getDefinedObjects(sa.getSourceCard(), pumpRemembered, sa)) { + sa.getSourceCard().addRemembered(o); } } if (this.params.containsKey("Radiance")) { - for (final Card c : CardUtil.getRadiance(this.hostCard, tgtCards.get(0), this.params.get("ValidTgts") + for (final Card c : CardUtil.getRadiance(sa.getSourceCard(), tgtCards.get(0), this.params.get("ValidTgts") .split(","))) { untargetedCards.add(c); } @@ -1602,7 +1602,7 @@ public class AbilityFactoryPump { private boolean pumpAllCanPlayAI(final SpellAbility sa) { String valid = ""; final Random r = MyRandom.getRandom(); - // final Card source = sa.getSourceCard(); + final Card source = sa.getSourceCard(); this.params = this.abilityFactory.getMapParams(); final int power = this.getNumAttack(sa); final int defense = this.getNumDefense(sa); @@ -1616,9 +1616,9 @@ public class AbilityFactoryPump { } CardList comp = AllZone.getComputerPlayer().getCardsIn(ZoneType.Battlefield); - comp = comp.getValidCards(valid, this.hostCard.getController(), this.hostCard); + comp = comp.getValidCards(valid, source.getController(), source); CardList human = AllZone.getHumanPlayer().getCardsIn(ZoneType.Battlefield); - human = human.getValidCards(valid, this.hostCard.getController(), this.hostCard); + human = human.getValidCards(valid, source.getController(), source); final Target tgt = sa.getTarget(); if (tgt != null && sa.canTarget(AllZone.getHumanPlayer()) && params.containsKey("IsCurse")) {