From 50c40311a7b20b24e83649b9eb989d7c224027fd Mon Sep 17 00:00:00 2001 From: Hellfish Date: Sun, 9 Feb 2014 16:03:27 +0000 Subject: [PATCH] *Reintroduced TriggerReplacementBase as a specialized subclass of CardTraitBase --- .../src/main/java/forge/ai/AiController.java | 20 ++-- .../main/java/forge/ai/AiCostDecision.java | 6 +- .../src/main/java/forge/ai/ComputerUtil.java | 60 +++++----- .../java/forge/ai/ComputerUtilCombat.java | 16 +-- .../main/java/forge/ai/ComputerUtilCost.java | 2 +- .../main/java/forge/ai/ComputerUtilMana.java | 42 +++---- .../main/java/forge/ai/SpellAbilityAi.java | 2 +- .../main/java/forge/ai/ability/AddTurnAi.java | 4 +- .../main/java/forge/ai/ability/AnimateAi.java | 2 +- .../main/java/forge/ai/ability/AttachAi.java | 12 +- .../forge/ai/ability/BecomesBlockedAi.java | 2 +- .../java/forge/ai/ability/ChangeZoneAi.java | 36 +++--- .../forge/ai/ability/ChangeZoneAllAi.java | 2 +- .../java/forge/ai/ability/ChooseCardAi.java | 4 +- .../forge/ai/ability/ChooseCardNameAi.java | 2 +- .../java/forge/ai/ability/ChooseSourceAi.java | 10 +- .../java/forge/ai/ability/ChooseTypeAi.java | 2 +- .../main/java/forge/ai/ability/CloneAi.java | 2 +- .../forge/ai/ability/ControlExchangeAi.java | 8 +- .../java/forge/ai/ability/ControlGainAi.java | 6 +- .../forge/ai/ability/CopyPermanentAi.java | 10 +- .../main/java/forge/ai/ability/CounterAi.java | 12 +- .../java/forge/ai/ability/CountersMoveAi.java | 6 +- .../java/forge/ai/ability/CountersPutAi.java | 26 ++-- .../forge/ai/ability/CountersPutAllAi.java | 4 +- .../ai/ability/CountersPutOrRemoveAi.java | 6 +- .../forge/ai/ability/CountersRemoveAi.java | 6 +- .../java/forge/ai/ability/DamageAiBase.java | 4 +- .../java/forge/ai/ability/DamageAllAi.java | 14 +-- .../java/forge/ai/ability/DamageDealAi.java | 22 ++-- .../java/forge/ai/ability/DamageEachAi.java | 2 +- .../forge/ai/ability/DamagePreventAi.java | 10 +- .../forge/ai/ability/DamagePreventAllAi.java | 2 +- .../main/java/forge/ai/ability/DebuffAi.java | 20 ++-- .../java/forge/ai/ability/DebuffAllAi.java | 4 +- .../forge/ai/ability/DelayedTriggerAi.java | 6 +- .../main/java/forge/ai/ability/DestroyAi.java | 20 ++-- .../java/forge/ai/ability/DestroyAllAi.java | 4 +- .../src/main/java/forge/ai/ability/DigAi.java | 2 +- .../java/forge/ai/ability/DigUntilAi.java | 2 +- .../main/java/forge/ai/ability/DiscardAi.java | 10 +- .../java/forge/ai/ability/DrainManaAi.java | 6 +- .../main/java/forge/ai/ability/DrawAi.java | 8 +- .../main/java/forge/ai/ability/EffectAi.java | 4 +- .../main/java/forge/ai/ability/FightAi.java | 4 +- .../java/forge/ai/ability/LifeGainAi.java | 6 +- .../java/forge/ai/ability/LifeLoseAi.java | 8 +- .../main/java/forge/ai/ability/LifeSetAi.java | 8 +- .../main/java/forge/ai/ability/MillAi.java | 6 +- .../java/forge/ai/ability/MustBlockAi.java | 4 +- .../main/java/forge/ai/ability/PhasesAi.java | 6 +- .../main/java/forge/ai/ability/PlayAi.java | 4 +- .../main/java/forge/ai/ability/PoisonAi.java | 4 +- .../forge/ai/ability/PowerExchangeAi.java | 8 +- .../main/java/forge/ai/ability/ProtectAi.java | 22 ++-- .../java/forge/ai/ability/ProtectAllAi.java | 2 +- .../main/java/forge/ai/ability/PumpAi.java | 42 +++---- .../main/java/forge/ai/ability/PumpAllAi.java | 6 +- .../java/forge/ai/ability/RegenerateAi.java | 4 +- .../forge/ai/ability/RegenerateAllAi.java | 2 +- .../main/java/forge/ai/ability/RepeatAi.java | 2 +- .../main/java/forge/ai/ability/RevealAi.java | 2 +- .../java/forge/ai/ability/RevealHandAi.java | 2 +- .../forge/ai/ability/RollPlanarDiceAi.java | 2 +- .../java/forge/ai/ability/SacrificeAi.java | 10 +- .../java/forge/ai/ability/SacrificeAllAi.java | 2 +- .../main/java/forge/ai/ability/ScryAi.java | 2 +- .../java/forge/ai/ability/SetStateAi.java | 2 +- .../main/java/forge/ai/ability/ShuffleAi.java | 2 +- .../java/forge/ai/ability/StoreSVarAi.java | 2 +- .../src/main/java/forge/ai/ability/TapAi.java | 2 +- .../main/java/forge/ai/ability/TapAiBase.java | 18 +-- .../main/java/forge/ai/ability/TapAllAi.java | 4 +- .../java/forge/ai/ability/TapOrUntapAi.java | 2 +- .../main/java/forge/ai/ability/TokenAi.java | 6 +- .../java/forge/ai/ability/TwoPilesAi.java | 4 +- .../java/forge/ai/ability/UnattachAllAi.java | 6 +- .../main/java/forge/ai/ability/UntapAi.java | 20 ++-- .../java/forge/ai/ability/UntapAllAi.java | 2 +- .../java/forge/ai/ability/ZoneExchangeAi.java | 2 +- .../main/java/forge/game/CardTraitBase.java | 68 ++--------- .../src/main/java/forge/game/GameAction.java | 2 +- .../main/java/forge/game/GameActionUtil.java | 16 +-- .../java/forge/game/GameLogFormatter.java | 4 +- .../forge/game/ability/AbilityApiBased.java | 10 +- .../forge/game/ability/AbilityFactory.java | 4 +- .../java/forge/game/ability/AbilityUtils.java | 38 +++--- .../forge/game/ability/SaTargetRoutines.java | 8 +- .../game/ability/SpellAbilityEffect.java | 16 +-- .../forge/game/ability/SpellApiBased.java | 8 +- .../game/ability/StaticAbilityApiBased.java | 6 +- .../game/ability/effects/AbandonEffect.java | 2 +- .../game/ability/effects/AddTurnEffect.java | 4 +- .../ability/effects/AnimateAllEffect.java | 2 +- .../game/ability/effects/AnimateEffect.java | 6 +- .../game/ability/effects/AttachEffect.java | 12 +- .../game/ability/effects/BalanceEffect.java | 2 +- .../game/ability/effects/BondEffect.java | 4 +- .../ability/effects/ChangeTargetsEffect.java | 8 +- .../ability/effects/ChangeZoneAllEffect.java | 4 +- .../ability/effects/ChangeZoneEffect.java | 44 +++---- .../game/ability/effects/CharmEffect.java | 4 +- .../ability/effects/ChooseCardEffect.java | 2 +- .../ability/effects/ChooseCardNameEffect.java | 2 +- .../ability/effects/ChooseColorEffect.java | 2 +- .../ability/effects/ChooseGenericEffect.java | 4 +- .../ability/effects/ChooseNumberEffect.java | 2 +- .../ability/effects/ChoosePlayerEffect.java | 4 +- .../ability/effects/ChooseSourceEffect.java | 2 +- .../ability/effects/ChooseTypeEffect.java | 4 +- .../game/ability/effects/ClashEffect.java | 16 +-- .../game/ability/effects/CleanUpEffect.java | 2 +- .../game/ability/effects/CloneEffect.java | 4 +- .../effects/ControlExchangeEffect.java | 4 +- .../ability/effects/ControlGainEffect.java | 28 ++--- .../ability/effects/CopyPermanentEffect.java | 4 +- .../effects/CopySpellAbilityEffect.java | 16 +-- .../game/ability/effects/CounterEffect.java | 44 +++---- .../ability/effects/CountersMoveEffect.java | 4 +- .../effects/CountersProliferateEffect.java | 4 +- .../ability/effects/CountersPutAllEffect.java | 6 +- .../ability/effects/CountersPutEffect.java | 6 +- .../effects/CountersPutOrRemoveEffect.java | 2 +- .../effects/CountersRemoveAllEffect.java | 6 +- .../ability/effects/CountersRemoveEffect.java | 6 +- .../game/ability/effects/DamageAllEffect.java | 12 +- .../ability/effects/DamageDealEffect.java | 14 +-- .../ability/effects/DamageEachEffect.java | 6 +- .../effects/DamagePreventAllEffect.java | 4 +- .../ability/effects/DamagePreventEffect.java | 2 +- .../game/ability/effects/DebuffAllEffect.java | 2 +- .../ability/effects/DelayedTriggerEffect.java | 6 +- .../ability/effects/DestroyAllEffect.java | 4 +- .../game/ability/effects/DestroyEffect.java | 2 +- .../forge/game/ability/effects/DigEffect.java | 6 +- .../game/ability/effects/DigUntilEffect.java | 6 +- .../game/ability/effects/DiscardEffect.java | 8 +- .../game/ability/effects/DrawEffect.java | 6 +- .../game/ability/effects/EffectEffect.java | 6 +- .../game/ability/effects/EncodeEffect.java | 2 +- .../game/ability/effects/FightEffect.java | 2 +- .../game/ability/effects/FlipCoinEffect.java | 6 +- .../forge/game/ability/effects/FogEffect.java | 2 +- .../game/ability/effects/GameLossEffect.java | 2 +- .../game/ability/effects/GameWinEffect.java | 2 +- .../ability/effects/LifeExchangeEffect.java | 2 +- .../game/ability/effects/LifeGainEffect.java | 6 +- .../game/ability/effects/LifeLoseEffect.java | 6 +- .../game/ability/effects/LifeSetEffect.java | 8 +- .../game/ability/effects/ManaEffect.java | 4 +- .../ability/effects/ManaReflectedEffect.java | 2 +- .../game/ability/effects/MillEffect.java | 6 +- .../ability/effects/MultiplePilesEffect.java | 2 +- .../ability/effects/MustAttackEffect.java | 4 +- .../game/ability/effects/MustBlockEffect.java | 8 +- .../ability/effects/PeekAndRevealEffect.java | 8 +- .../effects/PermanentCreatureEffect.java | 8 +- .../effects/PermanentNoncreatureEffect.java | 8 +- .../game/ability/effects/PhasesEffect.java | 2 +- .../ability/effects/PlaneswalkEffect.java | 2 +- .../game/ability/effects/PlayEffect.java | 4 +- .../game/ability/effects/PoisonEffect.java | 6 +- .../ability/effects/PowerExchangeEffect.java | 6 +- .../ability/effects/ProtectAllEffect.java | 2 +- .../game/ability/effects/ProtectEffect.java | 2 +- .../game/ability/effects/PumpAllEffect.java | 12 +- .../game/ability/effects/PumpEffect.java | 18 +-- .../effects/RearrangeTopOfLibraryEffect.java | 4 +- .../ability/effects/RegenerateAllEffect.java | 2 +- .../ability/effects/RegenerateEffect.java | 6 +- .../effects/RemoveFromCombatEffect.java | 2 +- .../ability/effects/RepeatEachEffect.java | 4 +- .../game/ability/effects/RepeatEffect.java | 18 +-- .../ability/effects/RestartGameEffect.java | 6 +- .../game/ability/effects/RevealEffect.java | 4 +- .../ability/effects/RevealHandEffect.java | 2 +- .../ability/effects/SacrificeAllEffect.java | 6 +- .../game/ability/effects/SacrificeEffect.java | 8 +- .../game/ability/effects/ScryEffect.java | 4 +- .../ability/effects/SetInMotionEffect.java | 4 +- .../game/ability/effects/SetStateEffect.java | 2 +- .../game/ability/effects/SkipTurnEffect.java | 4 +- .../game/ability/effects/StoreSVarEffect.java | 2 +- .../game/ability/effects/TapAllEffect.java | 2 +- .../forge/game/ability/effects/TapEffect.java | 2 +- .../game/ability/effects/TokenEffect.java | 8 +- .../game/ability/effects/TwoPilesEffect.java | 8 +- .../ability/effects/UnattachAllEffect.java | 2 +- .../game/ability/effects/UntapAllEffect.java | 2 +- .../game/ability/effects/UntapEffect.java | 2 +- .../ability/effects/ZoneExchangeEffect.java | 6 +- .../src/main/java/forge/game/card/Card.java | 12 +- .../java/forge/game/card/CardFactory.java | 10 +- .../java/forge/game/card/CardFactoryUtil.java | 14 +-- .../java/forge/game/card/CardShields.java | 2 +- .../main/java/forge/game/card/CardUtil.java | 14 +-- .../java/forge/game/cost/CostAddMana.java | 2 +- .../game/cost/CostChooseCreatureType.java | 2 +- .../main/java/forge/game/cost/CostDamage.java | 2 +- .../java/forge/game/cost/CostDiscard.java | 2 +- .../main/java/forge/game/cost/CostDraw.java | 4 +- .../main/java/forge/game/cost/CostExile.java | 2 +- .../game/cost/CostExiledMoveToGrave.java | 2 +- .../java/forge/game/cost/CostGainControl.java | 2 +- .../java/forge/game/cost/CostGainLife.java | 2 +- .../main/java/forge/game/cost/CostMill.java | 2 +- .../java/forge/game/cost/CostPayLife.java | 2 +- .../java/forge/game/cost/CostPayment.java | 4 +- .../forge/game/cost/CostPutCardToLib.java | 2 +- .../java/forge/game/cost/CostPutCounter.java | 8 +- .../forge/game/cost/CostRemoveAnyCounter.java | 4 +- .../forge/game/cost/CostRemoveCounter.java | 4 +- .../main/java/forge/game/cost/CostReturn.java | 2 +- .../main/java/forge/game/cost/CostReveal.java | 2 +- .../java/forge/game/cost/CostSacrifice.java | 2 +- .../main/java/forge/game/cost/CostTap.java | 4 +- .../java/forge/game/cost/CostTapType.java | 2 +- .../java/forge/game/cost/CostUnattach.java | 2 +- .../main/java/forge/game/cost/CostUntap.java | 4 +- .../java/forge/game/cost/CostUntapType.java | 2 +- .../forge/game/mana/ManaCostBeingPaid.java | 8 +- .../main/java/forge/game/mana/ManaPool.java | 22 ++-- .../main/java/forge/game/phase/Upkeep.java | 2 +- .../main/java/forge/game/player/Player.java | 12 +- .../forge/game/player/PlayerControllerAi.java | 6 +- .../game/replacement/ReplacementEffect.java | 3 +- .../java/forge/game/spellability/Ability.java | 2 +- .../game/spellability/AbilityActivated.java | 8 +- .../game/spellability/AbilityManaPart.java | 6 +- .../game/spellability/AbilityStatic.java | 4 +- .../forge/game/spellability/AbilitySub.java | 10 +- .../game/spellability/AbilityTriggered.java | 6 +- .../java/forge/game/spellability/Spell.java | 6 +- .../forge/game/spellability/SpellAbility.java | 112 +++++------------- .../spellability/SpellAbilityCondition.java | 26 ++-- .../spellability/SpellAbilityRestriction.java | 8 +- .../SpellAbilityStackInstance.java | 12 +- .../game/spellability/SpellPermanent.java | 10 +- .../game/spellability/TargetRestrictions.java | 6 +- .../StaticAbilityCantTarget.java | 3 +- .../StaticAbilityContinuous.java | 9 +- .../StaticAbilityCostChange.java | 7 +- .../main/java/forge/game/trigger/Trigger.java | 3 +- .../game/trigger/TriggerBecomesTarget.java | 4 +- .../forge/game/trigger/TriggerHandler.java | 2 +- .../game/trigger/TriggerSpellAbilityCast.java | 4 +- .../forge/game/trigger/WrappedAbility.java | 8 +- .../main/java/forge/game/zone/MagicStack.java | 36 +++--- .../forge/control/FControlGamePlayback.java | 4 +- .../src/main/java/forge/gui/DualListBox.java | 2 +- .../java/forge/gui/input/InputPayMana.java | 8 +- .../gui/input/InputPayManaOfCostPayment.java | 2 +- .../forge/gui/input/InputPayManaSimple.java | 8 +- .../java/forge/gui/input/InputPayManaX.java | 6 +- .../forge/gui/input/InputSelectTargets.java | 20 ++-- .../java/forge/gui/match/views/VStack.java | 4 +- .../forge/gui/player/HumanCostDecision.java | 18 +-- .../main/java/forge/gui/player/HumanPlay.java | 22 ++-- .../gui/player/HumanPlaySpellAbility.java | 26 ++-- .../gui/player/PlayerControllerHuman.java | 36 +++--- .../forge/gui/player/TargetSelection.java | 16 +-- .../java/forge/sound/EventVisualizer.java | 4 +- .../util/PlayerControllerForTests.java | 8 +- .../CastSpellFromHandAction.java | 2 +- 264 files changed, 1010 insertions(+), 1101 deletions(-) diff --git a/forge-game/src/main/java/forge/ai/AiController.java b/forge-game/src/main/java/forge/ai/AiController.java index 032bb99d6bf..839ddee66ee 100644 --- a/forge-game/src/main/java/forge/ai/AiController.java +++ b/forge-game/src/main/java/forge/ai/AiController.java @@ -498,9 +498,9 @@ public class AiController { int b1 = b.getPayCosts() == null ? 0 : b.getPayCosts().getTotalMana().getCMC(); // deprioritize planar die roll marked with AIRollPlanarDieParams:LowPriority$ True - if (ApiType.RollPlanarDice == a.getApi() && a.getSourceCard().hasSVar("AIRollPlanarDieParams") && a.getSourceCard().getSVar("AIRollPlanarDieParams").toLowerCase().matches(".*lowpriority\\$\\s*true.*")) { + if (ApiType.RollPlanarDice == a.getApi() && a.getHostCard().hasSVar("AIRollPlanarDieParams") && a.getHostCard().getSVar("AIRollPlanarDieParams").toLowerCase().matches(".*lowpriority\\$\\s*true.*")) { return 1; - } else if (ApiType.RollPlanarDice == b.getApi() && b.getSourceCard().hasSVar("AIRollPlanarDieParams") && b.getSourceCard().getSVar("AIRollPlanarDieParams").toLowerCase().matches(".*lowpriority\\$\\s*true.*")) { + } else if (ApiType.RollPlanarDice == b.getApi() && b.getHostCard().hasSVar("AIRollPlanarDieParams") && b.getHostCard().getSVar("AIRollPlanarDieParams").toLowerCase().matches(".*lowpriority\\$\\s*true.*")) { return -1; } @@ -519,13 +519,13 @@ public class AiController { private int getSpellAbilityPriority(SpellAbility sa) { int p = 0; - Card source = sa.getSourceCard(); + Card source = sa.getHostCard(); // puts creatures in front of spells if (source.isCreature()) { p += 1; } // don't play equipments before having any creatures - if (source.isEquipment() && sa.getSourceCard().getController().getCreaturesInPlay().isEmpty()) { + if (source.isEquipment() && sa.getHostCard().getController().getCreaturesInPlay().isEmpty()) { p -= 9; } // artifacts and enchantments with effects that do not stack @@ -566,7 +566,7 @@ public class AiController { if ((uTypes != null) && (sa != null)) { - hand = CardLists.getValidCards(hand, uTypes, sa.getActivatingPlayer(), sa.getSourceCard()); + hand = CardLists.getValidCards(hand, uTypes, sa.getActivatingPlayer(), sa.getHostCard()); } return getCardsToDiscard(numDiscard, numDiscard, hand, sa); } @@ -581,7 +581,7 @@ public class AiController { final List discardList = new ArrayList(); int count = 0; if (sa != null) { - sourceCard = sa.getSourceCard(); + sourceCard = sa.getHostCard(); } // look for good discards @@ -729,7 +729,7 @@ public class AiController { if(landsWannaPlay != null && !landsWannaPlay.isEmpty() && player.canPlayLand(null)) { Card land = chooseBestLandToPlay(landsWannaPlay); if (ComputerUtil.damageFromETB(player, land) < player.getLife() || !player.canLoseLife()) { - Ability.PLAY_LAND_SURROGATE.setSourceCard(land); + Ability.PLAY_LAND_SURROGATE.setHostCard(land); return Ability.PLAY_LAND_SURROGATE; } } @@ -835,7 +835,7 @@ public class AiController { for(int i = 0; i < result.size(); i++) { SpellAbility sa = result.get(i); - String srcName = sa.getSourceCard().getName(); + String srcName = sa.getHostCard().getName(); if("Gemstone Caverns".equals(srcName)) { if(saGemstones == null) saGemstones = sa; @@ -1042,9 +1042,9 @@ public class AiController { switch(sa.getApi()) { case SetLife: - if (relatedPlayer.equals(sa.getSourceCard().getController())) { + if (relatedPlayer.equals(sa.getHostCard().getController())) { return Collections.max(options); - } else if (relatedPlayer.isOpponentOf(sa.getSourceCard().getController())) { + } else if (relatedPlayer.isOpponentOf(sa.getHostCard().getController())) { return Collections.min(options); } else { return options.get(0); diff --git a/forge-game/src/main/java/forge/ai/AiCostDecision.java b/forge-game/src/main/java/forge/ai/AiCostDecision.java index 9aad468fcc1..8f62c07358a 100644 --- a/forge-game/src/main/java/forge/ai/AiCostDecision.java +++ b/forge-game/src/main/java/forge/ai/AiCostDecision.java @@ -29,7 +29,7 @@ public class AiCostDecision extends CostDecisionMakerBase implements ICostVisito public AiCostDecision(Player ai0, SpellAbility sa) { super(ai0); ability = sa; - source = ability.getSourceCard(); + source = ability.getHostCard(); } @Override @@ -362,7 +362,7 @@ public class AiCostDecision extends CostDecisionMakerBase implements ICostVisito final String sVar = ability.getSVar(amount); if (sVar.equals("XChoice")) { List typeList = - CardLists.getValidCards(player.getCardsIn(ZoneType.Battlefield), cost.getType().split(";"), ability.getActivatingPlayer(), ability.getSourceCard()); + CardLists.getValidCards(player.getCardsIn(ZoneType.Battlefield), cost.getType().split(";"), ability.getActivatingPlayer(), ability.getHostCard()); typeList = CardLists.filter(typeList, Presets.UNTAPPED); c = typeList.size(); source.setSVar("ChosenX", "Number$" + Integer.toString(c)); @@ -534,7 +534,7 @@ public class AiCostDecision extends CostDecisionMakerBase implements ICostVisito final String sVar = ability.getSVar(amount); if (sVar.equals("XChoice")) { List typeList = player.getGame().getCardsIn(ZoneType.Battlefield); - typeList = CardLists.getValidCards(typeList, cost.getType().split(";"), player, ability.getSourceCard()); + typeList = CardLists.getValidCards(typeList, cost.getType().split(";"), player, ability.getHostCard()); if (!cost.canUntapSource) { typeList.remove(source); } diff --git a/forge-game/src/main/java/forge/ai/ComputerUtil.java b/forge-game/src/main/java/forge/ai/ComputerUtil.java index a6167e20541..c96e7261fb0 100644 --- a/forge-game/src/main/java/forge/ai/ComputerUtil.java +++ b/forge-game/src/main/java/forge/ai/ComputerUtil.java @@ -75,10 +75,10 @@ public class ComputerUtil { public static boolean handlePlayingSpellAbility(final Player ai, final SpellAbility sa, final Game game) { game.getStack().freezeStack(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); if (sa.isSpell() && !source.isCopiedSpell()) { - sa.setSourceCard(game.getAction().moveToStack(source)); + sa.setHostCard(game.getAction().moveToStack(source)); } if (sa.getApi() == ApiType.Charm && !sa.isWrapper()) { @@ -86,7 +86,7 @@ public class ComputerUtil { } if (sa.hasParam("Bestow")) { - sa.getSourceCard().animateBestow(); + sa.getHostCard().animateBestow(); } final Cost cost = sa.getPayCosts(); @@ -109,7 +109,7 @@ public class ComputerUtil { } } //Should not arrive here - System.out.println("AI failed to play " + sa.getSourceCard()); + System.out.println("AI failed to play " + sa.getHostCard()); return false; } @@ -143,7 +143,7 @@ public class ComputerUtil { int restrict = 0; - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final TargetRestrictions tgt = sa.getTargetRestrictions(); @@ -212,9 +212,9 @@ public class ComputerUtil { if (!ComputerUtilCost.canPayCost(sa, ai)) return; - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); if (sa.isSpell() && !source.isCopiedSpell()) { - sa.setSourceCard(game.getAction().moveToStack(source)); + sa.setHostCard(game.getAction().moveToStack(source)); } final Cost cost = sa.getPayCosts(); if (cost == null) { @@ -239,9 +239,9 @@ public class ComputerUtil { public static final void playSpellAbilityForFree(final Player ai, final SpellAbility sa) { sa.setActivatingPlayer(ai); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); if (sa.isSpell() && !source.isCopiedSpell()) { - sa.setSourceCard(ai.getGame().getAction().moveToStack(source)); + sa.setHostCard(ai.getGame().getAction().moveToStack(source)); } ai.getGame().getStack().add(sa); @@ -263,9 +263,9 @@ public class ComputerUtil { return; } - final Card source = newSA.getSourceCard(); + final Card source = newSA.getHostCard(); if (newSA.isSpell() && !source.isCopiedSpell()) { - newSA.setSourceCard(game.getAction().moveToStack(source)); + newSA.setHostCard(game.getAction().moveToStack(source)); } final CostPayment pay = new CostPayment(newSA.getPayCosts(), newSA); @@ -286,9 +286,9 @@ public class ComputerUtil { sa.setActivatingPlayer(ai); // TODO: We should really restrict what doesn't use the Stack if (ComputerUtilCost.canPayCost(sa, ai)) { - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); if (sa.isSpell() && !source.isCopiedSpell()) { - sa.setSourceCard(game.getAction().moveToStack(source)); + sa.setHostCard(game.getAction().moveToStack(source)); } final Cost cost = sa.getPayCosts(); @@ -795,10 +795,10 @@ public class ComputerUtil { final TargetRestrictions tgt = sa.getTargetRestrictions(); if (tgt != null) { - if (CardLists.getValidCards(game.getCardsIn(ZoneType.Battlefield), tgt.getValidTgts(), controller, sa.getSourceCard()).contains(card)) { + if (CardLists.getValidCards(game.getCardsIn(ZoneType.Battlefield), tgt.getValidTgts(), controller, sa.getHostCard()).contains(card)) { return true; } - } else if (AbilityUtils.getDefinedCards(sa.getSourceCard(), sa.getParam("Defined"), sa).contains(card)) { + } else if (AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("Defined"), sa).contains(card)) { return true; } @@ -838,13 +838,13 @@ public class ComputerUtil { if (sa.getApi() == ApiType.PreventDamage && sa.canPlay() && ComputerUtilCost.canPayCost(sa, controller)) { - if (AbilityUtils.getDefinedCards(sa.getSourceCard(), sa.getParam("Defined"), sa).contains(card)) { - prevented += AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("Amount"), sa); + if (AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("Defined"), sa).contains(card)) { + prevented += AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("Amount"), sa); } final TargetRestrictions tgt = sa.getTargetRestrictions(); if (tgt != null) { - if (CardLists.getValidCards(game.getCardsIn(ZoneType.Battlefield), tgt.getValidTgts(), controller, sa.getSourceCard()).contains(card)) { - prevented += AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("Amount"), sa); + if (CardLists.getValidCards(game.getCardsIn(ZoneType.Battlefield), tgt.getValidTgts(), controller, sa.getHostCard()).contains(card)) { + prevented += AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("Amount"), sa); } } @@ -867,7 +867,7 @@ public class ComputerUtil { * @return a boolean. */ public static boolean castPermanentInMain1(final Player ai, final SpellAbility sa) { - final Card card = sa.getSourceCard(); + final Card card = sa.getHostCard(); if ("True".equals(card.getSVar("NonStackingEffect")) && card.getController().isCardInPlay(card.getName())) { return false; } @@ -1038,12 +1038,12 @@ public class ComputerUtil { final Game game = sa.getActivatingPlayer().getGame(); final PhaseHandler ph = game.getPhaseHandler(); - return (sa.getSourceCard().isCreature() + return (sa.getHostCard().isCreature() && sa.getPayCosts().hasTapCost() && (ph.getPhase().isBefore(PhaseType.COMBAT_DECLARE_BLOCKERS) || !ph.getNextTurn().equals(sa.getActivatingPlayer())) - && !sa.getSourceCard().hasKeyword("At the beginning of the end step, exile CARDNAME.") - && !sa.getSourceCard().hasKeyword("At the beginning of the end step, sacrifice CARDNAME.")); + && !sa.getHostCard().hasKeyword("At the beginning of the end step, exile CARDNAME.") + && !sa.getHostCard().hasKeyword("At the beginning of the end step, sacrifice CARDNAME.")); } /** @@ -1056,7 +1056,7 @@ public class ComputerUtil { * @return a boolean (returns true if it's better to wait until blockers are declared). */ public static boolean castSpellInMain1(final Player ai, final SpellAbility sa) { - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final SpellAbility sub = sa.getSubAbility(); // Cipher spells @@ -1073,7 +1073,7 @@ public class ComputerUtil { } } final List buffed = ai.getCardsIn(ZoneType.Battlefield); - boolean checkThreshold = sa.isSpell() && !ai.hasThreshold() && !sa.getSourceCard().isInZone(ZoneType.Graveyard); + boolean checkThreshold = sa.isSpell() && !ai.hasThreshold() && !sa.getHostCard().isInZone(ZoneType.Graveyard); for (Card buffedCard : buffed) { if (buffedCard.hasSVar("BuffedBy")) { final String buffedby = buffedCard.getSVar("BuffedBy"); @@ -1144,7 +1144,7 @@ public class ComputerUtil { */ public static boolean activateForCost(SpellAbility sa, final Player ai) { final Cost abCost = sa.getPayCosts(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); if (abCost == null) { return false; } @@ -1240,7 +1240,7 @@ public class ComputerUtil { continue; } final String numDam = sa.getParam("NumDmg"); - int dmg = AbilityUtils.calculateAmount(sa.getSourceCard(), numDam, sa); + int dmg = AbilityUtils.calculateAmount(sa.getHostCard(), numDam, sa); if (dmg <= damage) { continue; } @@ -1307,7 +1307,7 @@ public class ComputerUtil { return objects; } - final Card source = topStack.getSourceCard(); + final Card source = topStack.getHostCard(); final ApiType threatApi = topStack.getApi(); // Can only Predict things from AFs @@ -1333,7 +1333,7 @@ public class ComputerUtil { // Lethal Damage => prevent damage/regeneration/bounce/shroud if (threatApi == ApiType.DealDamage || threatApi == ApiType.DamageAll) { // If PredictDamage is >= Lethal Damage - final int dmg = AbilityUtils.calculateAmount(topStack.getSourceCard(), + final int dmg = AbilityUtils.calculateAmount(topStack.getHostCard(), topStack.getParam("NumDmg"), topStack); for (final Object o : objects) { if (o instanceof Card) { @@ -1452,7 +1452,7 @@ public class ComputerUtil { } public static boolean playImmediately(Player ai, SpellAbility sa) { - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final Zone zone = source.getZone(); if (zone.getZoneType() == ZoneType.Battlefield) { diff --git a/forge-game/src/main/java/forge/ai/ComputerUtilCombat.java b/forge-game/src/main/java/forge/ai/ComputerUtilCombat.java index e02c32a047f..49bcd1bba8a 100644 --- a/forge-game/src/main/java/forge/ai/ComputerUtilCombat.java +++ b/forge-game/src/main/java/forge/ai/ComputerUtilCombat.java @@ -848,7 +848,7 @@ public class ComputerUtilCombat { } if (ComputerUtilCost.canPayCost(ability, defender.getController())) { - int pBonus = AbilityUtils.calculateAmount(ability.getSourceCard(), ability.getParam("NumAtt"), ability); + int pBonus = AbilityUtils.calculateAmount(ability.getHostCard(), ability.getParam("NumAtt"), ability); if (pBonus > 0) { power += pBonus; } @@ -859,7 +859,7 @@ public class ComputerUtilCombat { } if (ComputerUtilCost.canPayCost(ability, defender.getController())) { - int pBonus = AbilityUtils.calculateAmount(ability.getSourceCard(), ability.getParam("CounterNum"), ability); + int pBonus = AbilityUtils.calculateAmount(ability.getHostCard(), ability.getParam("CounterNum"), ability); if (pBonus > 0) { power += pBonus; } @@ -977,7 +977,7 @@ public class ComputerUtilCombat { if (ability.getApi() != ApiType.Pump || !ability.hasParam("NumDef")) { if (ComputerUtilCost.canPayCost(ability, defender.getController())) { - int tBonus = AbilityUtils.calculateAmount(ability.getSourceCard(), ability.getParam("NumDef"), ability); + int tBonus = AbilityUtils.calculateAmount(ability.getHostCard(), ability.getParam("NumDef"), ability); if (tBonus > 0) { toughness += tBonus; } @@ -988,7 +988,7 @@ public class ComputerUtilCombat { } if (ComputerUtilCost.canPayCost(ability, defender.getController())) { - int tBonus = AbilityUtils.calculateAmount(ability.getSourceCard(), ability.getParam("CounterNum"), ability); + int tBonus = AbilityUtils.calculateAmount(ability.getHostCard(), ability.getParam("CounterNum"), ability); if (tBonus > 0) { toughness += tBonus; } @@ -1154,7 +1154,7 @@ public class ComputerUtilCombat { } if (!ability.getPayCosts().hasTapCost() && ComputerUtilCost.canPayCost(ability, attacker.getController())) { - int pBonus = AbilityUtils.calculateAmount(ability.getSourceCard(), ability.getParam("NumAtt"), ability); + int pBonus = AbilityUtils.calculateAmount(ability.getHostCard(), ability.getParam("NumAtt"), ability); if (pBonus > 0) { power += pBonus; } @@ -1165,7 +1165,7 @@ public class ComputerUtilCombat { } if (!ability.getPayCosts().hasTapCost() && ComputerUtilCost.canPayCost(ability, attacker.getController())) { - int pBonus = AbilityUtils.calculateAmount(ability.getSourceCard(), ability.getParam("CounterNum"), ability); + int pBonus = AbilityUtils.calculateAmount(ability.getHostCard(), ability.getParam("CounterNum"), ability); if (pBonus > 0) { power += pBonus; } @@ -1335,7 +1335,7 @@ public class ComputerUtilCombat { if (ability.getApi() != ApiType.Pump || !ability.hasParam("NumDef")) { if (!ability.getPayCosts().hasTapCost() && ComputerUtilCost.canPayCost(ability, attacker.getController())) { - int tBonus = AbilityUtils.calculateAmount(ability.getSourceCard(), ability.getParam("NumDef"), ability); + int tBonus = AbilityUtils.calculateAmount(ability.getHostCard(), ability.getParam("NumDef"), ability); if (tBonus > 0) { toughness += tBonus; } @@ -1346,7 +1346,7 @@ public class ComputerUtilCombat { } if (!ability.getPayCosts().hasTapCost() && ComputerUtilCost.canPayCost(ability, attacker.getController())) { - int tBonus = AbilityUtils.calculateAmount(ability.getSourceCard(), ability.getParam("CounterNum"), ability); + int tBonus = AbilityUtils.calculateAmount(ability.getHostCard(), ability.getParam("CounterNum"), ability); if (tBonus > 0) { toughness += tBonus; } diff --git a/forge-game/src/main/java/forge/ai/ComputerUtilCost.java b/forge-game/src/main/java/forge/ai/ComputerUtilCost.java index 97b8cb8df01..f0f3428a191 100644 --- a/forge-game/src/main/java/forge/ai/ComputerUtilCost.java +++ b/forge-game/src/main/java/forge/ai/ComputerUtilCost.java @@ -349,7 +349,7 @@ public class ComputerUtilCost { } // canPayCost() public static boolean willPayUnlessCost(SpellAbility sa, Player payer, Cost cost, boolean alreadyPaid, List payers) { - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); boolean payForOwnOnly = "OnlyOwn".equals(sa.getParam("UnlessAI")); boolean payOwner = sa.hasParam("UnlessAI") ? sa.getParam("UnlessAI").startsWith("Defined") : false; boolean payNever = "Never".equals(sa.getParam("UnlessAI")); diff --git a/forge-game/src/main/java/forge/ai/ComputerUtilMana.java b/forge-game/src/main/java/forge/ai/ComputerUtilMana.java index a2387cdaeb5..ba5c0040686 100644 --- a/forge-game/src/main/java/forge/ai/ComputerUtilMana.java +++ b/forge-game/src/main/java/forge/ai/ComputerUtilMana.java @@ -87,7 +87,7 @@ public class ComputerUtilMana { } private static boolean payManaCost(final ManaCostBeingPaid cost, final SpellAbility sa, final Player ai, final boolean test, final int extraMana, boolean checkPlayable, boolean clearManaPaid) { - adjustManaCostToAvoidNegEffects(cost, sa.getSourceCard(), ai); + adjustManaCostToAvoidNegEffects(cost, sa.getHostCard(), ai); final ManaPool manapool = ai.getManaPool(); List unpaidShards = cost.getUnpaidShards(); @@ -129,7 +129,7 @@ public class ComputerUtilMana { // for (Entry> src : sourcesForShards.entrySet()) { // System.out.println("\t" +src.getKey() + " : " + src.getValue().size() + " source(s)"); // for (SpellAbility sss : src.getValue()) { -// System.out.printf("\t\t%s - %s%n", sss.getSourceCard(), sss); +// System.out.printf("\t\t%s - %s%n", sss.getHostCard(), sss); // } // } // } @@ -145,12 +145,12 @@ public class ComputerUtilMana { SpellAbility saPayment = null; if (saList != null) { for (final SpellAbility ma : saList) { - if (ma.getSourceCard() == sa.getSourceCard()) { + if (ma.getHostCard() == sa.getHostCard()) { continue; } final String typeRes = cost.getSourceRestriction(); - if (StringUtils.isNotBlank(typeRes) && !ma.getSourceCard().isType(typeRes)) { + if (StringUtils.isNotBlank(typeRes) && !ma.getHostCard().isType(typeRes)) { continue; } @@ -164,7 +164,7 @@ public class ComputerUtilMana { } if (DEBUG_MANA_PAYMENT) { - paymentPlan.add(String.format("%s : (%s) %s", toPay, saPayment == null ? "LIFE" : saPayment.getSourceCard(), saPayment)); + paymentPlan.add(String.format("%s : (%s) %s", toPay, saPayment == null ? "LIFE" : saPayment.getHostCard(), saPayment)); } if (saPayment == null) { @@ -174,7 +174,7 @@ public class ComputerUtilMana { cost.payPhyrexian(); if (!test) { - ai.payLife(2, sa.getSourceCard()); + ai.payLife(2, sa.getHostCard()); } continue; } @@ -192,7 +192,7 @@ public class ComputerUtilMana { Iterator itSa = kv.iterator(); while (itSa.hasNext()) { SpellAbility srcSa = itSa.next(); - if (srcSa.getSourceCard().equals(saPayment.getSourceCard())) { + if (srcSa.getHostCard().equals(saPayment.getHostCard())) { itSa.remove(); } } @@ -207,8 +207,8 @@ public class ComputerUtilMana { } } else { - System.err.println("Ability " + saPayment + " from " + saPayment.getSourceCard() + " had NULL as payCost"); - saPayment.getSourceCard().tap(); + System.err.println("Ability " + saPayment + " from " + saPayment.getHostCard() + " had NULL as payCost"); + saPayment.getHostCard().tap(); } ai.getGame().getStack().addAndUnfreeze(saPayment); @@ -228,7 +228,7 @@ public class ComputerUtilMana { // if (DEBUG_MANA_PAYMENT) { // System.err.printf("%s > [%s] payment has %s (%s +%d) for (%s) %s:%n\t%s%n%n", // FThreads.debugGetCurrThreadId(), test ? "test" : "PROD", cost.isPaid() ? "*PAID*" : "failed", originalCost, -// extraMana, sa.getSourceCard(), sa.toUnsuppressedString(), StringUtils.join(paymentPlan, "\n\t")); +// extraMana, sa.getHostCard(), sa.toUnsuppressedString(), StringUtils.join(paymentPlan, "\n\t")); // } if (!cost.isPaid()) { @@ -236,14 +236,14 @@ public class ComputerUtilMana { return false; } else { - System.out.println("ComputerUtil : payManaCost() cost was not paid for " + sa.getSourceCard().getName() + ". Didn't find what to pay for " + toPay); + System.out.println("ComputerUtil : payManaCost() cost was not paid for " + sa.getHostCard().getName() + ". Didn't find what to pay for " + toPay); return false; } } - sa.getSourceCard().setColorsPaid(cost.getColorsPaid()); + sa.getHostCard().setColorsPaid(cost.getColorsPaid()); // if (sa instanceof Spell_Permanent) // should probably add this - sa.getSourceCard().setSunburstValue(cost.getSunburst()); + sa.getHostCard().setSunburstValue(cost.getSunburst()); return true; } // payManaCost() @@ -254,7 +254,7 @@ public class ComputerUtilMana { if (m.isComboMana()) getComboManaChoice(ai, saPayment, sa, cost); else if (saPayment.getApi() == ApiType.ManaReflected) { - System.out.println("Evaluate reflected mana of: " + saPayment.getSourceCard()); + System.out.println("Evaluate reflected mana of: " + saPayment.getHostCard()); Set reflected = CardUtil.getReflectableManaColors(saPayment); for (byte c : MagicColor.WUBRG) { @@ -280,7 +280,7 @@ public class ComputerUtilMana { } private static boolean canPayShardWithSpellAbility(ManaCostShard toPay, Player ai, SpellAbility ma, SpellAbility sa, boolean checkCosts) { - final Card sourceCard = ma.getSourceCard(); + final Card sourceCard = ma.getHostCard(); if (toPay.isSnow() && !sourceCard.isSnow()) { return false; } @@ -367,7 +367,7 @@ public class ComputerUtilMana { */ private static void getComboManaChoice(final Player ai, final SpellAbility manaAb, final SpellAbility saRoot, final ManaCostBeingPaid cost) { final StringBuilder choiceString = new StringBuilder(); - final Card source = manaAb.getSourceCard(); + final Card source = manaAb.getHostCard(); final AbilityManaPart abMana = manaAb.getManaPart(); if (abMana.isComboMana()) { @@ -515,8 +515,8 @@ public class ComputerUtilMana { private static ManaCostBeingPaid calculateManaCost(final SpellAbility sa, final boolean test, final int extraMana) { ZoneType castFromBackup = null; if (test && sa.isSpell()) { - castFromBackup = sa.getSourceCard().getCastFrom(); - sa.getSourceCard().setCastFrom(sa.getSourceCard().getZone().getZoneType()); + castFromBackup = sa.getHostCard().getCastFrom(); + sa.getHostCard().setCastFrom(sa.getHostCard().getZone().getZoneType()); } Cost payCosts = sa.getPayCosts(); @@ -529,7 +529,7 @@ public class ComputerUtilMana { ManaCostBeingPaid cost = new ManaCostBeingPaid(mana, restriction); cost.applySpellCostChange(sa, test); - final Card card = sa.getSourceCard(); + final Card card = sa.getHostCard(); // Tack xMana Payments into mana here if X is a set value if ((sa.getPayCosts() != null) && (cost.getXcounter() > 0 || extraMana > 0)) { int manaToAdd = 0; @@ -559,7 +559,7 @@ public class ComputerUtilMana { } if (test && sa.isSpell()) { - sa.getSourceCard().setCastFrom(castFromBackup); + sa.getHostCard().setCastFrom(castFromBackup); } return cost; @@ -797,7 +797,7 @@ public class ComputerUtilMana { final Card offering = sa.getSacrificedAsOffering(); offering.setUsedToPay(false); if (costIsPaid && !test) { - sa.getSourceCard().getController().getGame().getAction().sacrifice(offering, sa); + sa.getHostCard().getController().getGame().getAction().sacrifice(offering, sa); } sa.resetSacrificedAsOffering(); } diff --git a/forge-game/src/main/java/forge/ai/SpellAbilityAi.java b/forge-game/src/main/java/forge/ai/SpellAbilityAi.java index 69d3744beda..612d23e9281 100644 --- a/forge-game/src/main/java/forge/ai/SpellAbilityAi.java +++ b/forge-game/src/main/java/forge/ai/SpellAbilityAi.java @@ -86,7 +86,7 @@ public abstract class SpellAbilityAi extends SaTargetRoutines { * @return a boolean. */ protected static boolean isSorcerySpeed(final SpellAbility sa) { - return ( sa.isSpell() && sa.getSourceCard().isSorcery() ) + return ( sa.isSpell() && sa.getHostCard().isSorcery() ) || ( sa.isAbility() && sa.getRestrictions().isSorcerySpeed() ); } diff --git a/forge-game/src/main/java/forge/ai/ability/AddTurnAi.java b/forge-game/src/main/java/forge/ai/ability/AddTurnAi.java index c9a81b69c78..2cc11bcb792 100644 --- a/forge-game/src/main/java/forge/ai/ability/AddTurnAi.java +++ b/forge-game/src/main/java/forge/ai/ability/AddTurnAi.java @@ -50,14 +50,14 @@ public class AddTurnAi extends SpellAbilityAi { break; } } - if (!sa.getTargetRestrictions().isMinTargetsChosen(sa.getSourceCard(), sa) && sa.canTarget(opp)) { + if (!sa.getTargetRestrictions().isMinTargetsChosen(sa.getHostCard(), sa) && sa.canTarget(opp)) { sa.getTargets().add(opp); } else { return false; } } } else { - final List tgtPlayers = AbilityUtils.getDefinedPlayers(sa.getSourceCard(), sa.getParam("Defined"), sa); + final List tgtPlayers = AbilityUtils.getDefinedPlayers(sa.getHostCard(), sa.getParam("Defined"), sa); for (final Player p : tgtPlayers) { if (p.isOpponentOf(ai) && !mandatory) { return false; diff --git a/forge-game/src/main/java/forge/ai/ability/AnimateAi.java b/forge-game/src/main/java/forge/ai/ability/AnimateAi.java index 3bf122918bc..a454dbb9159 100644 --- a/forge-game/src/main/java/forge/ai/ability/AnimateAi.java +++ b/forge-game/src/main/java/forge/ai/ability/AnimateAi.java @@ -32,7 +32,7 @@ public class AnimateAi extends SpellAbilityAi { @Override protected boolean canPlayAI(Player aiPlayer, SpellAbility sa) { final TargetRestrictions tgt = sa.getTargetRestrictions(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final Game game = aiPlayer.getGame(); final PhaseHandler ph = game.getPhaseHandler(); diff --git a/forge-game/src/main/java/forge/ai/ability/AttachAi.java b/forge-game/src/main/java/forge/ai/ability/AttachAi.java index 7f5d82404e8..43fc9522707 100644 --- a/forge-game/src/main/java/forge/ai/ability/AttachAi.java +++ b/forge-game/src/main/java/forge/ai/ability/AttachAi.java @@ -31,7 +31,7 @@ public class AttachAi extends SpellAbilityAi { protected boolean canPlayAI(Player ai, SpellAbility sa) { final Random r = MyRandom.getRandom(); final Cost abCost = sa.getPayCosts(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); if (abCost != null) { // AI currently disabled for these costs @@ -319,7 +319,7 @@ public class AttachAi extends SpellAbilityAi { final Card attachSource) { // AI For choosing a Card to Animate. List betterList = CardLists.getNotType(list, "Creature"); - if (sa.getSourceCard().getName().equals("Animate Artifact")) { + if (sa.getHostCard().getName().equals("Animate Artifact")) { betterList = CardLists.filter(betterList, new Predicate() { @Override public boolean apply(final Card c) { @@ -385,7 +385,7 @@ public class AttachAi extends SpellAbilityAi { // I know this isn't much better than Hardcoding, but some cards need it for now final Player ai = sa.getActivatingPlayer(); Card chosen = null; - if ("Guilty Conscience".equals(sa.getSourceCard().getName())) { + if ("Guilty Conscience".equals(sa.getHostCard().getName())) { List aiStuffies = CardLists.filter(list, new Predicate() { @Override public boolean apply(final Card c) { @@ -611,12 +611,12 @@ public class AttachAi extends SpellAbilityAi { */ @Override protected boolean doTriggerAINoCost(final Player ai, final SpellAbility sa, final boolean mandatory) { - final Card card = sa.getSourceCard(); + final Card card = sa.getHostCard(); // Check if there are any valid targets List targets = new ArrayList(); final TargetRestrictions tgt = sa.getTargetRestrictions(); if (tgt == null) { - targets = AbilityUtils.getDefinedObjects(sa.getSourceCard(), sa.getParam("Defined"), sa); + targets = AbilityUtils.getDefinedObjects(sa.getHostCard(), sa.getParam("Defined"), sa); } else { AttachAi.attachPreference(sa, tgt, mandatory); targets = sa.getTargets().getTargets(); @@ -930,7 +930,7 @@ public class AttachAi extends SpellAbilityAi { */ private static Card attachToCardAIPreferences(final Player aiPlayer, final SpellAbility sa, final boolean mandatory) { final TargetRestrictions tgt = sa.getTargetRestrictions(); - final Card attachSource = sa.getSourceCard(); + final Card attachSource = sa.getHostCard(); // TODO AttachSource is currently set for the Source of the Spell, but // at some point can support attaching a different card diff --git a/forge-game/src/main/java/forge/ai/ability/BecomesBlockedAi.java b/forge-game/src/main/java/forge/ai/ability/BecomesBlockedAi.java index 09822d8fd3f..9ece981e4ea 100644 --- a/forge-game/src/main/java/forge/ai/ability/BecomesBlockedAi.java +++ b/forge-game/src/main/java/forge/ai/ability/BecomesBlockedAi.java @@ -18,7 +18,7 @@ public class BecomesBlockedAi extends SpellAbilityAi { @Override protected boolean canPlayAI(Player aiPlayer, SpellAbility sa) { - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final TargetRestrictions tgt = sa.getTargetRestrictions(); final Game game = aiPlayer.getGame(); diff --git a/forge-game/src/main/java/forge/ai/ability/ChangeZoneAi.java b/forge-game/src/main/java/forge/ai/ability/ChangeZoneAi.java index ff2355341e2..246b24f9ecb 100644 --- a/forge-game/src/main/java/forge/ai/ability/ChangeZoneAi.java +++ b/forge-game/src/main/java/forge/ai/ability/ChangeZoneAi.java @@ -149,7 +149,7 @@ public class ChangeZoneAi extends SpellAbilityAi { // Fetching should occur fairly often as it helps cast more spells, and // have access to more mana final Cost abCost = sa.getPayCosts(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); ZoneType origin = null; final Player opponent = ai.getOpponent(); boolean activateForCost = ComputerUtil.activateForCost(sa, ai); @@ -241,9 +241,9 @@ public class ChangeZoneAi extends SpellAbilityAi { pDefined = sa.getTargets().getTargetPlayers(); } else { if (sa.hasParam("DefinedPlayer")) { - pDefined = AbilityUtils.getDefinedPlayers(sa.getSourceCard(), sa.getParam("DefinedPlayer"), sa); + pDefined = AbilityUtils.getDefinedPlayers(sa.getHostCard(), sa.getParam("DefinedPlayer"), sa); } else { - pDefined = AbilityUtils.getDefinedPlayers(sa.getSourceCard(), sa.getParam("Defined"), sa); + pDefined = AbilityUtils.getDefinedPlayers(sa.getHostCard(), sa.getParam("Defined"), sa); } } @@ -357,7 +357,7 @@ public class ChangeZoneAi extends SpellAbilityAi { // Fetching should occur fairly often as it helps cast more spells, and // have access to more mana - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); List origin = new ArrayList(); @@ -404,7 +404,7 @@ public class ChangeZoneAi extends SpellAbilityAi { if (mandatory) { return true; } - pDefined = AbilityUtils.getDefinedPlayers(sa.getSourceCard(), sa.getParam("Defined"), sa); + pDefined = AbilityUtils.getDefinedPlayers(sa.getHostCard(), sa.getParam("Defined"), sa); } for (final Player p : pDefined) { @@ -540,7 +540,7 @@ public class ChangeZoneAi extends SpellAbilityAi { private static boolean knownOriginCanPlayAI(final Player ai, final SpellAbility sa) { // Retrieve either this card, or target Cards in Graveyard final Cost abCost = sa.getPayCosts(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final ZoneType origin = ZoneType.smartValueOf(sa.getParam("Origin")); final ZoneType destination = ZoneType.smartValueOf(sa.getParam("Destination")); @@ -683,7 +683,7 @@ public class ChangeZoneAi extends SpellAbilityAi { * @return a boolean. */ private static boolean isPreferredTarget(final Player ai, final SpellAbility sa, final boolean mandatory) { - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final ZoneType origin = ZoneType.listValueOf(sa.getParam("Origin")).get(0); final ZoneType destination = ZoneType.smartValueOf(sa.getParam("Destination")); final TargetRestrictions tgt = sa.getTargetRestrictions(); @@ -709,7 +709,7 @@ public class ChangeZoneAi extends SpellAbilityAi { list = CardLists.filter(list, Predicates.not(CardPredicates.nameEquals(source.getName()))); // Don't get the same card back. } - if (list.size() < tgt.getMinTargets(sa.getSourceCard(), sa)) { + if (list.size() < tgt.getMinTargets(sa.getHostCard(), sa)) { return false; } @@ -724,7 +724,7 @@ public class ChangeZoneAi extends SpellAbilityAi { // if it's blink or bounce, try to save my about to die stuff if ((destination.equals(ZoneType.Hand) || (destination.equals(ZoneType.Exile) && (subApi == ApiType.DelayedTrigger || (subApi == ApiType.ChangeZone && subAffected.equals("Remembered"))))) - && (tgt.getMinTargets(sa.getSourceCard(), sa) <= 1)) { + && (tgt.getMinTargets(sa.getHostCard(), sa) <= 1)) { // check stack for something on the stack that will kill // anything i control @@ -784,7 +784,7 @@ public class ChangeZoneAi extends SpellAbilityAi { // counters TODO check good and // bad counters // checks only if there is a dangerous ETB effect - return !c.equals(sa.getSourceCard()) && SpellPermanent.checkETBEffects(c, ai); + return !c.equals(sa.getHostCard()) && SpellPermanent.checkETBEffects(c, ai); } }); if (!aiPermanents.isEmpty()) { @@ -855,12 +855,12 @@ public class ChangeZoneAi extends SpellAbilityAi { return false; } - if (!mandatory && list.size() < tgt.getMinTargets(sa.getSourceCard(), sa)) { + if (!mandatory && list.size() < tgt.getMinTargets(sa.getHostCard(), sa)) { return false; } // target loop - while (sa.getTargets().getNumTargeted() < tgt.getMaxTargets(sa.getSourceCard(), sa)) { + while (sa.getTargets().getNumTargeted() < tgt.getMaxTargets(sa.getHostCard(), sa)) { // AI Targeting Card choice = null; @@ -909,7 +909,7 @@ public class ChangeZoneAi extends SpellAbilityAi { } } if (choice == null) { // can't find anything left - if (sa.getTargets().getNumTargeted() == 0 || sa.getTargets().getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa)) { + if (sa.getTargets().getNumTargeted() == 0 || sa.getTargets().getNumTargeted() < tgt.getMinTargets(sa.getHostCard(), sa)) { if (!mandatory) { sa.resetTargets(); } @@ -948,7 +948,7 @@ public class ChangeZoneAi extends SpellAbilityAi { return false; } - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final ZoneType origin = ZoneType.listValueOf(sa.getParam("Origin")).get(0); final ZoneType destination = ZoneType.smartValueOf(sa.getParam("Destination")); final TargetRestrictions tgt = sa.getTargetRestrictions(); @@ -978,7 +978,7 @@ public class ChangeZoneAi extends SpellAbilityAi { } // target loop - while (sa.getTargets().getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa)) { + while (sa.getTargets().getNumTargeted() < tgt.getMinTargets(sa.getHostCard(), sa)) { // AI Targeting Card choice = null; @@ -1020,7 +1020,7 @@ public class ChangeZoneAi extends SpellAbilityAi { } } if (choice == null) { // can't find anything left - if ((sa.getTargets().getNumTargeted() == 0) || (sa.getTargets().getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa))) { + if ((sa.getTargets().getNumTargeted() == 0) || (sa.getTargets().getNumTargeted() < tgt.getMinTargets(sa.getHostCard(), sa))) { sa.resetTargets(); return false; } else { @@ -1057,7 +1057,7 @@ public class ChangeZoneAi extends SpellAbilityAi { if (sa.getTargetRestrictions() == null) { // Just in case of Defined cases if (!mandatory && sa.hasParam("AttachedTo")) { - final List list = AbilityUtils.getDefinedCards(sa.getSourceCard(), sa.getParam("AttachedTo"), sa); + final List list = AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("AttachedTo"), sa); if (!list.isEmpty()) { final Card attachedTo = list.get(0); // This code is for the Dragon auras @@ -1132,7 +1132,7 @@ public class ChangeZoneAi extends SpellAbilityAi { } } else { // Don't fetch another tutor with the same name - List sameNamed = CardLists.filter(fetchList, Predicates.not(CardPredicates.nameEquals(sa.getSourceCard().getName()))); + List sameNamed = CardLists.filter(fetchList, Predicates.not(CardPredicates.nameEquals(sa.getHostCard().getName()))); if (origin.contains(ZoneType.Library) && !sameNamed.isEmpty()) { fetchList = sameNamed; } diff --git a/forge-game/src/main/java/forge/ai/ability/ChangeZoneAllAi.java b/forge-game/src/main/java/forge/ai/ability/ChangeZoneAllAi.java index 19b9c8d19e0..c45ec24263e 100644 --- a/forge-game/src/main/java/forge/ai/ability/ChangeZoneAllAi.java +++ b/forge-game/src/main/java/forge/ai/ability/ChangeZoneAllAi.java @@ -26,7 +26,7 @@ public class ChangeZoneAllAi extends SpellAbilityAi { protected boolean canPlayAI(Player ai, SpellAbility sa) { // Change Zone All, can be any type moving from one zone to another final Cost abCost = sa.getPayCosts(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final ZoneType destination = ZoneType.smartValueOf(sa.getParam("Destination")); final ZoneType origin = ZoneType.listValueOf(sa.getParam("Origin")).get(0); diff --git a/forge-game/src/main/java/forge/ai/ability/ChooseCardAi.java b/forge-game/src/main/java/forge/ai/ability/ChooseCardAi.java index d6b6895da33..3a4cab12945 100644 --- a/forge-game/src/main/java/forge/ai/ability/ChooseCardAi.java +++ b/forge-game/src/main/java/forge/ai/ability/ChooseCardAi.java @@ -26,7 +26,7 @@ public class ChooseCardAi extends SpellAbilityAi { */ @Override protected boolean canPlayAI(final Player ai, SpellAbility sa) { - final Card host = sa.getSourceCard(); + final Card host = sa.getHostCard(); final Game game = ai.getGame(); final TargetRestrictions tgt = sa.getTargetRestrictions(); @@ -100,7 +100,7 @@ public class ChooseCardAi extends SpellAbilityAi { */ @Override public Card chooseSingleCard(final Player ai, SpellAbility sa, Collection options, boolean isOptional, Player targetedPlayer) { - final Card host = sa.getSourceCard(); + final Card host = sa.getHostCard(); final String logic = sa.getParam("AILogic"); Card choice = null; if (logic == null) { diff --git a/forge-game/src/main/java/forge/ai/ability/ChooseCardNameAi.java b/forge-game/src/main/java/forge/ai/ability/ChooseCardNameAi.java index 1106a14a1ab..c310c356bd4 100644 --- a/forge-game/src/main/java/forge/ai/ability/ChooseCardNameAi.java +++ b/forge-game/src/main/java/forge/ai/ability/ChooseCardNameAi.java @@ -13,7 +13,7 @@ public class ChooseCardNameAi extends SpellAbilityAi { @Override protected boolean canPlayAI(Player ai, SpellAbility sa) { - Card source = sa.getSourceCard(); + Card source = sa.getHostCard(); if (sa.hasParam("AILogic")) { // Don't tap creatures that may be able to block if (ComputerUtil.waitForBlocking(sa)) { diff --git a/forge-game/src/main/java/forge/ai/ability/ChooseSourceAi.java b/forge-game/src/main/java/forge/ai/ability/ChooseSourceAi.java index a4356326464..ee501075236 100644 --- a/forge-game/src/main/java/forge/ai/ability/ChooseSourceAi.java +++ b/forge-game/src/main/java/forge/ai/ability/ChooseSourceAi.java @@ -35,9 +35,9 @@ public class ChooseSourceAi extends SpellAbilityAi { // to be prevented (e.g. so the AI doesn't attack with a creature that will not deal any damage // to the player because a CoP was pre-activated on it - unless, of course, there's another // possible reason to attack with that creature). - final Card host = sa.getSourceCard(); + final Card host = sa.getHostCard(); final Cost abCost = sa.getPayCosts(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); if (abCost != null) { // AI currently disabled for these costs @@ -72,7 +72,7 @@ public class ChooseSourceAi extends SpellAbilityAi { if (sa.getParam("AILogic").equals("NeedsPrevention")) { if (!game.getStack().isEmpty()) { final SpellAbility topStack = game.getStack().peekAbility(); - if (sa.hasParam("Choices") && !topStack.getSourceCard().isValid(sa.getParam("Choices"), ai, source)) { + if (sa.hasParam("Choices") && !topStack.getHostCard().isValid(sa.getParam("Choices"), ai, source)) { return false; } final ApiType threatApi = topStack.getApi(); @@ -80,7 +80,7 @@ public class ChooseSourceAi extends SpellAbilityAi { return false; } - final Card threatSource = topStack.getSourceCard(); + final Card threatSource = topStack.getHostCard(); List objects = getTargets(topStack); if (!topStack.usesTargeting() && topStack.hasParam("ValidPlayers") && !topStack.hasParam("Defined")) { objects = AbilityUtils.getDefinedPlayers(threatSource, topStack.getParam("ValidPlayers"), topStack); @@ -159,7 +159,7 @@ public class ChooseSourceAi extends SpellAbilityAi { final Card source = si.getSourceCard(); final SpellAbility abilityOnStack = si.getSpellAbility(); - if (sa.hasParam("Choices") && !abilityOnStack.getSourceCard().isValid(sa.getParam("Choices"), ai, sa.getSourceCard())) { + if (sa.hasParam("Choices") && !abilityOnStack.getHostCard().isValid(sa.getParam("Choices"), ai, sa.getHostCard())) { continue; } final ApiType threatApi = abilityOnStack.getApi(); diff --git a/forge-game/src/main/java/forge/ai/ability/ChooseTypeAi.java b/forge-game/src/main/java/forge/ai/ability/ChooseTypeAi.java index 687d6530d14..fc739c9effe 100644 --- a/forge-game/src/main/java/forge/ai/ability/ChooseTypeAi.java +++ b/forge-game/src/main/java/forge/ai/ability/ChooseTypeAi.java @@ -21,7 +21,7 @@ public class ChooseTypeAi extends SpellAbilityAi { sa.resetTargets(); sa.getTargets().add(ai); } else { - for (final Player p : AbilityUtils.getDefinedPlayers(sa.getSourceCard(), sa.getParam("Defined"), sa)) { + for (final Player p : AbilityUtils.getDefinedPlayers(sa.getHostCard(), sa.getParam("Defined"), sa)) { if (p.isOpponentOf(ai) && !mandatory) { return false; } diff --git a/forge-game/src/main/java/forge/ai/ability/CloneAi.java b/forge-game/src/main/java/forge/ai/ability/CloneAi.java index 50885a085db..682508b1ab3 100644 --- a/forge-game/src/main/java/forge/ai/ability/CloneAi.java +++ b/forge-game/src/main/java/forge/ai/ability/CloneAi.java @@ -18,7 +18,7 @@ public class CloneAi extends SpellAbilityAi { @Override protected boolean canPlayAI(Player ai, SpellAbility sa) { final TargetRestrictions tgt = sa.getTargetRestrictions(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final Game game = source.getGame(); boolean useAbility = true; diff --git a/forge-game/src/main/java/forge/ai/ability/ControlExchangeAi.java b/forge-game/src/main/java/forge/ai/ability/ControlExchangeAi.java index 8f0fdad8902..248c137a27f 100644 --- a/forge-game/src/main/java/forge/ai/ability/ControlExchangeAi.java +++ b/forge-game/src/main/java/forge/ai/ability/ControlExchangeAi.java @@ -28,7 +28,7 @@ public class ControlExchangeAi extends SpellAbilityAi { sa.resetTargets(); List list = - CardLists.getValidCards(ai.getOpponent().getCardsIn(ZoneType.Battlefield), tgt.getValidTgts(), ai, sa.getSourceCard()); + CardLists.getValidCards(ai.getOpponent().getCardsIn(ZoneType.Battlefield), tgt.getValidTgts(), ai, sa.getHostCard()); // AI won't try to grab cards that are filtered out of AI decks on // purpose list = CardLists.filter(list, new Predicate() { @@ -40,10 +40,10 @@ public class ControlExchangeAi extends SpellAbilityAi { }); object1 = ComputerUtilCard.getBestAI(list); if (sa.hasParam("Defined")) { - object2 = AbilityUtils.getDefinedCards(sa.getSourceCard(), sa.getParam("Defined"), sa).get(0); - } else if (tgt.getMinTargets(sa.getSourceCard(), sa) > 1) { + object2 = AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("Defined"), sa).get(0); + } else if (tgt.getMinTargets(sa.getHostCard(), sa) > 1) { List list2 = ai.getCardsIn(ZoneType.Battlefield); - list2 = CardLists.getValidCards(list2, tgt.getValidTgts(), ai, sa.getSourceCard()); + list2 = CardLists.getValidCards(list2, tgt.getValidTgts(), ai, sa.getHostCard()); object2 = ComputerUtilCard.getWorstAI(list2); sa.getTargets().add(object2); } diff --git a/forge-game/src/main/java/forge/ai/ability/ControlGainAi.java b/forge-game/src/main/java/forge/ai/ability/ControlGainAi.java index ed14c82d5cf..38cc884bd5c 100644 --- a/forge-game/src/main/java/forge/ai/ability/ControlGainAi.java +++ b/forge-game/src/main/java/forge/ai/ability/ControlGainAi.java @@ -106,7 +106,7 @@ public class ControlGainAi extends SpellAbilityAi { } List list = - CardLists.getValidCards(opp.getCardsIn(ZoneType.Battlefield), tgt.getValidTgts(), sa.getActivatingPlayer(), sa.getSourceCard()); + CardLists.getValidCards(opp.getCardsIn(ZoneType.Battlefield), tgt.getValidTgts(), sa.getActivatingPlayer(), sa.getHostCard()); // AI won't try to grab cards that are filtered out of AI decks on purpose list = CardLists.filter(list, new Predicate() { @@ -130,7 +130,7 @@ public class ControlGainAi extends SpellAbilityAi { return false; } - while (sa.getTargets().getNumTargeted() < tgt.getMaxTargets(sa.getSourceCard(), sa)) { + while (sa.getTargets().getNumTargeted() < tgt.getMaxTargets(sa.getHostCard(), sa)) { Card t = null; for (final Card c : list) { if (c.isCreature()) { @@ -148,7 +148,7 @@ public class ControlGainAi extends SpellAbilityAi { } if (list.isEmpty()) { - if ((sa.getTargets().getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa)) || (sa.getTargets().getNumTargeted() == 0)) { + if ((sa.getTargets().getNumTargeted() < tgt.getMinTargets(sa.getHostCard(), sa)) || (sa.getTargets().getNumTargeted() == 0)) { sa.resetTargets(); return false; } else { diff --git a/forge-game/src/main/java/forge/ai/ability/CopyPermanentAi.java b/forge-game/src/main/java/forge/ai/ability/CopyPermanentAi.java index b57d51a0c16..c64ca3a682c 100644 --- a/forge-game/src/main/java/forge/ai/ability/CopyPermanentAi.java +++ b/forge-game/src/main/java/forge/ai/ability/CopyPermanentAi.java @@ -25,7 +25,7 @@ public class CopyPermanentAi extends SpellAbilityAi { */ @Override protected boolean canPlayAI(Player aiPlayer, SpellAbility sa) { - // Card source = sa.getSourceCard(); + // Card source = sa.getHostCard(); // TODO - I'm sure someone can do this AI better if (ComputerUtil.preventRunAwayActivations(sa)) { @@ -41,7 +41,7 @@ public class CopyPermanentAi extends SpellAbilityAi { @Override protected boolean doTriggerAINoCost(final Player aiPlayer, SpellAbility sa, boolean mandatory) { - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); // //// // Targeting @@ -61,9 +61,9 @@ public class CopyPermanentAi extends SpellAbilityAi { }); sa.resetTargets(); // target loop - while (sa.getTargets().getNumTargeted() < abTgt.getMaxTargets(sa.getSourceCard(), sa)) { + while (sa.getTargets().getNumTargeted() < abTgt.getMaxTargets(sa.getHostCard(), sa)) { if (list.isEmpty()) { - if ((sa.getTargets().getNumTargeted() < abTgt.getMinTargets(sa.getSourceCard(), sa)) + if ((sa.getTargets().getNumTargeted() < abTgt.getMinTargets(sa.getHostCard(), sa)) || (sa.getTargets().getNumTargeted() == 0)) { sa.resetTargets(); return false; @@ -87,7 +87,7 @@ public class CopyPermanentAi extends SpellAbilityAi { } if (choice == null) { // can't find anything left - if ((sa.getTargets().getNumTargeted() < abTgt.getMinTargets(sa.getSourceCard(), sa)) + if ((sa.getTargets().getNumTargeted() < abTgt.getMinTargets(sa.getHostCard(), sa)) || (sa.getTargets().getNumTargeted() == 0)) { sa.resetTargets(); return false; diff --git a/forge-game/src/main/java/forge/ai/ability/CounterAi.java b/forge-game/src/main/java/forge/ai/ability/CounterAi.java index 6c8106f1b50..5e33c49bc30 100644 --- a/forge-game/src/main/java/forge/ai/ability/CounterAi.java +++ b/forge-game/src/main/java/forge/ai/ability/CounterAi.java @@ -19,7 +19,7 @@ public class CounterAi extends SpellAbilityAi { protected boolean canPlayAI(Player ai, SpellAbility sa) { boolean toReturn = true; final Cost abCost = sa.getPayCosts(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final Game game = ai.getGame(); if (game.getStack().isEmpty()) { return false; @@ -39,12 +39,12 @@ public class CounterAi extends SpellAbilityAi { if (tgt != null) { final SpellAbility topSA = game.getStack().peekAbility(); - if (!CardFactoryUtil.isCounterableBy(topSA.getSourceCard(), sa) || topSA.getActivatingPlayer() == ai) { + if (!CardFactoryUtil.isCounterableBy(topSA.getHostCard(), sa) || topSA.getActivatingPlayer() == ai) { // might as well check for player's friendliness return false; } - if (sa.hasParam("AITgts") && (topSA.getSourceCard() == null - || !topSA.getSourceCard().isValid(sa.getParam("AITgts"), sa.getActivatingPlayer(), source))) { + if (sa.hasParam("AITgts") && (topSA.getHostCard() == null + || !topSA.getHostCard().isValid(sa.getParam("AITgts"), sa.getActivatingPlayer(), source))) { return false; } @@ -115,7 +115,7 @@ public class CounterAi extends SpellAbilityAi { return false; } final SpellAbility topSA = game.getStack().peekAbility(); - if (!CardFactoryUtil.isCounterableBy(topSA.getSourceCard(), sa) || topSA.getActivatingPlayer() == ai) { + if (!CardFactoryUtil.isCounterableBy(topSA.getHostCard(), sa) || topSA.getActivatingPlayer() == ai) { return false; } @@ -128,7 +128,7 @@ public class CounterAi extends SpellAbilityAi { String unlessCost = sa.hasParam("UnlessCost") ? sa.getParam("UnlessCost").trim() : null; - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); if (unlessCost != null) { // Is this Usable Mana Sources? Or Total Available Mana? final int usableManaSources = ComputerUtilMana.getAvailableMana(ai.getOpponent(), true).size(); diff --git a/forge-game/src/main/java/forge/ai/ability/CountersMoveAi.java b/forge-game/src/main/java/forge/ai/ability/CountersMoveAi.java index d84c7b872b9..c89ca594a7f 100644 --- a/forge-game/src/main/java/forge/ai/ability/CountersMoveAi.java +++ b/forge-game/src/main/java/forge/ai/ability/CountersMoveAi.java @@ -28,7 +28,7 @@ public class CountersMoveAi extends SpellAbilityAi { // TODO handle proper calculation of X values based on Cost int amount = 0; if (!sa.getParam("CounterNum").equals("All")) { - amount = AbilityUtils.calculateAmount(sa.getSourceCard(), amountStr, sa); + amount = AbilityUtils.calculateAmount(sa.getHostCard(), amountStr, sa); } // don't use it if no counters to add if (amount <= 0) { @@ -47,13 +47,13 @@ public class CountersMoveAi extends SpellAbilityAi { @Override protected boolean doTriggerAINoCost(Player ai, SpellAbility sa, boolean mandatory) { - final Card host = sa.getSourceCard(); + final Card host = sa.getHostCard(); final TargetRestrictions abTgt = sa.getTargetRestrictions(); final String type = sa.getParam("CounterType"); final String amountStr = sa.getParam("CounterNum"); int amount = 0; if (!sa.getParam("CounterNum").equals("All")) { - amount = AbilityUtils.calculateAmount(sa.getSourceCard(), amountStr, sa); + amount = AbilityUtils.calculateAmount(sa.getHostCard(), amountStr, sa); } boolean chance = false; boolean preferred = true; diff --git a/forge-game/src/main/java/forge/ai/ability/CountersPutAi.java b/forge-game/src/main/java/forge/ai/ability/CountersPutAi.java index 42cfd753c2f..c33da550907 100644 --- a/forge-game/src/main/java/forge/ai/ability/CountersPutAi.java +++ b/forge-game/src/main/java/forge/ai/ability/CountersPutAi.java @@ -32,7 +32,7 @@ public class CountersPutAi extends SpellAbilityAi { final Random r = MyRandom.getRandom(); final Cost abCost = sa.getPayCosts(); final TargetRestrictions abTgt = sa.getTargetRestrictions(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); List list; Card choice = null; final String type = sa.getParam("CounterType"); @@ -120,9 +120,9 @@ public class CountersPutAi extends SpellAbilityAi { if (list.size() < abTgt.getMinTargets(source, sa)) { return false; } - while (sa.getTargets().getNumTargeted() < abTgt.getMaxTargets(sa.getSourceCard(), sa)) { + while (sa.getTargets().getNumTargeted() < abTgt.getMaxTargets(sa.getHostCard(), sa)) { if (list.isEmpty()) { - if ((sa.getTargets().getNumTargeted() < abTgt.getMinTargets(sa.getSourceCard(), sa)) + if ((sa.getTargets().getNumTargeted() < abTgt.getMinTargets(sa.getHostCard(), sa)) || (sa.getTargets().getNumTargeted() == 0)) { sa.resetTargets(); return false; @@ -139,7 +139,7 @@ public class CountersPutAi extends SpellAbilityAi { } if (choice == null) { // can't find anything left - if ((sa.getTargets().getNumTargeted() < abTgt.getMinTargets(sa.getSourceCard(), sa)) + if ((sa.getTargets().getNumTargeted() < abTgt.getMinTargets(sa.getHostCard(), sa)) || (sa.getTargets().getNumTargeted() == 0)) { sa.resetTargets(); return false; @@ -158,7 +158,7 @@ public class CountersPutAi extends SpellAbilityAi { } } } else { - final List cards = AbilityUtils.getDefinedCards(sa.getSourceCard(), sa.getParam("Defined"), sa); + final List cards = AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("Defined"), sa); // Don't activate Curse abilities on my cards and non-curse abilites // on my opponents if (cards.isEmpty() || !cards.get(0).getController().equals(player)) { @@ -197,12 +197,12 @@ public class CountersPutAi extends SpellAbilityAi { public boolean chkAIDrawback(final SpellAbility sa, Player ai) { boolean chance = true; final TargetRestrictions abTgt = sa.getTargetRestrictions(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); Card choice = null; final String type = sa.getParam("CounterType"); final String amountStr = sa.getParam("CounterNum"); final boolean divided = sa.hasParam("DividedAsYouChoose"); - final int amount = AbilityUtils.calculateAmount(sa.getSourceCard(), amountStr, sa); + final int amount = AbilityUtils.calculateAmount(sa.getHostCard(), amountStr, sa); final Player player = sa.isCurse() ? ai.getOpponent() : ai; @@ -216,7 +216,7 @@ public class CountersPutAi extends SpellAbilityAi { sa.resetTargets(); // target loop - while (sa.getTargets().getNumTargeted() < abTgt.getMaxTargets(sa.getSourceCard(), sa)) { + while (sa.getTargets().getNumTargeted() < abTgt.getMaxTargets(sa.getHostCard(), sa)) { list = CardLists.filter(list, new Predicate() { @Override public boolean apply(final Card c) { @@ -224,7 +224,7 @@ public class CountersPutAi extends SpellAbilityAi { } }); if (list.size() == 0) { - if ((sa.getTargets().getNumTargeted() < abTgt.getMinTargets(sa.getSourceCard(), sa)) + if ((sa.getTargets().getNumTargeted() < abTgt.getMinTargets(sa.getHostCard(), sa)) || (sa.getTargets().getNumTargeted() == 0)) { sa.resetTargets(); return false; @@ -240,7 +240,7 @@ public class CountersPutAi extends SpellAbilityAi { } if (choice == null) { // can't find anything left - if ((sa.getTargets().getNumTargeted() < abTgt.getMinTargets(sa.getSourceCard(), sa)) + if ((sa.getTargets().getNumTargeted() < abTgt.getMinTargets(sa.getHostCard(), sa)) || (sa.getTargets().getNumTargeted() == 0)) { sa.resetTargets(); return false; @@ -264,7 +264,7 @@ public class CountersPutAi extends SpellAbilityAi { @Override protected boolean doTriggerAINoCost(Player ai, SpellAbility sa, boolean mandatory) { final TargetRestrictions abTgt = sa.getTargetRestrictions(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); // boolean chance = true; boolean preferred = true; List list; @@ -273,7 +273,7 @@ public class CountersPutAi extends SpellAbilityAi { final String type = sa.getParam("CounterType"); final String amountStr = sa.getParam("CounterNum"); final boolean divided = sa.hasParam("DividedAsYouChoose"); - final int amount = AbilityUtils.calculateAmount(sa.getSourceCard(), amountStr, sa); + final int amount = AbilityUtils.calculateAmount(sa.getHostCard(), amountStr, sa); if (abTgt == null) { // No target. So must be defined @@ -348,7 +348,7 @@ public class CountersPutAi extends SpellAbilityAi { */ @Override public boolean confirmAction(Player player, SpellAbility sa, PlayerActionConfirmMode mode, String message) { - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); if (mode == PlayerActionConfirmMode.Tribute) { // add counter if that opponent has a giant creature final List creats = player.getCreaturesInPlay(); diff --git a/forge-game/src/main/java/forge/ai/ability/CountersPutAllAi.java b/forge-game/src/main/java/forge/ai/ability/CountersPutAllAi.java index 27d77f9e90d..a73c79f9c91 100644 --- a/forge-game/src/main/java/forge/ai/ability/CountersPutAllAi.java +++ b/forge-game/src/main/java/forge/ai/ability/CountersPutAllAi.java @@ -29,7 +29,7 @@ public class CountersPutAllAi extends SpellAbilityAi { // the expected targets could be final Random r = MyRandom.getRandom(); final Cost abCost = sa.getPayCosts(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); List hList; List cList; final String type = sa.getParam("CounterType"); @@ -72,7 +72,7 @@ public class CountersPutAllAi extends SpellAbilityAi { amount = ComputerUtilMana.determineLeftoverMana(sa, ai); source.setSVar("PayX", Integer.toString(amount)); } else { - amount = AbilityUtils.calculateAmount(sa.getSourceCard(), amountStr, sa); + amount = AbilityUtils.calculateAmount(sa.getHostCard(), amountStr, sa); } // prevent run-away activations - first time will always return true diff --git a/forge-game/src/main/java/forge/ai/ability/CountersPutOrRemoveAi.java b/forge-game/src/main/java/forge/ai/ability/CountersPutOrRemoveAi.java index 471161899db..2c6b3025706 100644 --- a/forge-game/src/main/java/forge/ai/ability/CountersPutOrRemoveAi.java +++ b/forge-game/src/main/java/forge/ai/ability/CountersPutOrRemoveAi.java @@ -51,7 +51,7 @@ public class CountersPutOrRemoveAi extends SpellAbilityAi { List zones = ZoneType.listValueOf(sa.getParamOrDefault("TgtZones", "Battlefield")); List validCards = CardLists.getValidCards(ai.getGame().getCardsIn(zones), - tgt.getValidTgts(), sa.getActivatingPlayer(), sa.getSourceCard()); + tgt.getValidTgts(), sa.getActivatingPlayer(), sa.getHostCard()); if (validCards.isEmpty()) { return false; @@ -72,9 +72,9 @@ public class CountersPutOrRemoveAi extends SpellAbilityAi { } } - while (sa.getTargets().getNumTargeted() < tgt.getMaxTargets(sa.getSourceCard(), sa)) { + while (sa.getTargets().getNumTargeted() < tgt.getMaxTargets(sa.getHostCard(), sa)) { Card targetCard = null; - if (cWithCounters.isEmpty() && ((sa.getTargets().getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa)) + if (cWithCounters.isEmpty() && ((sa.getTargets().getNumTargeted() < tgt.getMinTargets(sa.getHostCard(), sa)) || (sa.getTargets().getNumTargeted() == 0))) { sa.resetTargets(); return false; diff --git a/forge-game/src/main/java/forge/ai/ability/CountersRemoveAi.java b/forge-game/src/main/java/forge/ai/ability/CountersRemoveAi.java index be8b9e38b5b..5e722902d54 100644 --- a/forge-game/src/main/java/forge/ai/ability/CountersRemoveAi.java +++ b/forge-game/src/main/java/forge/ai/ability/CountersRemoveAi.java @@ -20,7 +20,7 @@ public class CountersRemoveAi extends SpellAbilityAi { // the expected targets could be final Cost abCost = sa.getPayCosts(); TargetRestrictions abTgt = sa.getTargetRestrictions(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); // List list; // Card choice = null; @@ -59,7 +59,7 @@ public class CountersRemoveAi extends SpellAbilityAi { } // TODO handle proper calculation of X values based on Cost - // final int amount = calculateAmount(sa.getSourceCard(), amountStr, sa); + // final int amount = calculateAmount(sa.getHostCard(), amountStr, sa); if (ComputerUtil.preventRunAwayActivations(sa)) { return false; @@ -77,7 +77,7 @@ public class CountersRemoveAi extends SpellAbilityAi { } if (!type.matches("Any")) { - final int currCounters = sa.getSourceCard().getCounters(CounterType.valueOf(type)); + final int currCounters = sa.getHostCard().getCounters(CounterType.valueOf(type)); if (currCounters < 1) { return false; } diff --git a/forge-game/src/main/java/forge/ai/ability/DamageAiBase.java b/forge-game/src/main/java/forge/ai/ability/DamageAiBase.java index bfb00c0e909..b606064ce90 100644 --- a/forge-game/src/main/java/forge/ai/ability/DamageAiBase.java +++ b/forge-game/src/main/java/forge/ai/ability/DamageAiBase.java @@ -31,9 +31,9 @@ public abstract class DamageAiBase extends SpellAbilityAi { } if (!noPrevention) { - restDamage = ComputerUtilCombat.predictDamageTo(enemy, restDamage, sa.getSourceCard(), false); + restDamage = ComputerUtilCombat.predictDamageTo(enemy, restDamage, sa.getHostCard(), false); } else { - restDamage = enemy.staticReplaceDamage(restDamage, sa.getSourceCard(), false); + restDamage = enemy.staticReplaceDamage(restDamage, sa.getHostCard(), false); } if (restDamage == 0) { diff --git a/forge-game/src/main/java/forge/ai/ability/DamageAllAi.java b/forge-game/src/main/java/forge/ai/ability/DamageAllAi.java index 66a4d026529..5911ccb4c3e 100644 --- a/forge-game/src/main/java/forge/ai/ability/DamageAllAi.java +++ b/forge-game/src/main/java/forge/ai/ability/DamageAllAi.java @@ -24,12 +24,12 @@ public class DamageAllAi extends SpellAbilityAi { // based on what the expected targets could be final Random r = MyRandom.getRandom(); final Cost abCost = sa.getPayCosts(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); String validP = ""; final String damage = sa.getParam("NumDmg"); - int dmg = AbilityUtils.calculateAmount(sa.getSourceCard(), damage, sa); + int dmg = AbilityUtils.calculateAmount(sa.getHostCard(), damage, sa); if (damage.equals("X") && sa.getSVar(damage).equals("Count$xPaid")) { @@ -99,11 +99,11 @@ public class DamageAllAi extends SpellAbilityAi { @Override public boolean chkAIDrawback(SpellAbility sa, Player ai) { - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); String validP = ""; final String damage = sa.getParam("NumDmg"); - int dmg = AbilityUtils.calculateAmount(sa.getSourceCard(), damage, sa); + int dmg = AbilityUtils.calculateAmount(sa.getHostCard(), damage, sa); if (damage.equals("X") && sa.getSVar(damage).equals("Count$xPaid")) { // Set PayX here to maximum value. @@ -161,7 +161,7 @@ public class DamageAllAi extends SpellAbilityAi { * @return a {@link forge.CardList} object. */ private List getKillableCreatures(final SpellAbility sa, final Player player, final int dmg) { - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); String validC = sa.hasParam("ValidCards") ? sa.getParam("ValidCards") : ""; // TODO: X may be something different than X paid @@ -183,11 +183,11 @@ public class DamageAllAi extends SpellAbilityAi { @Override protected boolean doTriggerAINoCost(Player ai, SpellAbility sa, boolean mandatory) { - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); String validP = ""; final String damage = sa.getParam("NumDmg"); - int dmg = AbilityUtils.calculateAmount(sa.getSourceCard(), damage, sa); + int dmg = AbilityUtils.calculateAmount(sa.getHostCard(), damage, sa); if (damage.equals("X") && sa.getSVar(damage).equals("Count$xPaid")) { // Set PayX here to maximum value. diff --git a/forge-game/src/main/java/forge/ai/ability/DamageDealAi.java b/forge-game/src/main/java/forge/ai/ability/DamageDealAi.java index 73e3902b99b..c64ae375fd1 100644 --- a/forge-game/src/main/java/forge/ai/ability/DamageDealAi.java +++ b/forge-game/src/main/java/forge/ai/ability/DamageDealAi.java @@ -28,9 +28,9 @@ public class DamageDealAi extends DamageAiBase { @Override public boolean chkAIDrawback(SpellAbility sa, Player ai) { final String damage = sa.getParam("NumDmg"); - int dmg = AbilityUtils.calculateAmount(sa.getSourceCard(), damage, sa); + int dmg = AbilityUtils.calculateAmount(sa.getHostCard(), damage, sa); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); if (damage.equals("X") && sa.getSVar(damage).equals("Count$xPaid")) { // Set PayX here to maximum value. @@ -47,10 +47,10 @@ public class DamageDealAi extends DamageAiBase { protected boolean canPlayAI(Player ai, SpellAbility sa) { final Cost abCost = sa.getPayCosts(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final String damage = sa.getParam("NumDmg"); - int dmg = AbilityUtils.calculateAmount(sa.getSourceCard(), damage, sa); + int dmg = AbilityUtils.calculateAmount(sa.getHostCard(), damage, sa); if (damage.equals("X") && sa.getSVar(damage).equals("Count$xPaid")) { // Set PayX here to maximum value. @@ -140,7 +140,7 @@ public class DamageDealAi extends DamageAiBase { return null; } final TargetRestrictions tgt = sa.getTargetRestrictions(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); List hPlay = CardLists.getValidCards(pl.getCardsIn(ZoneType.Battlefield), tgt.getValidTgts(), ai, source); final List objects = Lists.newArrayList(sa.getTargets().getTargets()); @@ -231,7 +231,7 @@ public class DamageDealAi extends DamageAiBase { */ private boolean damageChoosingTargets(final Player ai, final SpellAbility sa, final TargetRestrictions tgt, int dmg, final boolean isTrigger, final boolean mandatory) { - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final boolean noPrevention = sa.hasParam("NoPrevention"); final Game game = source.getGame(); final PhaseHandler phase = game.getPhaseHandler(); @@ -368,14 +368,14 @@ public class DamageDealAi extends DamageAiBase { */ private boolean damageChooseNontargeted(Player ai, final SpellAbility saMe, final int dmg) { // TODO: Improve circumstances where the Defined Damage is unwanted - final List objects = AbilityUtils.getDefinedObjects(saMe.getSourceCard(), saMe.getParam("Defined"), saMe); + final List objects = AbilityUtils.getDefinedObjects(saMe.getHostCard(), saMe.getParam("Defined"), saMe); boolean urgent = false; // can it wait? boolean positive = false; for (final Object o : objects) { if (o instanceof Card) { Card c = (Card) o; - final int restDamage = ComputerUtilCombat.predictDamageTo(c, dmg, saMe.getSourceCard(), false); + final int restDamage = ComputerUtilCombat.predictDamageTo(c, dmg, saMe.getHostCard(), false); if (!c.hasKeyword("Indestructible") && ComputerUtilCombat.getDamageToKill(c) <= restDamage) { if (c.getController().equals(ai)) { return false; @@ -388,7 +388,7 @@ public class DamageDealAi extends DamageAiBase { } } else if (o instanceof Player) { final Player p = (Player) o; - final int restDamage = ComputerUtilCombat.predictDamageTo(p, dmg, saMe.getSourceCard(), false); + final int restDamage = ComputerUtilCombat.predictDamageTo(p, dmg, saMe.getHostCard(), false); if (!p.isOpponentOf(ai) && p.canLoseLife() && restDamage + 3 >= p.getLife() && restDamage > 0) { // from this spell will kill me return false; @@ -431,7 +431,7 @@ public class DamageDealAi extends DamageAiBase { final boolean noPrevention = sa.hasParam("NoPrevention"); final boolean divided = sa.hasParam("DividedAsYouChoose"); - while (sa.getTargets().getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa)) { + while (sa.getTargets().getNumTargeted() < tgt.getMinTargets(sa.getHostCard(), sa)) { // TODO: Consider targeting the planeswalker if (tgt.canTgtCreature()) { final Card c = this.dealDamageChooseTgtC(ai, sa, dmg, noPrevention, ai, mandatory); @@ -465,7 +465,7 @@ public class DamageDealAi extends DamageAiBase { @Override protected boolean doTriggerAINoCost(Player ai, SpellAbility sa, boolean mandatory) { - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final String damage = sa.getParam("NumDmg"); int dmg = AbilityUtils.calculateAmount(source, damage, sa); diff --git a/forge-game/src/main/java/forge/ai/ability/DamageEachAi.java b/forge-game/src/main/java/forge/ai/ability/DamageEachAi.java index 3a4c360a7f0..03057b3c86b 100644 --- a/forge-game/src/main/java/forge/ai/ability/DamageEachAi.java +++ b/forge-game/src/main/java/forge/ai/ability/DamageEachAi.java @@ -21,7 +21,7 @@ public class DamageEachAi extends DamageAiBase { } final String damage = sa.getParam("NumDmg"); - final int iDmg = AbilityUtils.calculateAmount(sa.getSourceCard(), damage, sa); + final int iDmg = AbilityUtils.calculateAmount(sa.getHostCard(), damage, sa); return this.shouldTgtP(ai, sa, iDmg, false); } diff --git a/forge-game/src/main/java/forge/ai/ability/DamagePreventAi.java b/forge-game/src/main/java/forge/ai/ability/DamagePreventAi.java index 2f1e7706370..554a7386889 100644 --- a/forge-game/src/main/java/forge/ai/ability/DamagePreventAi.java +++ b/forge-game/src/main/java/forge/ai/ability/DamagePreventAi.java @@ -24,7 +24,7 @@ public class DamagePreventAi extends SpellAbilityAi { @Override protected boolean canPlayAI(Player ai, SpellAbility sa) { - final Card hostCard = sa.getSourceCard(); + final Card hostCard = sa.getHostCard(); final Game game = ai.getGame(); final Combat combat = game.getCombat(); boolean chance = false; @@ -52,7 +52,7 @@ public class DamagePreventAi extends SpellAbilityAi { if (tgt == null) { // As far as I can tell these Defined Cards will only have one of // them - final List objects = AbilityUtils.getDefinedObjects(sa.getSourceCard(), sa.getParam("Defined"), sa); + final List objects = AbilityUtils.getDefinedObjects(sa.getHostCard(), sa.getParam("Defined"), sa); // react to threats on the stack if (!game.getStack().isEmpty()) { @@ -145,7 +145,7 @@ public class DamagePreventAi extends SpellAbilityAi { } } if (sa.hasParam("DividedAsYouChoose") && sa.getTargets() != null && !sa.getTargets().getTargets().isEmpty()) { - tgt.addDividedAllocation(sa.getTargets().getTargets().get(0), AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("Amount"), sa)); + tgt.addDividedAllocation(sa.getTargets().getTargets().get(0), AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("Amount"), sa)); } return chance; @@ -184,7 +184,7 @@ public class DamagePreventAi extends SpellAbilityAi { // filter AIs battlefield by what I can target final Game game = ai.getGame(); List targetables = game.getCardsIn(ZoneType.Battlefield); - targetables = CardLists.getValidCards(targetables, tgt.getValidTgts(), ai, sa.getSourceCard()); + targetables = CardLists.getValidCards(targetables, tgt.getValidTgts(), ai, sa.getHostCard()); final List compTargetables = CardLists.filterControlledBy(targetables, ai); Card target = null; @@ -216,7 +216,7 @@ public class DamagePreventAi extends SpellAbilityAi { } sa.getTargets().add(target); if (sa.hasParam("DividedAsYouChoose")) { - tgt.addDividedAllocation(target, AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("Amount"), sa)); + tgt.addDividedAllocation(target, AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("Amount"), sa)); } return true; } diff --git a/forge-game/src/main/java/forge/ai/ability/DamagePreventAllAi.java b/forge-game/src/main/java/forge/ai/ability/DamagePreventAllAi.java index 744b9456481..1b5674c7217 100644 --- a/forge-game/src/main/java/forge/ai/ability/DamagePreventAllAi.java +++ b/forge-game/src/main/java/forge/ai/ability/DamagePreventAllAi.java @@ -16,7 +16,7 @@ public class DamagePreventAllAi extends SpellAbilityAi { */ @Override protected boolean canPlayAI(Player ai, SpellAbility sa) { - final Card hostCard = sa.getSourceCard(); + final Card hostCard = sa.getHostCard(); boolean chance = false; final Cost cost = sa.getPayCosts(); diff --git a/forge-game/src/main/java/forge/ai/ability/DebuffAi.java b/forge-game/src/main/java/forge/ai/ability/DebuffAi.java index cfb21ced6e4..63670e5c4f1 100644 --- a/forge-game/src/main/java/forge/ai/ability/DebuffAi.java +++ b/forge-game/src/main/java/forge/ai/ability/DebuffAi.java @@ -32,7 +32,7 @@ public class DebuffAi extends SpellAbilityAi { @Override protected boolean canPlayAI(final Player ai, final SpellAbility sa) { // if there is no target and host card isn't in play, don't activate - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final Game game = ai.getGame(); if ((sa.getTargetRestrictions() == null) && !source.isInPlay()) { return false; @@ -75,7 +75,7 @@ public class DebuffAi extends SpellAbilityAi { } if (!sa.usesTargeting() || !sa.getTargetRestrictions().doesTarget()) { - List cards = AbilityUtils.getDefinedCards(sa.getSourceCard(), sa.getParam("Defined"), sa); + List cards = AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("Defined"), sa); final Combat combat = game.getCombat(); @@ -134,7 +134,7 @@ public class DebuffAi extends SpellAbilityAi { final TargetRestrictions tgt = sa.getTargetRestrictions(); sa.resetTargets(); List list = getCurseCreatures(ai, sa, kws == null ? Lists.newArrayList() : kws); - list = CardLists.getValidCards(list, tgt.getValidTgts(), sa.getActivatingPlayer(), sa.getSourceCard()); + list = CardLists.getValidCards(list, tgt.getValidTgts(), sa.getActivatingPlayer(), sa.getHostCard()); // several uses here: // 1. make human creatures lose evasion when they are attacking @@ -147,12 +147,12 @@ public class DebuffAi extends SpellAbilityAi { return mandatory && debuffMandatoryTarget(ai, sa, mandatory); } - while (sa.getTargets().getNumTargeted() < tgt.getMaxTargets(sa.getSourceCard(), sa)) { + while (sa.getTargets().getNumTargeted() < tgt.getMaxTargets(sa.getHostCard(), sa)) { Card t = null; // boolean goodt = false; if (list.isEmpty()) { - if ((sa.getTargets().getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa)) || (sa.getTargets().getNumTargeted() == 0)) { + if ((sa.getTargets().getNumTargeted() < tgt.getMinTargets(sa.getHostCard(), sa)) || (sa.getTargets().getNumTargeted() == 0)) { if (mandatory) { return debuffMandatoryTarget(ai, sa, mandatory); } @@ -220,9 +220,9 @@ public class DebuffAi extends SpellAbilityAi { private boolean debuffMandatoryTarget(final Player ai, final SpellAbility sa, final boolean mandatory) { List list = ai.getGame().getCardsIn(ZoneType.Battlefield); final TargetRestrictions tgt = sa.getTargetRestrictions(); - list = CardLists.getValidCards(list, tgt.getValidTgts(), sa.getActivatingPlayer(), sa.getSourceCard()); + list = CardLists.getValidCards(list, tgt.getValidTgts(), sa.getActivatingPlayer(), sa.getHostCard()); - if (list.size() < tgt.getMinTargets(sa.getSourceCard(), sa)) { + if (list.size() < tgt.getMinTargets(sa.getHostCard(), sa)) { sa.resetTargets(); return false; } @@ -234,7 +234,7 @@ public class DebuffAi extends SpellAbilityAi { final List pref = CardLists.filterControlledBy(list, ai.getOpponent()); final List forced = CardLists.filterControlledBy(list, ai); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); while (sa.getTargets().getNumTargeted() < tgt.getMaxTargets(source, sa)) { if (pref.isEmpty()) { @@ -253,7 +253,7 @@ public class DebuffAi extends SpellAbilityAi { sa.getTargets().add(c); } - while (sa.getTargets().getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa)) { + while (sa.getTargets().getNumTargeted() < tgt.getMinTargets(sa.getHostCard(), sa)) { if (forced.isEmpty()) { break; } @@ -272,7 +272,7 @@ public class DebuffAi extends SpellAbilityAi { sa.getTargets().add(c); } - if (sa.getTargets().getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa)) { + if (sa.getTargets().getNumTargeted() < tgt.getMinTargets(sa.getHostCard(), sa)) { sa.resetTargets(); return false; } diff --git a/forge-game/src/main/java/forge/ai/ability/DebuffAllAi.java b/forge-game/src/main/java/forge/ai/ability/DebuffAllAi.java index 0632f1d5cf8..45a2c76f03f 100644 --- a/forge-game/src/main/java/forge/ai/ability/DebuffAllAi.java +++ b/forge-game/src/main/java/forge/ai/ability/DebuffAllAi.java @@ -19,8 +19,8 @@ public class DebuffAllAi extends SpellAbilityAi { protected boolean canPlayAI(Player ai, SpellAbility sa) { String valid = ""; final Random r = MyRandom.getRandom(); - // final Card source = sa.getSourceCard(); - final Card hostCard = sa.getSourceCard(); + // final Card source = sa.getHostCard(); + final Card hostCard = sa.getHostCard(); final Player opp = ai.getOpponent(); final boolean chance = r.nextFloat() <= Math.pow(.6667, sa.getActivationsThisTurn()); // to diff --git a/forge-game/src/main/java/forge/ai/ability/DelayedTriggerAi.java b/forge-game/src/main/java/forge/ai/ability/DelayedTriggerAi.java index dd3c48472cb..9f3a2acc263 100644 --- a/forge-game/src/main/java/forge/ai/ability/DelayedTriggerAi.java +++ b/forge-game/src/main/java/forge/ai/ability/DelayedTriggerAi.java @@ -11,7 +11,7 @@ public class DelayedTriggerAi extends SpellAbilityAi { @Override public boolean chkAIDrawback(SpellAbility sa, Player ai) { final String svarName = sa.getParam("Execute"); - final SpellAbility trigsa = AbilityFactory.getAbility(sa.getSourceCard().getSVar(svarName), sa.getSourceCard()); + final SpellAbility trigsa = AbilityFactory.getAbility(sa.getHostCard().getSVar(svarName), sa.getHostCard()); trigsa.setActivatingPlayer(ai); if (trigsa instanceof AbilitySub) { @@ -24,7 +24,7 @@ public class DelayedTriggerAi extends SpellAbilityAi { @Override protected boolean doTriggerAINoCost(Player ai, SpellAbility sa, boolean mandatory) { final String svarName = sa.getParam("Execute"); - final SpellAbility trigsa = AbilityFactory.getAbility(sa.getSourceCard().getSVar(svarName), sa.getSourceCard()); + final SpellAbility trigsa = AbilityFactory.getAbility(sa.getHostCard().getSVar(svarName), sa.getHostCard()); trigsa.setActivatingPlayer(ai); if (!sa.hasParam("OptionalDecider")) { @@ -37,7 +37,7 @@ public class DelayedTriggerAi extends SpellAbilityAi { @Override protected boolean canPlayAI(Player ai, SpellAbility sa) { final String svarName = sa.getParam("Execute"); - final SpellAbility trigsa = AbilityFactory.getAbility(sa.getSourceCard().getSVar(svarName), sa.getSourceCard()); + final SpellAbility trigsa = AbilityFactory.getAbility(sa.getHostCard().getSVar(svarName), sa.getHostCard()); trigsa.setActivatingPlayer(ai); return trigsa.canPlayAI(ai); } diff --git a/forge-game/src/main/java/forge/ai/ability/DestroyAi.java b/forge-game/src/main/java/forge/ai/ability/DestroyAi.java index f2e648ec45c..5270954c104 100644 --- a/forge-game/src/main/java/forge/ai/ability/DestroyAi.java +++ b/forge-game/src/main/java/forge/ai/ability/DestroyAi.java @@ -41,7 +41,7 @@ public class DestroyAi extends SpellAbilityAi { final Random r = MyRandom.getRandom(); final Cost abCost = sa.getPayCosts(); final TargetRestrictions abTgt = sa.getTargetRestrictions(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final boolean noRegen = sa.hasParam("NoRegen"); List list; @@ -112,9 +112,9 @@ public class DestroyAi extends SpellAbilityAi { return false; } // target loop - while (sa.getTargets().getNumTargeted() < abTgt.getMaxTargets(sa.getSourceCard(), sa)) { + while (sa.getTargets().getNumTargeted() < abTgt.getMaxTargets(sa.getHostCard(), sa)) { if (list.size() == 0) { - if ((sa.getTargets().getNumTargeted() < abTgt.getMinTargets(sa.getSourceCard(), sa)) + if ((sa.getTargets().getNumTargeted() < abTgt.getMinTargets(sa.getHostCard(), sa)) || (sa.getTargets().getNumTargeted() == 0)) { sa.resetTargets(); return false; @@ -135,7 +135,7 @@ public class DestroyAi extends SpellAbilityAi { } if (choice == null) { // can't find anything left - if ((sa.getTargets().getNumTargeted() < abTgt.getMinTargets(sa.getSourceCard(), sa)) + if ((sa.getTargets().getNumTargeted() < abTgt.getMinTargets(sa.getHostCard(), sa)) || (sa.getTargets().getNumTargeted() == 0)) { sa.resetTargets(); return false; @@ -175,7 +175,7 @@ public class DestroyAi extends SpellAbilityAi { @Override protected boolean doTriggerAINoCost(Player ai, SpellAbility sa, boolean mandatory) { final TargetRestrictions tgt = sa.getTargetRestrictions(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final boolean noRegen = sa.hasParam("NoRegen"); if (tgt != null) { List list; @@ -183,7 +183,7 @@ public class DestroyAi extends SpellAbilityAi { list = CardLists.getTargetableCards(list, sa); list = CardLists.getValidCards(list, tgt.getValidTgts(), source.getController(), source); - if (list.isEmpty() || list.size() < tgt.getMinTargets(sa.getSourceCard(), sa)) { + if (list.isEmpty() || list.size() < tgt.getMinTargets(sa.getHostCard(), sa)) { return false; } @@ -209,10 +209,10 @@ public class DestroyAi extends SpellAbilityAi { list.remove(c); } - while (sa.getTargets().getNumTargeted() < tgt.getMaxTargets(sa.getSourceCard(), sa)) { + while (sa.getTargets().getNumTargeted() < tgt.getMaxTargets(sa.getHostCard(), sa)) { if (preferred.isEmpty()) { if ((sa.getTargets().getNumTargeted() == 0) - || (sa.getTargets().getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa))) { + || (sa.getTargets().getNumTargeted() < tgt.getMinTargets(sa.getHostCard(), sa))) { if (!mandatory) { sa.resetTargets(); return false; @@ -236,7 +236,7 @@ public class DestroyAi extends SpellAbilityAi { } } - while (sa.getTargets().getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa)) { + while (sa.getTargets().getNumTargeted() < tgt.getMinTargets(sa.getHostCard(), sa)) { if (list.isEmpty()) { break; } else { @@ -251,7 +251,7 @@ public class DestroyAi extends SpellAbilityAi { } } - if (sa.getTargets().getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa)) { + if (sa.getTargets().getNumTargeted() < tgt.getMinTargets(sa.getHostCard(), sa)) { return false; } } else { diff --git a/forge-game/src/main/java/forge/ai/ability/DestroyAllAi.java b/forge-game/src/main/java/forge/ai/ability/DestroyAllAi.java index 78ad43991b4..f7d470bc589 100644 --- a/forge-game/src/main/java/forge/ai/ability/DestroyAllAi.java +++ b/forge-game/src/main/java/forge/ai/ability/DestroyAllAi.java @@ -30,7 +30,7 @@ public class DestroyAllAi extends SpellAbilityAi { */ @Override protected boolean doTriggerAINoCost(Player ai, SpellAbility sa, boolean mandatory) { - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); String valid = ""; if (mandatory) { return true; @@ -80,7 +80,7 @@ public class DestroyAllAi extends SpellAbilityAi { // based on what the expected targets could be final Random r = MyRandom.getRandom(); final Cost abCost = sa.getPayCosts(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); String valid = ""; if (sa.hasParam("ValidCards")) { diff --git a/forge-game/src/main/java/forge/ai/ability/DigAi.java b/forge-game/src/main/java/forge/ai/ability/DigAi.java index e445cd04fd7..01d47658e25 100644 --- a/forge-game/src/main/java/forge/ai/ability/DigAi.java +++ b/forge-game/src/main/java/forge/ai/ability/DigAi.java @@ -24,7 +24,7 @@ public class DigAi extends SpellAbilityAi { protected boolean canPlayAI(Player ai, SpellAbility sa) { Player opp = ai.getOpponent(); - final Card host = sa.getSourceCard(); + final Card host = sa.getHostCard(); Player libraryOwner = ai; if (sa.usesTargeting()) { diff --git a/forge-game/src/main/java/forge/ai/ability/DigUntilAi.java b/forge-game/src/main/java/forge/ai/ability/DigUntilAi.java index 75b685a4cdc..19b0db8e4f9 100644 --- a/forge-game/src/main/java/forge/ai/ability/DigUntilAi.java +++ b/forge-game/src/main/java/forge/ai/ability/DigUntilAi.java @@ -19,7 +19,7 @@ public class DigUntilAi extends SpellAbilityAi { @Override protected boolean canPlayAI(Player ai, SpellAbility sa) { - Card source = sa.getSourceCard(); + Card source = sa.getHostCard(); double chance = .4; // 40 percent chance with instant speed stuff if (SpellAbilityAi.isSorcerySpeed(sa)) { chance = .667; // 66.7% chance for sorcery speed (since it will diff --git a/forge-game/src/main/java/forge/ai/ability/DiscardAi.java b/forge-game/src/main/java/forge/ai/ability/DiscardAi.java index 82cbbf40b15..27b7b5a0336 100644 --- a/forge-game/src/main/java/forge/ai/ability/DiscardAi.java +++ b/forge-game/src/main/java/forge/ai/ability/DiscardAi.java @@ -23,7 +23,7 @@ public class DiscardAi extends SpellAbilityAi { @Override protected boolean canPlayAI(Player ai, SpellAbility sa) { final TargetRestrictions tgt = sa.getTargetRestrictions(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final Cost abCost = sa.getPayCosts(); if (abCost != null) { @@ -54,7 +54,7 @@ public class DiscardAi extends SpellAbilityAi { } } else { // TODO: Add appropriate restrictions - final List players = AbilityUtils.getDefinedPlayers(sa.getSourceCard(), + final List players = AbilityUtils.getDefinedPlayers(sa.getHostCard(), sa.getParam("Defined"), sa); if (players.size() == 1) { @@ -85,7 +85,7 @@ public class DiscardAi extends SpellAbilityAi { } source.setSVar("PayX", Integer.toString(cardsToDiscard)); } else { - if (AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("NumCards"), sa) < 1) { + if (AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("NumCards"), sa) < 1) { return false; } } @@ -144,11 +144,11 @@ public class DiscardAi extends SpellAbilityAi { } } } else { - if ("X".equals(sa.getParam("RevealNumber")) && sa.getSourceCard().getSVar("X").equals("Count$xPaid")) { + if ("X".equals(sa.getParam("RevealNumber")) && sa.getHostCard().getSVar("X").equals("Count$xPaid")) { // Set PayX here to maximum value. final int cardsToDiscard = Math.min(ComputerUtilMana.determineLeftoverMana(sa, ai), ai.getOpponent() .getCardsIn(ZoneType.Hand).size()); - sa.getSourceCard().setSVar("PayX", Integer.toString(cardsToDiscard)); + sa.getHostCard().setSVar("PayX", Integer.toString(cardsToDiscard)); } } diff --git a/forge-game/src/main/java/forge/ai/ability/DrainManaAi.java b/forge-game/src/main/java/forge/ai/ability/DrainManaAi.java index 46887dd690c..311ce9033c9 100644 --- a/forge-game/src/main/java/forge/ai/ability/DrainManaAi.java +++ b/forge-game/src/main/java/forge/ai/ability/DrainManaAi.java @@ -18,7 +18,7 @@ public class DrainManaAi extends SpellAbilityAi { // AI cannot use this properly until he can use SAs during Humans turn final TargetRestrictions tgt = sa.getTargetRestrictions(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final Player opp = ai.getOpponent(); final Random r = MyRandom.getRandom(); boolean randomReturn = r.nextFloat() <= Math.pow(.6667, sa.getActivationsThisTurn()); @@ -45,7 +45,7 @@ public class DrainManaAi extends SpellAbilityAi { final Player opp = ai.getOpponent(); final TargetRestrictions tgt = sa.getTargetRestrictions(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); if (null == tgt) { if (mandatory) { @@ -71,7 +71,7 @@ public class DrainManaAi extends SpellAbilityAi { public boolean chkAIDrawback(SpellAbility sa, Player ai) { // AI cannot use this properly until he can use SAs during Humans turn final TargetRestrictions tgt = sa.getTargetRestrictions(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); boolean randomReturn = true; diff --git a/forge-game/src/main/java/forge/ai/ability/DrawAi.java b/forge-game/src/main/java/forge/ai/ability/DrawAi.java index dd7e61115ee..816f6b2569f 100644 --- a/forge-game/src/main/java/forge/ai/ability/DrawAi.java +++ b/forge-game/src/main/java/forge/ai/ability/DrawAi.java @@ -47,7 +47,7 @@ public class DrawAi extends SpellAbilityAi { @Override protected boolean canPlayAI(Player ai, SpellAbility sa) { final TargetRestrictions tgt = sa.getTargetRestrictions(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final Cost abCost = sa.getPayCosts(); final Game game = ai.getGame(); @@ -126,7 +126,7 @@ public class DrawAi extends SpellAbilityAi { private boolean targetAI(final Player ai, final SpellAbility sa, final boolean mandatory) { final TargetRestrictions tgt = sa.getTargetRestrictions(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final boolean drawback = (sa instanceof AbilitySub); final Game game = ai.getGame(); Player opp = ai.getOpponent(); @@ -143,7 +143,7 @@ public class DrawAi extends SpellAbilityAi { int numCards = 1; if (sa.hasParam("NumCards")) { - numCards = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("NumCards"), sa); + numCards = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("NumCards"), sa); } boolean xPaid = false; @@ -261,7 +261,7 @@ public class DrawAi extends SpellAbilityAi { */ @Override public boolean confirmAction(Player player, SpellAbility sa, PlayerActionConfirmMode mode, String message) { - int numCards = sa.hasParam("NumCards") ? AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("NumCards"), sa) : 1; + int numCards = sa.hasParam("NumCards") ? AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("NumCards"), sa) : 1; // AI shouldn't mill itself return numCards < player.getZone(ZoneType.Library).size(); } diff --git a/forge-game/src/main/java/forge/ai/ability/EffectAi.java b/forge-game/src/main/java/forge/ai/ability/EffectAi.java index c5e07abd0c1..47c0ff2049e 100644 --- a/forge-game/src/main/java/forge/ai/ability/EffectAi.java +++ b/forge-game/src/main/java/forge/ai/ability/EffectAi.java @@ -64,7 +64,7 @@ public class EffectAi extends SpellAbilityAi { if (tgt != null) { sa.resetTargets(); List list = game.getCombat().getAttackers(); - list = CardLists.getValidCards(list, tgt.getValidTgts(), sa.getActivatingPlayer(), sa.getSourceCard()); + list = CardLists.getValidCards(list, tgt.getValidTgts(), sa.getActivatingPlayer(), sa.getHostCard()); list = CardLists.getTargetableCards(list, sa); Card target = ComputerUtilCard.getBestCreatureAI(list); if (target == null) { @@ -123,7 +123,7 @@ public class EffectAi extends SpellAbilityAi { if ("False".equals(sa.getParam("Stackable"))) { String name = sa.getParam("Name"); if (name == null) { - name = sa.getSourceCard().getName() + "'s Effect"; + name = sa.getHostCard().getName() + "'s Effect"; } final List list = sa.getActivatingPlayer().getCardsIn(ZoneType.Command, name); if (!list.isEmpty()) { diff --git a/forge-game/src/main/java/forge/ai/ability/FightAi.java b/forge-game/src/main/java/forge/ai/ability/FightAi.java index 5f9f6b3aef7..6b16eee908f 100644 --- a/forge-game/src/main/java/forge/ai/ability/FightAi.java +++ b/forge-game/src/main/java/forge/ai/ability/FightAi.java @@ -22,7 +22,7 @@ public class FightAi extends SpellAbilityAi { @Override protected boolean canPlayAI(Player ai, SpellAbility sa) { sa.resetTargets(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); List aiCreatures = ai.getCreaturesInPlay(); aiCreatures = CardLists.getTargetableCards(aiCreatures, sa); @@ -107,7 +107,7 @@ public class FightAi extends SpellAbilityAi { } //try to make a good trade or no trade - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); List humCreatures = ai.getOpponent().getCreaturesInPlay(); humCreatures = CardLists.getTargetableCards(humCreatures, sa); if (humCreatures.isEmpty()) { diff --git a/forge-game/src/main/java/forge/ai/ability/LifeGainAi.java b/forge-game/src/main/java/forge/ai/ability/LifeGainAi.java index 0e3e04c1145..8ac36b16ea9 100644 --- a/forge-game/src/main/java/forge/ai/ability/LifeGainAi.java +++ b/forge-game/src/main/java/forge/ai/ability/LifeGainAi.java @@ -19,7 +19,7 @@ public class LifeGainAi extends SpellAbilityAi { @Override protected boolean canPlayAI(Player ai, SpellAbility sa) { final Cost abCost = sa.getPayCosts(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final Game game = source.getGame(); final int life = ai.getLife(); final String amountStr = sa.getParam("LifeAmount"); @@ -31,7 +31,7 @@ public class LifeGainAi extends SpellAbilityAi { source.setSVar("PayX", Integer.toString(xPay)); lifeAmount = xPay; } else { - lifeAmount = AbilityUtils.calculateAmount(sa.getSourceCard(), amountStr, sa); + lifeAmount = AbilityUtils.calculateAmount(sa.getHostCard(), amountStr, sa); } // don't use it if no life to gain @@ -148,7 +148,7 @@ public class LifeGainAi extends SpellAbilityAi { } } - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final String amountStr = sa.getParam("LifeAmount"); if (amountStr.equals("X") && source.getSVar(amountStr).equals("Count$xPaid")) { // Set PayX here to maximum value. diff --git a/forge-game/src/main/java/forge/ai/ability/LifeLoseAi.java b/forge-game/src/main/java/forge/ai/ability/LifeLoseAi.java index 1aeec2b53b2..db99cfdbbc1 100644 --- a/forge-game/src/main/java/forge/ai/ability/LifeLoseAi.java +++ b/forge-game/src/main/java/forge/ai/ability/LifeLoseAi.java @@ -21,7 +21,7 @@ public class LifeLoseAi extends SpellAbilityAi { List tgtPlayers = getTargetPlayers(sa); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final String amountStr = sa.getParam("LifeAmount"); int amount = 0; if (amountStr.equals("X") && source.getSVar(amountStr).equals("Count$xPaid")) { @@ -46,13 +46,13 @@ public class LifeLoseAi extends SpellAbilityAi { protected boolean canPlayAI(Player ai, SpellAbility sa) { final Cost abCost = sa.getPayCosts(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final String amountStr = sa.getParam("LifeAmount"); // TODO handle proper calculation of X values based on Cost and what // would be paid - int amount = AbilityUtils.calculateAmount(sa.getSourceCard(), amountStr, sa); + int amount = AbilityUtils.calculateAmount(sa.getHostCard(), amountStr, sa); if (amountStr.equals("X") && source.getSVar(amountStr).equals("Count$xPaid")) { // Set PayX here to maximum value. @@ -146,7 +146,7 @@ public class LifeLoseAi extends SpellAbilityAi { } } - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final String amountStr = sa.getParam("LifeAmount"); int amount = 0; if (amountStr.equals("X") && source.getSVar(amountStr).equals("Count$xPaid")) { diff --git a/forge-game/src/main/java/forge/ai/ability/LifeSetAi.java b/forge-game/src/main/java/forge/ai/ability/LifeSetAi.java index 4ee73bc437a..a0d8e6ab7ad 100644 --- a/forge-game/src/main/java/forge/ai/ability/LifeSetAi.java +++ b/forge-game/src/main/java/forge/ai/ability/LifeSetAi.java @@ -19,7 +19,7 @@ public class LifeSetAi extends SpellAbilityAi { protected boolean canPlayAI(Player ai, SpellAbility sa) { final Random r = MyRandom.getRandom(); // Ability_Cost abCost = sa.getPayCosts(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final int myLife = ai.getLife(); final Player opponent = ai.getOpponent(); final int hlife = opponent.getLife(); @@ -45,7 +45,7 @@ public class LifeSetAi extends SpellAbilityAi { source.setSVar("PayX", Integer.toString(xPay)); amount = xPay; } else { - amount = AbilityUtils.calculateAmount(sa.getSourceCard(), amountStr, sa); + amount = AbilityUtils.calculateAmount(sa.getHostCard(), amountStr, sa); } // prevent run-away activations - first time will always return true @@ -105,7 +105,7 @@ public class LifeSetAi extends SpellAbilityAi { final int myLife = ai.getLife(); final Player opponent = ai.getOpponent(); final int hlife = opponent.getLife(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final String amountStr = sa.getParam("LifeAmount"); @@ -116,7 +116,7 @@ public class LifeSetAi extends SpellAbilityAi { source.setSVar("PayX", Integer.toString(xPay)); amount = xPay; } else { - amount = AbilityUtils.calculateAmount(sa.getSourceCard(), amountStr, sa); + amount = AbilityUtils.calculateAmount(sa.getHostCard(), amountStr, sa); } if (source.getName().equals("Eternity Vessel") diff --git a/forge-game/src/main/java/forge/ai/ability/MillAi.java b/forge-game/src/main/java/forge/ai/ability/MillAi.java index 844fb0354bf..14eb5f847ea 100644 --- a/forge-game/src/main/java/forge/ai/ability/MillAi.java +++ b/forge-game/src/main/java/forge/ai/ability/MillAi.java @@ -20,7 +20,7 @@ public class MillAi extends SpellAbilityAi { @Override protected boolean canPlayAI(Player ai, SpellAbility sa) { - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final Cost abCost = sa.getPayCosts(); if (abCost != null) { @@ -94,7 +94,7 @@ public class MillAi extends SpellAbilityAi { return false; } - final int numCards = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("NumCards"), sa); + final int numCards = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("NumCards"), sa); final List pLibrary = opp.getCardsIn(ZoneType.Library); @@ -135,7 +135,7 @@ public class MillAi extends SpellAbilityAi { return false; } - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); if (sa.getParam("NumCards").equals("X") && source.getSVar("X").equals("Count$xPaid")) { // Set PayX here to maximum value. final int cardsToDiscard = Math.min(ComputerUtilMana.determineLeftoverMana(sa, aiPlayer), aiPlayer.getOpponent() diff --git a/forge-game/src/main/java/forge/ai/ability/MustBlockAi.java b/forge-game/src/main/java/forge/ai/ability/MustBlockAi.java index f25d98c0bac..27d7279993f 100644 --- a/forge-game/src/main/java/forge/ai/ability/MustBlockAi.java +++ b/forge-game/src/main/java/forge/ai/ability/MustBlockAi.java @@ -33,7 +33,7 @@ public class MustBlockAi extends SpellAbilityAi { @Override protected boolean doTriggerAINoCost(final Player ai, SpellAbility sa, boolean mandatory) { - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final TargetRestrictions abTgt = sa.getTargetRestrictions(); // only use on creatures that can attack @@ -43,7 +43,7 @@ public class MustBlockAi extends SpellAbilityAi { Card attacker = null; if (sa.hasParam("DefinedAttacker")) { - final List cards = AbilityUtils.getDefinedCards(sa.getSourceCard(), sa.getParam("DefinedAttacker"), sa); + final List cards = AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("DefinedAttacker"), sa); if (cards.isEmpty()) { return false; } diff --git a/forge-game/src/main/java/forge/ai/ability/PhasesAi.java b/forge-game/src/main/java/forge/ai/ability/PhasesAi.java index 3f40e2dd26e..9721d4ee4d9 100644 --- a/forge-game/src/main/java/forge/ai/ability/PhasesAi.java +++ b/forge-game/src/main/java/forge/ai/ability/PhasesAi.java @@ -23,7 +23,7 @@ public class PhasesAi extends SpellAbilityAi { protected boolean canPlayAI(Player aiPlayer, SpellAbility sa) { // This still needs to be fleshed out final TargetRestrictions tgt = sa.getTargetRestrictions(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final Random r = MyRandom.getRandom(); boolean randomReturn = r.nextFloat() <= Math.pow(.6667, sa.getActivationsThisTurn()); @@ -100,7 +100,7 @@ public class PhasesAi extends SpellAbilityAi { */ private boolean phasesPrefTargeting(final TargetRestrictions tgt, final SpellAbility sa, final boolean mandatory) { - // Card source = sa.getSourceCard(); + // Card source = sa.getHostCard(); // List phaseList = // AllZoneUtil.getCardsIn(Zone.Battlefield).getTargetableCards(source) @@ -134,7 +134,7 @@ public class PhasesAi extends SpellAbilityAi { * @return a boolean. */ private boolean phasesUnpreferredTargeting(final Game game, final SpellAbility sa, final boolean mandatory) { - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final TargetRestrictions tgt = sa.getTargetRestrictions(); List list = game.getCardsIn(ZoneType.Battlefield); diff --git a/forge-game/src/main/java/forge/ai/ability/PlayAi.java b/forge-game/src/main/java/forge/ai/ability/PlayAi.java index 516e8833ae2..ca4f8a64673 100644 --- a/forge-game/src/main/java/forge/ai/ability/PlayAi.java +++ b/forge-game/src/main/java/forge/ai/ability/PlayAi.java @@ -26,7 +26,7 @@ public class PlayAi extends SpellAbilityAi { @Override protected boolean canPlayAI(Player ai, SpellAbility sa) { final Cost abCost = sa.getPayCosts(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final Random r = MyRandom.getRandom(); @@ -67,7 +67,7 @@ public class PlayAi extends SpellAbilityAi { } sa.getTargets().add(ComputerUtilCard.getBestAI(cards)); } else if (!sa.hasParam("Valid")) { - cards = new ArrayList(AbilityUtils.getDefinedCards(sa.getSourceCard(), sa.getParam("Defined"), sa)); + cards = new ArrayList(AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("Defined"), sa)); if (cards.isEmpty()) { return false; } diff --git a/forge-game/src/main/java/forge/ai/ability/PoisonAi.java b/forge-game/src/main/java/forge/ai/ability/PoisonAi.java index 65446fb738f..d80562c77c9 100644 --- a/forge-game/src/main/java/forge/ai/ability/PoisonAi.java +++ b/forge-game/src/main/java/forge/ai/ability/PoisonAi.java @@ -26,7 +26,7 @@ public class PoisonAi extends SpellAbilityAi { @Override protected boolean canPlayAI(Player ai, SpellAbility sa) { final Cost abCost = sa.getPayCosts(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); // int humanPoison = AllZone.getHumanPlayer().getPoisonCounters(); // int humanLife = AllZone.getHumanPlayer().getLife(); // int aiPoison = AllZone.getComputerPlayer().getPoisonCounters(); @@ -75,7 +75,7 @@ public class PoisonAi extends SpellAbilityAi { if (tgt != null) { sa.getTargets().add(ai.getOpponent()); } else { - final List players = AbilityUtils.getDefinedPlayers(sa.getSourceCard(), sa.getParam("Defined"), sa); + final List players = AbilityUtils.getDefinedPlayers(sa.getHostCard(), sa.getParam("Defined"), sa); for (final Player p : players) { if (!mandatory && p == ai && (p.getPoisonCounters() > p.getOpponent().getPoisonCounters())) { return false; diff --git a/forge-game/src/main/java/forge/ai/ability/PowerExchangeAi.java b/forge-game/src/main/java/forge/ai/ability/PowerExchangeAi.java index 73e98f72d28..7d00b3f2ea0 100644 --- a/forge-game/src/main/java/forge/ai/ability/PowerExchangeAi.java +++ b/forge-game/src/main/java/forge/ai/ability/PowerExchangeAi.java @@ -29,7 +29,7 @@ public class PowerExchangeAi extends SpellAbilityAi { sa.resetTargets(); List list = - CardLists.getValidCards(ai.getOpponent().getCardsIn(ZoneType.Battlefield), tgt.getValidTgts(), ai, sa.getSourceCard()); + CardLists.getValidCards(ai.getOpponent().getCardsIn(ZoneType.Battlefield), tgt.getValidTgts(), ai, sa.getHostCard()); // AI won't try to grab cards that are filtered out of AI decks on // purpose list = CardLists.filter(list, new Predicate() { @@ -42,10 +42,10 @@ public class PowerExchangeAi extends SpellAbilityAi { CardLists.sortByPowerAsc(list); c1 = list.isEmpty() ? null : list.get(0); if (sa.hasParam("Defined")) { - c2 = AbilityUtils.getDefinedCards(sa.getSourceCard(), sa.getParam("Defined"), sa).get(0); - } else if (tgt.getMinTargets(sa.getSourceCard(), sa) > 1) { + c2 = AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("Defined"), sa).get(0); + } else if (tgt.getMinTargets(sa.getHostCard(), sa) > 1) { List list2 = ai.getCardsIn(ZoneType.Battlefield); - list2 = CardLists.getValidCards(list2, tgt.getValidTgts(), ai, sa.getSourceCard()); + list2 = CardLists.getValidCards(list2, tgt.getValidTgts(), ai, sa.getHostCard()); CardLists.sortByPowerAsc(list2); Collections.reverse(list2); c2 = list2.isEmpty() ? null : list2.get(0); diff --git a/forge-game/src/main/java/forge/ai/ability/ProtectAi.java b/forge-game/src/main/java/forge/ai/ability/ProtectAi.java index b9db955f7ba..85e089beb6a 100644 --- a/forge-game/src/main/java/forge/ai/ability/ProtectAi.java +++ b/forge-game/src/main/java/forge/ai/ability/ProtectAi.java @@ -109,7 +109,7 @@ public class ProtectAi extends SpellAbilityAi { @Override protected boolean canPlayAI(Player ai, SpellAbility sa) { - final Card hostCard = sa.getSourceCard(); + final Card hostCard = sa.getHostCard(); final Game game = ai.getGame(); // if there is no target and host card isn't in play, don't activate if ((sa.getTargetRestrictions() == null) && !hostCard.isInPlay()) { @@ -149,7 +149,7 @@ public class ProtectAi extends SpellAbilityAi { } if ((sa.getTargetRestrictions() == null) || !sa.getTargetRestrictions().doesTarget()) { - final List cards = AbilityUtils.getDefinedCards(sa.getSourceCard(), sa.getParam("Defined"), sa); + final List cards = AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("Defined"), sa); if (cards.size() == 0) { return false; @@ -175,13 +175,13 @@ public class ProtectAi extends SpellAbilityAi { return false; } - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final TargetRestrictions tgt = sa.getTargetRestrictions(); sa.resetTargets(); List list = getProtectCreatures(ai, sa); - list = CardLists.getValidCards(list, tgt.getValidTgts(), sa.getActivatingPlayer(), sa.getSourceCard()); + list = CardLists.getValidCards(list, tgt.getValidTgts(), sa.getActivatingPlayer(), sa.getHostCard()); /* * TODO - What this should probably do is if it's time for instants and @@ -200,11 +200,11 @@ public class ProtectAi extends SpellAbilityAi { if ((sa.getPayCosts() != null) && sa.getPayCosts().hasTapCost()) { if (game.getPhaseHandler().getPhase().isBefore(PhaseType.COMBAT_DECLARE_ATTACKERS) && game.getPhaseHandler().isPlayerTurn(ai)) { - list.remove(sa.getSourceCard()); + list.remove(sa.getHostCard()); } if (game.getPhaseHandler().getPhase().isBefore(PhaseType.COMBAT_DECLARE_BLOCKERS) && game.getPhaseHandler().isPlayerTurn(ai)) { - list.remove(sa.getSourceCard()); + list.remove(sa.getHostCard()); } } } @@ -247,9 +247,9 @@ public class ProtectAi extends SpellAbilityAi { List list = game.getCardsIn(ZoneType.Battlefield); final TargetRestrictions tgt = sa.getTargetRestrictions(); - list = CardLists.getValidCards(list, tgt.getValidTgts(), sa.getActivatingPlayer(), sa.getSourceCard()); + list = CardLists.getValidCards(list, tgt.getValidTgts(), sa.getActivatingPlayer(), sa.getHostCard()); - if (list.size() < tgt.getMinTargets(sa.getSourceCard(), sa)) { + if (list.size() < tgt.getMinTargets(sa.getHostCard(), sa)) { sa.resetTargets(); return false; } @@ -274,7 +274,7 @@ public class ProtectAi extends SpellAbilityAi { } }); final List forced = CardLists.filterControlledBy(list, ai); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); while (sa.getTargets().getNumTargeted() < tgt.getMaxTargets(source, sa)) { if (pref.isEmpty()) { @@ -327,7 +327,7 @@ public class ProtectAi extends SpellAbilityAi { sa.getTargets().add(c); } - if (sa.getTargets().getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa)) { + if (sa.getTargets().getNumTargeted() < tgt.getMinTargets(sa.getHostCard(), sa)) { sa.resetTargets(); return false; } @@ -350,7 +350,7 @@ public class ProtectAi extends SpellAbilityAi { @Override public boolean chkAIDrawback(SpellAbility sa, Player ai) { - final Card host = sa.getSourceCard(); + final Card host = sa.getHostCard(); if ((sa.getTargetRestrictions() == null) || !sa.getTargetRestrictions().doesTarget()) { if (host.isCreature()) { // TODO diff --git a/forge-game/src/main/java/forge/ai/ability/ProtectAllAi.java b/forge-game/src/main/java/forge/ai/ability/ProtectAllAi.java index 653063baab8..eaf19d12853 100644 --- a/forge-game/src/main/java/forge/ai/ability/ProtectAllAi.java +++ b/forge-game/src/main/java/forge/ai/ability/ProtectAllAi.java @@ -12,7 +12,7 @@ public class ProtectAllAi extends SpellAbilityAi { @Override protected boolean canPlayAI(Player ai, SpellAbility sa) { - final Card hostCard = sa.getSourceCard(); + final Card hostCard = sa.getHostCard(); // if there is no target and host card isn't in play, don't activate if ((sa.getTargetRestrictions() == null) && !hostCard.isInPlay()) { return false; diff --git a/forge-game/src/main/java/forge/ai/ability/PumpAi.java b/forge-game/src/main/java/forge/ai/ability/PumpAi.java index 751850e4328..38ff6748e47 100644 --- a/forge-game/src/main/java/forge/ai/ability/PumpAi.java +++ b/forge-game/src/main/java/forge/ai/ability/PumpAi.java @@ -49,23 +49,23 @@ public class PumpAi extends PumpAiBase { final String numDefense = sa.hasParam("NumDef") ? sa.getParam("NumDef") : ""; final String numAttack = sa.hasParam("NumAtt") ? sa.getParam("NumAtt") : ""; - if (!ComputerUtilCost.checkLifeCost(ai, cost, sa.getSourceCard(), 4, null)) { + if (!ComputerUtilCost.checkLifeCost(ai, cost, sa.getHostCard(), 4, null)) { return false; } - if (!ComputerUtilCost.checkDiscardCost(ai, cost, sa.getSourceCard())) { + if (!ComputerUtilCost.checkDiscardCost(ai, cost, sa.getHostCard())) { return false; } - if (!ComputerUtilCost.checkCreatureSacrificeCost(ai, cost, sa.getSourceCard())) { + if (!ComputerUtilCost.checkCreatureSacrificeCost(ai, cost, sa.getHostCard())) { return false; } - if (!ComputerUtilCost.checkRemoveCounterCost(cost, sa.getSourceCard())) { + if (!ComputerUtilCost.checkRemoveCounterCost(cost, sa.getHostCard())) { return false; } - if (game.getStack().isEmpty() && hasTapCost(cost, sa.getSourceCard())) { + if (game.getStack().isEmpty() && hasTapCost(cost, sa.getHostCard())) { if (ph.getPhase().isBefore(PhaseType.COMBAT_DECLARE_ATTACKERS) && ph.isPlayerTurn(ai)) { return false; } @@ -98,7 +98,7 @@ public class PumpAi extends PumpAiBase { return false; } - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); if (source.getSVar("X").equals("Count$xPaid")) { source.setSVar("PayX", ""); } @@ -113,7 +113,7 @@ public class PumpAi extends PumpAiBase { defense = -xPay; } } else { - defense = AbilityUtils.calculateAmount(sa.getSourceCard(), numDefense, sa); + defense = AbilityUtils.calculateAmount(sa.getHostCard(), numDefense, sa); } int attack; @@ -129,7 +129,7 @@ public class PumpAi extends PumpAiBase { attack = Integer.parseInt(toPay); } } else { - attack = AbilityUtils.calculateAmount(sa.getSourceCard(), numAttack, sa); + attack = AbilityUtils.calculateAmount(sa.getHostCard(), numAttack, sa); } if ((numDefense.contains("X") && defense == 0) @@ -139,7 +139,7 @@ public class PumpAi extends PumpAiBase { //Untargeted if ((sa.getTargetRestrictions() == null) || !sa.getTargetRestrictions().doesTarget()) { - final List cards = AbilityUtils.getDefinedCards(sa.getSourceCard(), + final List cards = AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("Defined"), sa); if (cards.size() == 0) { @@ -177,7 +177,7 @@ public class PumpAi extends PumpAiBase { private boolean pumpTgtAI(final Player ai, final SpellAbility sa, final int defense, final int attack, final boolean mandatory) { final List keywords = sa.hasParam("KW") ? Arrays.asList(sa.getParam("KW").split(" & ")) : new ArrayList(); final Game game = ai.getGame(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); if (!mandatory && !sa.isTrigger() @@ -232,11 +232,11 @@ public class PumpAi extends PumpAiBase { if (sa.getPayCosts() != null && sa.getPayCosts().hasTapCost()) { if (game.getPhaseHandler().getPhase().isBefore(PhaseType.COMBAT_DECLARE_ATTACKERS) && game.getPhaseHandler().isPlayerTurn(ai)) { - list.remove(sa.getSourceCard()); + list.remove(sa.getHostCard()); } if (game.getPhaseHandler().getPhase().isBefore(PhaseType.COMBAT_DECLARE_BLOCKERS) && game.getPhaseHandler().isPlayerTurn(opp)) { - list.remove(sa.getSourceCard()); + list.remove(sa.getHostCard()); } } } @@ -281,10 +281,10 @@ public class PumpAi extends PumpAiBase { List list = game.getCardsIn(ZoneType.Battlefield); final TargetRestrictions tgt = sa.getTargetRestrictions(); final Player opp = ai.getOpponent(); - list = CardLists.getValidCards(list, tgt.getValidTgts(), sa.getActivatingPlayer(), sa.getSourceCard()); + list = CardLists.getValidCards(list, tgt.getValidTgts(), sa.getActivatingPlayer(), sa.getHostCard()); list = CardLists.getTargetableCards(list, sa); - if (list.size() < tgt.getMinTargets(sa.getSourceCard(), sa)) { + if (list.size() < tgt.getMinTargets(sa.getHostCard(), sa)) { sa.resetTargets(); return false; } @@ -296,7 +296,7 @@ public class PumpAi extends PumpAiBase { List pref; List forced; - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); if (sa.isCurse()) { pref = CardLists.filterControlledBy(list, opp); @@ -350,7 +350,7 @@ public class PumpAi extends PumpAiBase { @Override protected boolean doTriggerAINoCost(Player ai, SpellAbility sa, boolean mandatory) { - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final String numDefense = sa.hasParam("NumDef") ? sa.getParam("NumDef") : ""; final String numAttack = sa.hasParam("NumAtt") ? sa.getParam("NumAtt") : ""; @@ -361,7 +361,7 @@ public class PumpAi extends PumpAiBase { source.setSVar("PayX", Integer.toString(xPay)); defense = xPay; } else { - defense = AbilityUtils.calculateAmount(sa.getSourceCard(), numDefense, sa); + defense = AbilityUtils.calculateAmount(sa.getHostCard(), numDefense, sa); } int attack; @@ -377,7 +377,7 @@ public class PumpAi extends PumpAiBase { attack = Integer.parseInt(toPay); } } else { - attack = AbilityUtils.calculateAmount(sa.getSourceCard(), numAttack, sa); + attack = AbilityUtils.calculateAmount(sa.getHostCard(), numAttack, sa); } if (sa.getTargetRestrictions() == null) { @@ -394,7 +394,7 @@ public class PumpAi extends PumpAiBase { @Override public boolean chkAIDrawback(SpellAbility sa, Player ai) { - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final String numDefense = sa.hasParam("NumDef") ? sa.getParam("NumDef") : ""; final String numAttack = sa.hasParam("NumAtt") ? sa.getParam("NumAtt") : ""; @@ -403,7 +403,7 @@ public class PumpAi extends PumpAiBase { if (numDefense.contains("X") && source.getSVar("X").equals("Count$xPaid")) { defense = Integer.parseInt(source.getSVar("PayX")); } else { - defense = AbilityUtils.calculateAmount(sa.getSourceCard(), numDefense, sa); + defense = AbilityUtils.calculateAmount(sa.getHostCard(), numDefense, sa); } int attack; @@ -417,7 +417,7 @@ public class PumpAi extends PumpAiBase { attack = Integer.parseInt(source.getSVar("PayX")); } } else { - attack = AbilityUtils.calculateAmount(sa.getSourceCard(), numAttack, sa); + attack = AbilityUtils.calculateAmount(sa.getHostCard(), numAttack, sa); } if ((sa.getTargetRestrictions() == null) || !sa.getTargetRestrictions().doesTarget()) { diff --git a/forge-game/src/main/java/forge/ai/ability/PumpAllAi.java b/forge-game/src/main/java/forge/ai/ability/PumpAllAi.java index 0037eba544d..41ca7691224 100644 --- a/forge-game/src/main/java/forge/ai/ability/PumpAllAi.java +++ b/forge-game/src/main/java/forge/ai/ability/PumpAllAi.java @@ -28,12 +28,12 @@ public class PumpAllAi extends PumpAiBase { @Override protected boolean canPlayAI(final Player ai, final SpellAbility sa) { String valid = ""; - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final Game game = ai.getGame(); final Combat combat = game.getCombat(); - final int power = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("NumAtt"), sa); - final int defense = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("NumDef"), sa); + final int power = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("NumAtt"), sa); + final int defense = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("NumDef"), sa); final List keywords = sa.hasParam("KW") ? Arrays.asList(sa.getParam("KW").split(" & ")) : new ArrayList(); final PhaseType phase = game.getPhaseHandler().getPhase(); diff --git a/forge-game/src/main/java/forge/ai/ability/RegenerateAi.java b/forge-game/src/main/java/forge/ai/ability/RegenerateAi.java index 49fc6054db4..ae3a2d0deaf 100644 --- a/forge-game/src/main/java/forge/ai/ability/RegenerateAi.java +++ b/forge-game/src/main/java/forge/ai/ability/RegenerateAi.java @@ -55,7 +55,7 @@ public class RegenerateAi extends SpellAbilityAi { @Override protected boolean canPlayAI(Player ai, SpellAbility sa) { - final Card hostCard = sa.getSourceCard(); + final Card hostCard = sa.getHostCard(); final Cost abCost = sa.getPayCosts(); final Game game = ai.getGame(); final Combat combat = game.getCombat(); @@ -176,7 +176,7 @@ public class RegenerateAi extends SpellAbilityAi { } private static boolean regenMandatoryTarget(final Player ai, final SpellAbility sa, final boolean mandatory) { - final Card hostCard = sa.getSourceCard(); + final Card hostCard = sa.getHostCard(); final Game game = ai.getGame(); final TargetRestrictions tgt = sa.getTargetRestrictions(); sa.resetTargets(); diff --git a/forge-game/src/main/java/forge/ai/ability/RegenerateAllAi.java b/forge-game/src/main/java/forge/ai/ability/RegenerateAllAi.java index c71d77fdfac..44188f2d666 100644 --- a/forge-game/src/main/java/forge/ai/ability/RegenerateAllAi.java +++ b/forge-game/src/main/java/forge/ai/ability/RegenerateAllAi.java @@ -22,7 +22,7 @@ public class RegenerateAllAi extends SpellAbilityAi { @Override protected boolean canPlayAI(Player ai, SpellAbility sa) { - final Card hostCard = sa.getSourceCard(); + final Card hostCard = sa.getHostCard(); boolean chance = false; final Cost abCost = sa.getPayCosts(); final Game game = ai.getGame(); diff --git a/forge-game/src/main/java/forge/ai/ability/RepeatAi.java b/forge-game/src/main/java/forge/ai/ability/RepeatAi.java index dec68b14053..3d5069cb8d6 100644 --- a/forge-game/src/main/java/forge/ai/ability/RepeatAi.java +++ b/forge-game/src/main/java/forge/ai/ability/RepeatAi.java @@ -46,7 +46,7 @@ public class RepeatAi extends SpellAbilityAi { } // setup subability to repeat - final SpellAbility repeat = AbilityFactory.getAbility(sa.getSourceCard().getSVar(sa.getParam("RepeatSubAbility")), sa.getSourceCard()); + final SpellAbility repeat = AbilityFactory.getAbility(sa.getHostCard().getSVar(sa.getParam("RepeatSubAbility")), sa.getHostCard()); if (repeat == null) { return false; diff --git a/forge-game/src/main/java/forge/ai/ability/RevealAi.java b/forge-game/src/main/java/forge/ai/ability/RevealAi.java index 01d009d5f9b..4421da23bad 100644 --- a/forge-game/src/main/java/forge/ai/ability/RevealAi.java +++ b/forge-game/src/main/java/forge/ai/ability/RevealAi.java @@ -15,7 +15,7 @@ public class RevealAi extends RevealAiBase { protected boolean canPlayAI(Player ai, SpellAbility sa) { // AI cannot use this properly until he can use SAs during Humans turn final Cost abCost = sa.getPayCosts(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); if (abCost != null) { // AI currently disabled for these costs diff --git a/forge-game/src/main/java/forge/ai/ability/RevealHandAi.java b/forge-game/src/main/java/forge/ai/ability/RevealHandAi.java index 643f0e0ebc0..670afd6ffc3 100644 --- a/forge-game/src/main/java/forge/ai/ability/RevealHandAi.java +++ b/forge-game/src/main/java/forge/ai/ability/RevealHandAi.java @@ -19,7 +19,7 @@ public class RevealHandAi extends RevealAiBase { protected boolean canPlayAI(Player ai, SpellAbility sa) { // AI cannot use this properly until he can use SAs during Humans turn final Cost abCost = sa.getPayCosts(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); if (abCost != null) { // AI currently disabled for these costs diff --git a/forge-game/src/main/java/forge/ai/ability/RollPlanarDiceAi.java b/forge-game/src/main/java/forge/ai/ability/RollPlanarDiceAi.java index 3a057b5e8f5..44dbef9e4c4 100644 --- a/forge-game/src/main/java/forge/ai/ability/RollPlanarDiceAi.java +++ b/forge-game/src/main/java/forge/ai/ability/RollPlanarDiceAi.java @@ -19,7 +19,7 @@ public class RollPlanarDiceAi extends SpellAbilityAi { @Override protected boolean canPlayAI(Player ai, SpellAbility sa) { AiController aic = ((PlayerControllerAi)ai.getController()).getAi(); - Card plane = sa.getSourceCard(); + Card plane = sa.getHostCard(); boolean decideToRoll = false; boolean rollInMain1 = false; diff --git a/forge-game/src/main/java/forge/ai/ability/SacrificeAi.java b/forge-game/src/main/java/forge/ai/ability/SacrificeAi.java index 1ced5c99529..d6bd1b82ce8 100644 --- a/forge-game/src/main/java/forge/ai/ability/SacrificeAi.java +++ b/forge-game/src/main/java/forge/ai/ability/SacrificeAi.java @@ -49,7 +49,7 @@ public class SacrificeAi extends SpellAbilityAi { private boolean sacrificeTgtAI(final Player ai, final SpellAbility sa) { - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final TargetRestrictions tgt = sa.getTargetRestrictions(); final boolean destroy = sa.hasParam("Destroy"); @@ -63,10 +63,10 @@ public class SacrificeAi extends SpellAbilityAi { final String valid = sa.getParam("SacValid"); String num = sa.getParam("Amount"); num = (num == null) ? "1" : num; - final int amount = AbilityUtils.calculateAmount(sa.getSourceCard(), num, sa); + final int amount = AbilityUtils.calculateAmount(sa.getHostCard(), num, sa); List list = - CardLists.getValidCards(ai.getOpponent().getCardsIn(ZoneType.Battlefield), valid.split(","), sa.getActivatingPlayer(), sa.getSourceCard()); + CardLists.getValidCards(ai.getOpponent().getCardsIn(ZoneType.Battlefield), valid.split(","), sa.getActivatingPlayer(), sa.getHostCard()); if (!destroy) { list = CardLists.filter(list, CardPredicates.canBeSacrificedBy(sa)); } else { @@ -115,7 +115,7 @@ public class SacrificeAi extends SpellAbilityAi { } List humanList = - CardLists.getValidCards(opp.getCardsIn(ZoneType.Battlefield), valid.split(","), sa.getActivatingPlayer(), sa.getSourceCard()); + CardLists.getValidCards(opp.getCardsIn(ZoneType.Battlefield), valid.split(","), sa.getActivatingPlayer(), sa.getHostCard()); // Since all of the cards have remAIDeck:True, I enabled 1 for 1 // (or X for X) trades for special decks @@ -124,7 +124,7 @@ public class SacrificeAi extends SpellAbilityAi { } } else if (defined.equals("You")) { List computerList = - CardLists.getValidCards(ai.getCardsIn(ZoneType.Battlefield), valid.split(","), sa.getActivatingPlayer(), sa.getSourceCard()); + CardLists.getValidCards(ai.getCardsIn(ZoneType.Battlefield), valid.split(","), sa.getActivatingPlayer(), sa.getHostCard()); for (Card c : computerList) { if (c.hasSVar("SacMe") || ComputerUtilCard.evaluateCreature(c) <= 135) { return true; diff --git a/forge-game/src/main/java/forge/ai/ability/SacrificeAllAi.java b/forge-game/src/main/java/forge/ai/ability/SacrificeAllAi.java index 7a61a849cdc..6861fbf419f 100644 --- a/forge-game/src/main/java/forge/ai/ability/SacrificeAllAi.java +++ b/forge-game/src/main/java/forge/ai/ability/SacrificeAllAi.java @@ -23,7 +23,7 @@ public class SacrificeAllAi extends SpellAbilityAi { // based on what the expected targets could be final Random r = MyRandom.getRandom(); final Cost abCost = sa.getPayCosts(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); String valid = ""; if (sa.hasParam("ValidCards")) { diff --git a/forge-game/src/main/java/forge/ai/ability/ScryAi.java b/forge-game/src/main/java/forge/ai/ability/ScryAi.java index 5ba7d8964a4..21578f37627 100644 --- a/forge-game/src/main/java/forge/ai/ability/ScryAi.java +++ b/forge-game/src/main/java/forge/ai/ability/ScryAi.java @@ -35,7 +35,7 @@ public class ScryAi extends SpellAbilityAi { @Override protected boolean canPlayAI(Player ai, SpellAbility sa) { - // Card source = sa.getSourceCard(); + // Card source = sa.getHostCard(); double chance = .4; // 40 percent chance of milling with instant speed // stuff diff --git a/forge-game/src/main/java/forge/ai/ability/SetStateAi.java b/forge-game/src/main/java/forge/ai/ability/SetStateAi.java index a53bccb0dd5..5330647f54a 100644 --- a/forge-game/src/main/java/forge/ai/ability/SetStateAi.java +++ b/forge-game/src/main/java/forge/ai/ability/SetStateAi.java @@ -18,7 +18,7 @@ public class SetStateAi extends SpellAbilityAi { public boolean chkAIDrawback(SpellAbility sa, Player aiPlayer) { // Gross generalization, but this always considers alternate // states more powerful - return !sa.getSourceCard().isInAlternateState(); + return !sa.getHostCard().isInAlternateState(); } diff --git a/forge-game/src/main/java/forge/ai/ability/ShuffleAi.java b/forge-game/src/main/java/forge/ai/ability/ShuffleAi.java index ad51a491df1..dc3ea1e8e79 100644 --- a/forge-game/src/main/java/forge/ai/ability/ShuffleAi.java +++ b/forge-game/src/main/java/forge/ai/ability/ShuffleAi.java @@ -15,7 +15,7 @@ public class ShuffleAi extends SpellAbilityAi { /* * if (!ComputerUtil.canPayCost(sa)) return false; * - * Card source = sa.getSourceCard(); + * Card source = sa.getHostCard(); * * Random r = MyRandom.random; boolean randomReturn = r.nextFloat() <= * Math.pow(.667, sa.getActivationsThisTurn()+1); diff --git a/forge-game/src/main/java/forge/ai/ability/StoreSVarAi.java b/forge-game/src/main/java/forge/ai/ability/StoreSVarAi.java index 0e48a61ee3b..e2a97c9fb72 100644 --- a/forge-game/src/main/java/forge/ai/ability/StoreSVarAi.java +++ b/forge-game/src/main/java/forge/ai/ability/StoreSVarAi.java @@ -24,7 +24,7 @@ public class StoreSVarAi extends SpellAbilityAi { protected boolean canPlayAI(Player ai, SpellAbility sa) { //Tree of Redemption - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final Game game = ai.getGame(); final Combat combat = game.getCombat(); final PhaseHandler ph = game.getPhaseHandler(); diff --git a/forge-game/src/main/java/forge/ai/ability/TapAi.java b/forge-game/src/main/java/forge/ai/ability/TapAi.java index 7fc91bf47d6..3d05cbb0d00 100644 --- a/forge-game/src/main/java/forge/ai/ability/TapAi.java +++ b/forge-game/src/main/java/forge/ai/ability/TapAi.java @@ -36,7 +36,7 @@ public class TapAi extends TapAiBase { } final TargetRestrictions tgt = sa.getTargetRestrictions(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); if (tgt == null) { final List defined = AbilityUtils.getDefinedCards(source, sa.getParam("Defined"), sa); diff --git a/forge-game/src/main/java/forge/ai/ability/TapAiBase.java b/forge-game/src/main/java/forge/ai/ability/TapAiBase.java index a4b72e9641c..ef6f1c575b8 100644 --- a/forge-game/src/main/java/forge/ai/ability/TapAiBase.java +++ b/forge-game/src/main/java/forge/ai/ability/TapAiBase.java @@ -38,7 +38,7 @@ public abstract class TapAiBase extends SpellAbilityAi { * @return a boolean. */ private boolean tapTargetList(final Player ai, final SpellAbility sa, final List tapList, final boolean mandatory) { - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final TargetRestrictions tgt = sa.getTargetRestrictions(); for (final Card c : sa.getTargets().getTargetCards()) { @@ -74,7 +74,7 @@ public abstract class TapAiBase extends SpellAbilityAi { } if (choice == null) { // can't find anything left - if ((sa.getTargets().getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa)) || (sa.getTargets().getNumTargeted() == 0)) { + if ((sa.getTargets().getNumTargeted() < tgt.getMinTargets(sa.getHostCard(), sa)) || (sa.getTargets().getNumTargeted() == 0)) { if (!mandatory) { sa.resetTargets(); } @@ -174,7 +174,7 @@ public abstract class TapAiBase extends SpellAbilityAi { return CombatUtil.canAttack(c, opp); } }); - attackers.remove(sa.getSourceCard()); + attackers.remove(sa.getHostCard()); } Predicate findBlockers = CardPredicates.possibleBlockerForAtLeastOne(attackers); List creatureList = CardLists.filter(tapList, findBlockers); @@ -204,7 +204,7 @@ public abstract class TapAiBase extends SpellAbilityAi { } if (choice == null) { // can't find anything left - if ((sa.getTargets().getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa)) || (sa.getTargets().getNumTargeted() == 0)) { + if ((sa.getTargets().getNumTargeted() < tgt.getMinTargets(sa.getHostCard(), sa)) || (sa.getTargets().getNumTargeted() == 0)) { if (!mandatory) { sa.resetTargets(); } @@ -238,7 +238,7 @@ public abstract class TapAiBase extends SpellAbilityAi { * @return a boolean. */ protected boolean tapUnpreferredTargeting(final Player ai, final SpellAbility sa, final boolean mandatory) { - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final TargetRestrictions tgt = sa.getTargetRestrictions(); final Game game = ai.getGame(); @@ -252,7 +252,7 @@ public abstract class TapAiBase extends SpellAbilityAi { return true; } - if (sa.getTargets().getNumTargeted() >= tgt.getMinTargets(sa.getSourceCard(), sa)) { + if (sa.getTargets().getNumTargeted() >= tgt.getMinTargets(sa.getHostCard(), sa)) { return true; } @@ -271,7 +271,7 @@ public abstract class TapAiBase extends SpellAbilityAi { return true; } - if (sa.getTargets().getNumTargeted() >= tgt.getMinTargets(sa.getSourceCard(), sa)) { + if (sa.getTargets().getNumTargeted() >= tgt.getMinTargets(sa.getHostCard(), sa)) { return true; } @@ -289,7 +289,7 @@ public abstract class TapAiBase extends SpellAbilityAi { protected boolean doTriggerAINoCost(Player ai, SpellAbility sa, boolean mandatory) { final TargetRestrictions tgt = sa.getTargetRestrictions(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); if (tgt == null) { if (mandatory) { @@ -315,7 +315,7 @@ public abstract class TapAiBase extends SpellAbilityAi { @Override public boolean chkAIDrawback(SpellAbility sa, Player ai) { final TargetRestrictions tgt = sa.getTargetRestrictions(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); boolean randomReturn = true; diff --git a/forge-game/src/main/java/forge/ai/ability/TapAllAi.java b/forge-game/src/main/java/forge/ai/ability/TapAllAi.java index af42592b336..f946ec986d0 100644 --- a/forge-game/src/main/java/forge/ai/ability/TapAllAi.java +++ b/forge-game/src/main/java/forge/ai/ability/TapAllAi.java @@ -29,7 +29,7 @@ public class TapAllAi extends SpellAbilityAi { // turn // or during upkeep/begin combat? - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final Player opp = ai.getOpponent(); final Game game = ai.getGame(); @@ -114,7 +114,7 @@ public class TapAllAi extends SpellAbilityAi { @Override protected boolean doTriggerAINoCost(final Player ai, SpellAbility sa, boolean mandatory) { - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); String valid = ""; if (sa.hasParam("ValidCards")) { diff --git a/forge-game/src/main/java/forge/ai/ability/TapOrUntapAi.java b/forge-game/src/main/java/forge/ai/ability/TapOrUntapAi.java index 7a49251ed63..4abe8b3a911 100644 --- a/forge-game/src/main/java/forge/ai/ability/TapOrUntapAi.java +++ b/forge-game/src/main/java/forge/ai/ability/TapOrUntapAi.java @@ -18,7 +18,7 @@ public class TapOrUntapAi extends TapAiBase { @Override protected boolean canPlayAI(Player ai, SpellAbility sa) { final TargetRestrictions tgt = sa.getTargetRestrictions(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final Random r = MyRandom.getRandom(); boolean randomReturn = r.nextFloat() <= Math.pow(.6667, sa.getActivationsThisTurn()); diff --git a/forge-game/src/main/java/forge/ai/ability/TokenAi.java b/forge-game/src/main/java/forge/ai/ability/TokenAi.java index 0ee3c4a951f..b03d42c0958 100644 --- a/forge-game/src/main/java/forge/ai/ability/TokenAi.java +++ b/forge-game/src/main/java/forge/ai/ability/TokenAi.java @@ -130,7 +130,7 @@ public class TokenAi extends SpellAbilityAi { // prevent run-away activations - first time will always return true final Random r = MyRandom.getRandom(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final TargetRestrictions tgt = sa.getTargetRestrictions(); if (tgt != null) { @@ -169,7 +169,7 @@ public class TokenAi extends SpellAbilityAi { } if (this.tokenAmount.equals("X") || this.tokenPower.equals("X") || this.tokenToughness.equals("X")) { - int x = AbilityUtils.calculateAmount(sa.getSourceCard(), this.tokenAmount, sa); + int x = AbilityUtils.calculateAmount(sa.getHostCard(), this.tokenAmount, sa); if (source.getSVar("X").equals("Count$xPaid")) { // Set PayX here to maximum value. x = ComputerUtilMana.determineLeftoverMana(sa, ai); @@ -197,7 +197,7 @@ public class TokenAi extends SpellAbilityAi { @Override protected boolean doTriggerAINoCost(Player ai, SpellAbility sa, boolean mandatory) { readParameters(sa); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final TargetRestrictions tgt = sa.getTargetRestrictions(); if (tgt != null) { sa.resetTargets(); diff --git a/forge-game/src/main/java/forge/ai/ability/TwoPilesAi.java b/forge-game/src/main/java/forge/ai/ability/TwoPilesAi.java index e905d682654..371ecc055f0 100644 --- a/forge-game/src/main/java/forge/ai/ability/TwoPilesAi.java +++ b/forge-game/src/main/java/forge/ai/ability/TwoPilesAi.java @@ -19,7 +19,7 @@ public class TwoPilesAi extends SpellAbilityAi { */ @Override protected boolean canPlayAI(Player ai, SpellAbility sa) { - final Card card = sa.getSourceCard(); + final Card card = sa.getHostCard(); ZoneType zone = null; if (sa.hasParam("Zone")) { @@ -47,7 +47,7 @@ public class TwoPilesAi extends SpellAbilityAi { final Player p = tgtPlayers.get(0); List pool = new ArrayList(); if (sa.hasParam("DefinedCards")) { - pool = new ArrayList(AbilityUtils.getDefinedCards(sa.getSourceCard(), sa.getParam("DefinedCards"), sa)); + pool = new ArrayList(AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("DefinedCards"), sa)); } else { pool = p.getCardsIn(zone); } diff --git a/forge-game/src/main/java/forge/ai/ability/UnattachAllAi.java b/forge-game/src/main/java/forge/ai/ability/UnattachAllAi.java index fe1daf2d5c0..1aa54608e2a 100644 --- a/forge-game/src/main/java/forge/ai/ability/UnattachAllAi.java +++ b/forge-game/src/main/java/forge/ai/ability/UnattachAllAi.java @@ -26,7 +26,7 @@ public class UnattachAllAi extends SpellAbilityAi { protected boolean canPlayAI(Player ai, SpellAbility sa) { final Random r = MyRandom.getRandom(); final Cost abCost = sa.getPayCosts(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); if (abCost != null) { // No Aura spells have Additional Costs @@ -65,13 +65,13 @@ public class UnattachAllAi extends SpellAbilityAi { */ @Override protected boolean doTriggerAINoCost(Player ai, SpellAbility sa, boolean mandatory) { - final Card card = sa.getSourceCard(); + final Card card = sa.getHostCard(); final Player opp = ai.getOpponent(); // Check if there are any valid targets List targets = new ArrayList(); final TargetRestrictions tgt = sa.getTargetRestrictions(); if (tgt == null) { - targets = AbilityUtils.getDefinedObjects(sa.getSourceCard(), sa.getParam("Defined"), sa); + targets = AbilityUtils.getDefinedObjects(sa.getHostCard(), sa.getParam("Defined"), sa); } if (!mandatory && card.isEquipment() && !targets.isEmpty()) { diff --git a/forge-game/src/main/java/forge/ai/ability/UntapAi.java b/forge-game/src/main/java/forge/ai/ability/UntapAi.java index e998d9436be..5adc462855c 100644 --- a/forge-game/src/main/java/forge/ai/ability/UntapAi.java +++ b/forge-game/src/main/java/forge/ai/ability/UntapAi.java @@ -26,14 +26,14 @@ public class UntapAi extends SpellAbilityAi { @Override protected boolean canPlayAI(Player ai, SpellAbility sa) { final TargetRestrictions tgt = sa.getTargetRestrictions(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final Cost cost = sa.getPayCosts(); if (!ComputerUtilCost.checkAddM1M1CounterCost(cost, source)) { return false; } - if (!ComputerUtilCost.checkDiscardCost(ai, cost, sa.getSourceCard())) { + if (!ComputerUtilCost.checkDiscardCost(ai, cost, sa.getHostCard())) { return false; } @@ -41,7 +41,7 @@ public class UntapAi extends SpellAbilityAi { boolean randomReturn = r.nextFloat() <= Math.pow(.6667, sa.getActivationsThisTurn() + 1); if (tgt == null) { - final List pDefined = AbilityUtils.getDefinedCards(sa.getSourceCard(), sa.getParam("Defined"), sa); + final List pDefined = AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("Defined"), sa); if ((pDefined != null) && pDefined.get(0).isUntapped() && pDefined.get(0).getController() == ai) { return false; } @@ -64,7 +64,7 @@ public class UntapAi extends SpellAbilityAi { } // TODO: use Defined to determine, if this is an unfavorable result - final List pDefined = AbilityUtils.getDefinedCards(sa.getSourceCard(), sa.getParam("Defined"), sa); + final List pDefined = AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("Defined"), sa); if ((pDefined != null) && pDefined.get(0).isUntapped() && pDefined.get(0).getController() == ai) { return false; } @@ -115,7 +115,7 @@ public class UntapAi extends SpellAbilityAi { * @return a boolean. */ private static boolean untapPrefTargeting(final Player ai, final TargetRestrictions tgt, final SpellAbility sa, final boolean mandatory) { - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); Player targetController = ai; @@ -137,11 +137,11 @@ public class UntapAi extends SpellAbilityAi { return false; } - while (sa.getTargets().getNumTargeted() < tgt.getMaxTargets(sa.getSourceCard(), sa)) { + while (sa.getTargets().getNumTargeted() < tgt.getMaxTargets(sa.getHostCard(), sa)) { Card choice = null; if (untapList.size() == 0) { - if ((sa.getTargets().getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa)) || (sa.getTargets().getNumTargeted() == 0)) { + if ((sa.getTargets().getNumTargeted() < tgt.getMinTargets(sa.getHostCard(), sa)) || (sa.getTargets().getNumTargeted() == 0)) { sa.resetTargets(); return false; } else { @@ -162,7 +162,7 @@ public class UntapAi extends SpellAbilityAi { } if (choice == null) { // can't find anything left - if ((sa.getTargets().getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa)) || (sa.getTargets().getNumTargeted() == 0)) { + if ((sa.getTargets().getNumTargeted() < tgt.getMinTargets(sa.getHostCard(), sa)) || (sa.getTargets().getNumTargeted() == 0)) { sa.resetTargets(); return false; } else { @@ -191,7 +191,7 @@ public class UntapAi extends SpellAbilityAi { * @return a boolean. */ private boolean untapUnpreferredTargeting(final SpellAbility sa, final boolean mandatory) { - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final TargetRestrictions tgt = sa.getTargetRestrictions(); List list = sa.getActivatingPlayer().getGame().getCardsIn(ZoneType.Battlefield); @@ -280,7 +280,7 @@ public class UntapAi extends SpellAbilityAi { } if (choice == null) { // can't find anything left - if ((sa.getTargets().getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa)) || (sa.getTargets().getNumTargeted() == 0)) { + if ((sa.getTargets().getNumTargeted() < tgt.getMinTargets(sa.getHostCard(), sa)) || (sa.getTargets().getNumTargeted() == 0)) { if (!mandatory) { sa.resetTargets(); } diff --git a/forge-game/src/main/java/forge/ai/ability/UntapAllAi.java b/forge-game/src/main/java/forge/ai/ability/UntapAllAi.java index 11873ed00c4..bdfbe1de2b6 100644 --- a/forge-game/src/main/java/forge/ai/ability/UntapAllAi.java +++ b/forge-game/src/main/java/forge/ai/ability/UntapAllAi.java @@ -14,7 +14,7 @@ public class UntapAllAi extends SpellAbilityAi { @Override protected boolean canPlayAI(Player aiPlayer, SpellAbility sa) { - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final AbilitySub abSub = sa.getSubAbility(); if (abSub != null) { diff --git a/forge-game/src/main/java/forge/ai/ability/ZoneExchangeAi.java b/forge-game/src/main/java/forge/ai/ability/ZoneExchangeAi.java index 7d051cc1159..547b6411e1e 100644 --- a/forge-game/src/main/java/forge/ai/ability/ZoneExchangeAi.java +++ b/forge-game/src/main/java/forge/ai/ability/ZoneExchangeAi.java @@ -22,7 +22,7 @@ public class ZoneExchangeAi extends SpellAbilityAi { protected boolean canPlayAI(Player ai, final SpellAbility sa) { Card object1 = null; Card object2 = null; - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final String type = sa.getParam("Type"); if (sa.hasParam("Object")) { object1 = AbilityUtils.getDefinedCards(source, sa.getParam("Object"), sa).get(0); diff --git a/forge-game/src/main/java/forge/game/CardTraitBase.java b/forge-game/src/main/java/forge/game/CardTraitBase.java index f356fbbe84e..dac2b2ac3c9 100644 --- a/forge-game/src/main/java/forge/game/CardTraitBase.java +++ b/forge-game/src/main/java/forge/game/CardTraitBase.java @@ -15,11 +15,10 @@ import forge.util.Expressions; import java.util.*; /** - * Base class for Triggers and ReplacementEffects. - * Provides the matchesValid function to both classes. + * Base class for Triggers,ReplacementEffects and StaticAbilities. * */ -public abstract class CardTraitBase { +public abstract class CardTraitBase extends GameObject { /** The host card. */ protected Card hostCard; @@ -31,19 +30,13 @@ public abstract class CardTraitBase { protected boolean intrinsic; /** The temporary. */ - private boolean temporary = false; + protected boolean temporary = false; /** The suppressed. */ - private boolean suppressed = false; + protected boolean suppressed = false; /** The temporarily suppressed. */ - private boolean temporarilySuppressed = false; - - protected EnumSet validHostZones; - - /** The overriding ability. */ - private SpellAbility overridingAbility = null; - + protected boolean temporarilySuppressed = false; /** * Sets the temporary. @@ -89,7 +82,9 @@ public abstract class CardTraitBase { return this.intrinsic; } - + public void setIntrinsic(boolean i) { + this.intrinsic = i; + } /** *

@@ -98,7 +93,7 @@ public abstract class CardTraitBase { * * @return a {@link forge.game.card.Card} object. */ - public final Card getHostCard() { + public Card getHostCard() { return this.hostCard; } @@ -106,53 +101,12 @@ public abstract class CardTraitBase { *

* Setter for the field hostCard. *

- * + * * @param c * a {@link forge.game.card.Card} object. */ - public final void setHostCard(final Card c) { + public void setHostCard(final Card c) { this.hostCard = c; - - if (overridingAbility != null) { - CardFactoryUtil.correctAbilityChainSourceCard(overridingAbility, c); - } - } - - public void setActiveZone(EnumSet zones) { - validHostZones = zones; - } - - /** - *

- * zonesCheck. - *

- * - * @return a boolean. - */ - public final boolean zonesCheck(Zone hostCardZone) { - return !this.hostCard.isPhasedOut() - && (validHostZones == null || validHostZones.isEmpty() - || (hostCardZone != null && validHostZones.contains(hostCardZone.getZoneType())) - ); - } - - /** - * Gets the overriding ability. - * - * @return the overridingAbility - */ - public SpellAbility getOverridingAbility() { - return this.overridingAbility; - } - - /** - * Sets the overriding ability. - * - * @param overridingAbility0 - * the overridingAbility to set - */ - public void setOverridingAbility(final SpellAbility overridingAbility0) { - this.overridingAbility = overridingAbility0; } /** diff --git a/forge-game/src/main/java/forge/game/GameAction.java b/forge-game/src/main/java/forge/game/GameAction.java index 940830bae6b..e256fc462ce 100644 --- a/forge-game/src/main/java/forge/game/GameAction.java +++ b/forge-game/src/main/java/forge/game/GameAction.java @@ -1628,7 +1628,7 @@ public class GameAction { } for (final SpellAbility sa : usableFromOpeningHand) { - if (!takesAction.getZone(ZoneType.Hand).contains(sa.getSourceCard())) { + if (!takesAction.getZone(ZoneType.Hand).contains(sa.getHostCard())) { continue; } diff --git a/forge-game/src/main/java/forge/game/GameActionUtil.java b/forge-game/src/main/java/forge/game/GameActionUtil.java index e9c90a0a08e..087424c7db2 100644 --- a/forge-game/src/main/java/forge/game/GameActionUtil.java +++ b/forge-game/src/main/java/forge/game/GameActionUtil.java @@ -150,7 +150,7 @@ public final class GameActionUtil { */ public static final ArrayList getAlternativeCosts(SpellAbility sa) { ArrayList alternatives = new ArrayList(); - Card source = sa.getSourceCard(); + Card source = sa.getHostCard(); if (!sa.isBasicSpell()) { return alternatives; } @@ -208,7 +208,7 @@ public final class GameActionUtil { newSA.setBasicSpell(false); String kw = keyword; if (keyword.contains("ConvertedManaCost")) { - final String cmc = Integer.toString(sa.getSourceCard().getCMC()); + final String cmc = Integer.toString(sa.getHostCard().getCMC()); kw = keyword.replace("ConvertedManaCost", cmc); } final Cost cost = new Cost(kw.substring(17), false).add(newSA.getPayCosts().copyWithNoMana()); @@ -232,7 +232,7 @@ public final class GameActionUtil { } if (sa.isSpell() && keyword.endsWith(" offering")) { final String offeringType = keyword.split(" ")[0]; - List canOffer = CardLists.filter(sa.getSourceCard().getController().getCardsIn(ZoneType.Battlefield), + List canOffer = CardLists.filter(sa.getHostCard().getController().getCardsIn(ZoneType.Battlefield), CardPredicates.isType(offeringType)); if (source.getController().hasKeyword("You can't sacrifice creatures to cast spells or activate abilities.")) { canOffer = CardLists.getNotType(canOffer, "Creature"); @@ -274,7 +274,7 @@ public final class GameActionUtil { public static List getOptionalCosts(final SpellAbility original) { final List abilities = new ArrayList(); - final Card source = original.getSourceCard(); + final Card source = original.getHostCard(); abilities.add(original); if (!original.isSpell()) { return abilities; @@ -389,7 +389,7 @@ public final class GameActionUtil { // Splice final List newAbilities = new ArrayList(); for (SpellAbility sa : abilities) { - if (sa.isSpell() && sa.getSourceCard().isType("Arcane") && sa.getApi() != null ) { + if (sa.isSpell() && sa.getHostCard().isType("Arcane") && sa.getApi() != null ) { newAbilities.addAll(GameActionUtil.getSpliceAbilities(sa)); } } @@ -411,7 +411,7 @@ public final class GameActionUtil { ArrayList newSAs = new ArrayList(); ArrayList allSaCombinations = new ArrayList(); allSaCombinations.add(sa); - Card source = sa.getSourceCard(); + Card source = sa.getHostCard(); for (Card c : sa.getActivatingPlayer().getCardsIn(ZoneType.Hand)) { if (c.equals(source)) { @@ -458,7 +458,7 @@ public final class GameActionUtil { //set correct source and activating player to all the spliced abilities child = subAbility; while (child != null) { - child.setSourceCard(source); + child.setHostCard(source); child.setActivatingPlayer(newSA.getActivatingPlayer()); child = child.getSubAbility(); } @@ -497,7 +497,7 @@ public final class GameActionUtil { public static String generatedMana(final SpellAbility sa) { // Calculate generated mana here for stack description and resolving - int amount = sa.hasParam("Amount") ? AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("Amount"), sa) : 1; + int amount = sa.hasParam("Amount") ? AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("Amount"), sa) : 1; AbilityManaPart abMana = sa.getManaPart(); String baseMana; diff --git a/forge-game/src/main/java/forge/game/GameLogFormatter.java b/forge-game/src/main/java/forge/game/GameLogFormatter.java index 56f7b52af9d..f487d69c5be 100644 --- a/forge-game/src/main/java/forge/game/GameLogFormatter.java +++ b/forge-game/src/main/java/forge/game/GameLogFormatter.java @@ -37,7 +37,7 @@ public class GameLogFormatter extends IGameEventVisitor.Base { */ @Override public GameLogEntry visit(GameEventSpellResolved ev) { - String messageForLog = ev.hasFizzled ? ev.spell.getSourceCard().getName() + " ability fizzles." : ev.spell.getStackDescription(); + String messageForLog = ev.hasFizzled ? ev.spell.getHostCard().getName() + " ability fizzles." : ev.spell.getStackDescription(); return new GameLogEntry(GameLogEntryType.STACK_RESOLVE, messageForLog); } @@ -46,7 +46,7 @@ public class GameLogFormatter extends IGameEventVisitor.Base { public GameLogEntry visit(GameEventSpellAbilityCast event) { String who = event.sa.getActivatingPlayer().getName(); String action = event.sa.isSpell() ? " cast " : " activated "; - String what = event.sa.getStackDescription().startsWith("Morph ") ? "Morph" : event.sa.getSourceCard().toString(); + String what = event.sa.getStackDescription().startsWith("Morph ") ? "Morph" : event.sa.getHostCard().toString(); StringBuilder sb = new StringBuilder(); sb.append(who).append(action).append(what); diff --git a/forge-game/src/main/java/forge/game/ability/AbilityApiBased.java b/forge-game/src/main/java/forge/game/ability/AbilityApiBased.java index d9b39859109..f81d91785d2 100644 --- a/forge-game/src/main/java/forge/game/ability/AbilityApiBased.java +++ b/forge-game/src/main/java/forge/game/ability/AbilityApiBased.java @@ -23,25 +23,25 @@ public class AbilityApiBased extends AbilityActivated { public AbilityApiBased(ApiType api0, Card sourceCard, Cost abCost, TargetRestrictions tgt, Map params0) { super(sourceCard, abCost, tgt); - params = params0; + mapParams.putAll(params0); api = api0; effect = api.getSpellEffect(); ai = api.getAi(); if (effect instanceof ManaEffect || effect instanceof ManaReflectedEffect) { - this.setManaPart(new AbilityManaPart(sourceCard, params)); + this.setManaPart(new AbilityManaPart(sourceCard, mapParams)); this.setUndoable(true); // will try at least } if (effect instanceof ChangeZoneEffect || effect instanceof ChangeZoneAllEffect) { - AbilityFactory.adjustChangeZoneTarget(params, this); + AbilityFactory.adjustChangeZoneTarget(mapParams, this); } } @Override public String getStackDescription() { - return effect.getStackDescriptionWithSubs(params, this); + return effect.getStackDescriptionWithSubs(mapParams, this); } /* (non-Javadoc) @@ -50,7 +50,7 @@ public class AbilityApiBased extends AbilityActivated { @Override public AbilityActivated getCopy() { TargetRestrictions tgt = getTargetRestrictions() == null ? null : new TargetRestrictions(getTargetRestrictions()); - AbilityActivated res = new AbilityApiBased(api, getSourceCard(), getPayCosts(), tgt, params); + AbilityActivated res = new AbilityApiBased(api, getHostCard(), getPayCosts(), tgt, mapParams); CardFactory.copySpellAbility(this, res); return res; } diff --git a/forge-game/src/main/java/forge/game/ability/AbilityFactory.java b/forge-game/src/main/java/forge/game/ability/AbilityFactory.java index 669c411f011..caa99696fd1 100644 --- a/forge-game/src/main/java/forge/game/ability/AbilityFactory.java +++ b/forge-game/src/main/java/forge/game/ability/AbilityFactory.java @@ -171,7 +171,7 @@ public final class AbilityFactory { } if (spellAbility instanceof SpellApiBased && hostCard.isPermanent()) { - spellAbility.setDescription(spellAbility.getSourceCard().getName()); + spellAbility.setDescription(spellAbility.getHostCard().getName()); } else if (mapParams.containsKey("SpellDescription")) { final StringBuilder sb = new StringBuilder(); @@ -363,7 +363,7 @@ public final class AbilityFactory { } public static final SpellAbility buildEntwineAbility(final SpellAbility sa) { - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final String[] saChoices = sa.getParam("Choices").split(","); if (sa.getApi() != ApiType.Charm || saChoices.length != 2) throw new IllegalStateException("Entwine ability may be built only on charm cards"); diff --git a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java index 542b8bc11d5..867e10b300e 100644 --- a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java +++ b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java @@ -36,7 +36,7 @@ public class AbilityUtils { } catch (Exception e) { String type = sa.getSVar(name); if (type.equals("")) { - type = sa.getSourceCard().getSVar(name); + type = sa.getHostCard().getSVar(name); } if (type.equals("")) { @@ -388,7 +388,7 @@ public class AbilityUtils { else if (hType.startsWith("Property")) { String defined = hType.split("Property")[1]; for (Player p : game.getPlayers()) { - if (p.hasProperty(defined, ability.getActivatingPlayer(), ability.getSourceCard())) { + if (p.hasProperty(defined, ability.getActivatingPlayer(), ability.getHostCard())) { players.add(p); } } @@ -492,7 +492,7 @@ public class AbilityUtils { } } for (final SpellAbility s : sas) { - final Player p = s.getSourceCard().getController(); + final Player p = s.getHostCard().getController(); if (!players.contains(p)) { players.add(p); } @@ -504,7 +504,7 @@ public class AbilityUtils { final List saList = getDefinedSpellAbilities(card, "Targeted", ability); for (final SpellAbility s : saList) { - tgtList.addAll(getDefinedCards(s.getSourceCard(), "Targeted", s)); + tgtList.addAll(getDefinedCards(s.getHostCard(), "Targeted", s)); } return CardFactoryUtil.handlePaid(tgtList, calcX[1], card) * multiplier; } @@ -521,7 +521,7 @@ public class AbilityUtils { if (calcX[0].equals("TriggeredSpellAbility")) { final SpellAbility root = ability.getRootAbility(); SpellAbility sat = (SpellAbility) root.getTriggeringObject("SpellAbility"); - return calculateAmount(sat.getSourceCard(), calcX[1], sat); + return calculateAmount(sat.getHostCard(), calcX[1], sat); } // Added on 9/30/12 (ArsenalNut) - Ended up not using but might be useful in future /* @@ -540,7 +540,7 @@ public class AbilityUtils { final SpellAbility root = ability.getRootAbility(); list = root.getPaidList("Discarded"); if ((null == list) && root.isTrigger()) { - list = root.getSourceCard().getSpellPermanent().getPaidList("Discarded"); + list = root.getHostCard().getSpellPermanent().getPaidList("Discarded"); } } else if (calcX[0].startsWith("Exiled")) { @@ -643,7 +643,7 @@ public class AbilityUtils { // Filter List Can send a different Source card in for things like // Mishra and Lobotomy - Card source = sa.getSourceCard(); + Card source = sa.getHostCard(); final Object o; if (type.startsWith("Triggered")) { if (type.contains("Card")) { @@ -861,7 +861,7 @@ public class AbilityUtils { o = ((Card) c).getController(); } if (c instanceof SpellAbility) { - o = ((SpellAbility) c).getSourceCard().getController(); + o = ((SpellAbility) c).getHostCard().getController(); } } else if (defined.endsWith("Opponent")) { @@ -872,7 +872,7 @@ public class AbilityUtils { o = ((Card) c).getController().getOpponents(); } if (c instanceof SpellAbility) { - o = ((SpellAbility) c).getSourceCard().getController().getOpponents(); + o = ((SpellAbility) c).getHostCard().getController().getOpponents(); } } else if (defined.endsWith("Owner")) { @@ -923,7 +923,7 @@ public class AbilityUtils { o = ((Card) c).getController(); } if (c instanceof SpellAbility) { - o = ((SpellAbility) c).getSourceCard().getController(); + o = ((SpellAbility) c).getHostCard().getController(); } } else if (defined.endsWith("Opponent")) { @@ -934,7 +934,7 @@ public class AbilityUtils { o = ((Card) c).getController().getOpponent(); } if (c instanceof SpellAbility) { - o = ((SpellAbility) c).getSourceCard().getController().getOpponent(); + o = ((SpellAbility) c).getHostCard().getController().getOpponent(); } } else if (defined.endsWith("Owner")) { @@ -981,7 +981,7 @@ public class AbilityUtils { } } else if (defined.equals("EnchantedPlayer")) { - final Object o = sa.getSourceCard().getEnchanting(); + final Object o = sa.getHostCard().getEnchanting(); if (o instanceof Player) { if (!players.contains(o)) { players.add((Player) o); @@ -1004,7 +1004,7 @@ public class AbilityUtils { } } else if (defined.equals("SourceController")) { - final Player p = sa.getSourceCard().getController(); + final Player p = sa.getHostCard().getController(); if (!players.contains(p)) { players.add(p); } @@ -1022,8 +1022,8 @@ public class AbilityUtils { } else if (defined.startsWith("Flipped")) { for (Player p : game.getPlayers()) { - if (null != sa.getSourceCard().getFlipResult(p)) { - if (sa.getSourceCard().getFlipResult(p).equals(defined.substring(7))) { + if (null != sa.getHostCard().getFlipResult(p)) { + if (sa.getHostCard().getFlipResult(p).equals(defined.substring(7))) { players.add(p); } } @@ -1043,7 +1043,7 @@ public class AbilityUtils { } else { for (Player p : game.getPlayers()) { - if (p.isValid(defined, sa.getActivatingPlayer(), sa.getSourceCard())) { + if (p.isValid(defined, sa.getActivatingPlayer(), sa.getHostCard())) { players.add(p); } } @@ -1183,11 +1183,11 @@ public class AbilityUtils { } private static void handleUnlessCost(final SpellAbility sa, final Game game) { - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); // The player who has the chance to cancel the ability final String pays = sa.hasParam("UnlessPayer") ? sa.getParam("UnlessPayer") : "TargetedController"; - final List allPayers = getDefinedPlayers(sa.getSourceCard(), pays, sa); + final List allPayers = getDefinedPlayers(sa.getHostCard(), pays, sa); final String resolveSubs = sa.getParam("UnlessResolveSubs"); // no value means 'Always' final boolean execSubsWhenPaid = "WhenPaid".equals(resolveSubs) || StringUtils.isBlank(resolveSubs); final boolean execSubsWhenNotPaid = "WhenNotPaid".equals(resolveSubs) || StringUtils.isBlank(resolveSubs); @@ -1252,7 +1252,7 @@ public class AbilityUtils { * a SpellAbility object. */ public static void handleRemembering(final SpellAbility sa) { - Card host = sa.getSourceCard(); + Card host = sa.getHostCard(); if (sa.hasParam("RememberTargets") && sa.getTargetRestrictions() != null) { if (sa.hasParam("ForgetOtherTargets")) { diff --git a/forge-game/src/main/java/forge/game/ability/SaTargetRoutines.java b/forge-game/src/main/java/forge/game/ability/SaTargetRoutines.java index 7baf477ecd5..58529d96ce4 100644 --- a/forge-game/src/main/java/forge/game/ability/SaTargetRoutines.java +++ b/forge-game/src/main/java/forge/game/ability/SaTargetRoutines.java @@ -23,7 +23,7 @@ public class SaTargetRoutines { boolean useTargets = sa.usesTargeting() && (!definedFirst || !sa.hasParam(definedParam)) && sa.getTargets() != null && (sa.getTargets().isTargetingAnyCard() || sa.getTargets().getTargets().isEmpty()); return useTargets ? Lists.newArrayList(sa.getTargets().getTargetCards()) - : AbilityUtils.getDefinedCards(sa.getSourceCard(), sa.getParam(definedParam), sa); + : AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam(definedParam), sa); } // Players @@ -35,7 +35,7 @@ public class SaTargetRoutines { private List getPlayers(boolean definedFirst, String definedParam, SpellAbility sa) { boolean useTargets = sa.usesTargeting() && (!definedFirst || !sa.hasParam(definedParam)); return useTargets ? Lists.newArrayList(sa.getTargets().getTargetPlayers()) - : AbilityUtils.getDefinedPlayers(sa.getSourceCard(), sa.getParam(definedParam), sa); + : AbilityUtils.getDefinedPlayers(sa.getHostCard(), sa.getParam(definedParam), sa); } // Spells @@ -46,7 +46,7 @@ public class SaTargetRoutines { private List getSpells(boolean definedFirst, String definedParam, SpellAbility sa) { boolean useTargets = sa.usesTargeting() && (!definedFirst || !sa.hasParam(definedParam)); return useTargets ? Lists.newArrayList(sa.getTargets().getTargetSpells()) - : AbilityUtils.getDefinedSpellAbilities(sa.getSourceCard(), sa.getParam(definedParam), sa); + : AbilityUtils.getDefinedSpellAbilities(sa.getHostCard(), sa.getParam(definedParam), sa); } // Targets of unspecified type @@ -57,6 +57,6 @@ public class SaTargetRoutines { private List getTargetables(boolean definedFirst, String definedParam, SpellAbility sa) { boolean useTargets = sa.usesTargeting() && (!definedFirst || !sa.hasParam(definedParam)); return useTargets ? Lists.newArrayList(sa.getTargets().getTargets()) - : AbilityUtils.getDefinedObjects(sa.getSourceCard(), sa.getParam(definedParam), sa); + : AbilityUtils.getDefinedObjects(sa.getHostCard(), sa.getParam(definedParam), sa); } } \ No newline at end of file diff --git a/forge-game/src/main/java/forge/game/ability/SpellAbilityEffect.java b/forge-game/src/main/java/forge/game/ability/SpellAbilityEffect.java index baf6c19a6ca..8725829cba4 100644 --- a/forge-game/src/main/java/forge/game/ability/SpellAbilityEffect.java +++ b/forge-game/src/main/java/forge/game/ability/SpellAbilityEffect.java @@ -49,7 +49,7 @@ import java.util.StringTokenizer; // prelude for when this is root ability if (!(sa instanceof AbilitySub)) { - sb.append(sa.getSourceCard()).append(" -"); + sb.append(sa.getHostCard()).append(" -"); } sb.append(" "); @@ -57,7 +57,7 @@ import java.util.StringTokenizer; String stackDesc = params.get("StackDescription"); if (stackDesc != null) { if ("SpellDescription".equalsIgnoreCase(stackDesc)) { // by typing "none" they want to suppress output - sb.append(params.get("SpellDescription").replace("CARDNAME", sa.getSourceCard().getName())); + sb.append(params.get("SpellDescription").replace("CARDNAME", sa.getHostCard().getName())); if (sa.getTargets() != null && !sa.getTargets().getTargets().isEmpty()) { sb.append(" (Targeting: " + sa.getTargets().getTargets() + ")"); } @@ -81,7 +81,7 @@ import java.util.StringTokenizer; if (sa.hasParam("Announce")) { String svar = sa.getParam("Announce"); - int amount = CardFactoryUtil.xCount(sa.getSourceCard(), sa.getSVar(svar)); + int amount = CardFactoryUtil.xCount(sa.getHostCard(), sa.getSVar(svar)); sb.append(String.format(" (%s=%d)", svar, amount)); } @@ -103,17 +103,17 @@ import java.util.StringTokenizer; if ( "{".equals(t) ) { isPlainText = false; continue; } if ( "}".equals(t) ) { isPlainText = true; continue; } if ( isPlainText ) - sb.append(t.replace("CARDNAME", sa.getSourceCard().getName())); + sb.append(t.replace("CARDNAME", sa.getHostCard().getName())); else { List objs = null; if ( t.startsWith("p:") ) - objs = AbilityUtils.getDefinedPlayers(sa.getSourceCard(), t.substring(2), sa); + objs = AbilityUtils.getDefinedPlayers(sa.getHostCard(), t.substring(2), sa); else if ( t.startsWith("s:")) - objs = AbilityUtils.getDefinedSpellAbilities(sa.getSourceCard(), t.substring(2), sa); + objs = AbilityUtils.getDefinedSpellAbilities(sa.getHostCard(), t.substring(2), sa); else if ( t.startsWith("c:")) - objs = AbilityUtils.getDefinedCards(sa.getSourceCard(), t.substring(2), sa); + objs = AbilityUtils.getDefinedCards(sa.getHostCard(), t.substring(2), sa); else - objs = AbilityUtils.getDefinedObjects(sa.getSourceCard(), t, sa); + objs = AbilityUtils.getDefinedObjects(sa.getHostCard(), t, sa); sb.append(StringUtils.join(objs, ", ")); } diff --git a/forge-game/src/main/java/forge/game/ability/SpellApiBased.java b/forge-game/src/main/java/forge/game/ability/SpellApiBased.java index f9c0d8dde57..315ee1a71a5 100644 --- a/forge-game/src/main/java/forge/game/ability/SpellApiBased.java +++ b/forge-game/src/main/java/forge/game/ability/SpellApiBased.java @@ -23,23 +23,23 @@ public class SpellApiBased extends Spell { super(sourceCard, abCost); this.setTargetRestrictions(tgt); - params = params0; + mapParams.putAll(params0); api = api0; effect = api.getSpellEffect(); ai = api.getAi(); if (effect instanceof ManaEffect || effect instanceof ManaReflectedEffect) { - this.setManaPart(new AbilityManaPart(sourceCard, params)); + this.setManaPart(new AbilityManaPart(sourceCard, mapParams)); } if (effect instanceof ChangeZoneEffect || effect instanceof ChangeZoneAllEffect) { - AbilityFactory.adjustChangeZoneTarget(params, this); + AbilityFactory.adjustChangeZoneTarget(mapParams, this); } } @Override public String getStackDescription() { - return effect.getStackDescriptionWithSubs(params, this); + return effect.getStackDescriptionWithSubs(mapParams, this); } /* (non-Javadoc) diff --git a/forge-game/src/main/java/forge/game/ability/StaticAbilityApiBased.java b/forge-game/src/main/java/forge/game/ability/StaticAbilityApiBased.java index 513d577cccd..87c6c91ef0b 100644 --- a/forge-game/src/main/java/forge/game/ability/StaticAbilityApiBased.java +++ b/forge-game/src/main/java/forge/game/ability/StaticAbilityApiBased.java @@ -18,19 +18,19 @@ public class StaticAbilityApiBased extends AbilityStatic { public StaticAbilityApiBased(ApiType api0, Card sourceCard, Cost abCost, TargetRestrictions tgt, Map params0) { super(sourceCard, abCost, tgt); - params = params0; + mapParams.putAll(params0); api = api0; effect = api.getSpellEffect(); ai = api.getAi(); if (effect instanceof ChangeZoneEffect || effect instanceof ChangeZoneAllEffect) { - AbilityFactory.adjustChangeZoneTarget(params, this); + AbilityFactory.adjustChangeZoneTarget(mapParams, this); } } @Override public String getStackDescription() { - return effect.getStackDescriptionWithSubs(params, this); + return effect.getStackDescriptionWithSubs(mapParams, this); } diff --git a/forge-game/src/main/java/forge/game/ability/effects/AbandonEffect.java b/forge-game/src/main/java/forge/game/ability/effects/AbandonEffect.java index df091f1b4d3..7c01e2c8dd4 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/AbandonEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/AbandonEffect.java @@ -16,7 +16,7 @@ public class AbandonEffect extends SpellAbilityEffect { */ @Override public void resolve(SpellAbility sa) { - Card source = sa.getSourceCard(); + Card source = sa.getHostCard(); Player controller = source.getController(); final Game game = controller.getGame(); diff --git a/forge-game/src/main/java/forge/game/ability/effects/AddTurnEffect.java b/forge-game/src/main/java/forge/game/ability/effects/AddTurnEffect.java index 8794eb10f82..4981dc432d1 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/AddTurnEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/AddTurnEffect.java @@ -14,7 +14,7 @@ public class AddTurnEffect extends SpellAbilityEffect { protected String getStackDescription(SpellAbility sa) { final StringBuilder sb = new StringBuilder(); - final int numTurns = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("NumTurns"), sa); + final int numTurns = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("NumTurns"), sa); List tgtPlayers = getTargetPlayers(sa); @@ -36,7 +36,7 @@ public class AddTurnEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - final int numTurns = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("NumTurns"), sa); + final int numTurns = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("NumTurns"), sa); List tgtPlayers = getTargetPlayers(sa); diff --git a/forge-game/src/main/java/forge/game/ability/effects/AnimateAllEffect.java b/forge-game/src/main/java/forge/game/ability/effects/AnimateAllEffect.java index e99486d6799..6e1b70d8628 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/AnimateAllEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/AnimateAllEffect.java @@ -31,7 +31,7 @@ public class AnimateAllEffect extends AnimateEffectBase { @Override public void resolve(final SpellAbility sa) { - final Card host = sa.getSourceCard(); + final Card host = sa.getHostCard(); final Map svars = host.getSVars(); // AF specific sa diff --git a/forge-game/src/main/java/forge/game/ability/effects/AnimateEffect.java b/forge-game/src/main/java/forge/game/ability/effects/AnimateEffect.java index e7122ffcba8..486bed37c2a 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/AnimateEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/AnimateEffect.java @@ -27,14 +27,14 @@ public class AnimateEffect extends AnimateEffectBase { */ @Override public void resolve(final SpellAbility sa) { - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final Map svars = source.getSVars(); String animateRemembered = null; //if host is not on the battlefield don't apply if (sa.hasParam("UntilHostLeavesPlay") - && !sa.getSourceCard().isInPlay()) { + && !sa.getHostCard().isInPlay()) { return; } @@ -303,7 +303,7 @@ public class AnimateEffect extends AnimateEffectBase { */ @Override protected String getStackDescription(SpellAbility sa) { - final Card host = sa.getSourceCard(); + final Card host = sa.getHostCard(); final Map svars = host.getSVars(); int power = -1; diff --git a/forge-game/src/main/java/forge/game/ability/effects/AttachEffect.java b/forge-game/src/main/java/forge/game/ability/effects/AttachEffect.java index d1d8336d289..852616f97ea 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/AttachEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/AttachEffect.java @@ -25,19 +25,19 @@ public class AttachEffect extends SpellAbilityEffect { */ @Override public void resolve(SpellAbility sa) { - if (sa.getSourceCard().isAura() && sa.isSpell()) { + if (sa.getHostCard().isAura() && sa.isSpell()) { final Player ap = sa.getActivatingPlayer(); // The Spell_Permanent (Auras) version of this AF needs to // move the card into play before Attaching - sa.getSourceCard().setController(ap, 0); - final Card c = ap.getGame().getAction().moveTo(ap.getZone(ZoneType.Battlefield), sa.getSourceCard()); - sa.setSourceCard(c); + sa.getHostCard().setController(ap, 0); + final Card c = ap.getGame().getAction().moveTo(ap.getZone(ZoneType.Battlefield), sa.getHostCard()); + sa.setHostCard(c); } - Card source = sa.getSourceCard(); - Card card = sa.getSourceCard(); + Card source = sa.getHostCard(); + Card card = sa.getHostCard(); final List targets = getTargets(sa); diff --git a/forge-game/src/main/java/forge/game/ability/effects/BalanceEffect.java b/forge-game/src/main/java/forge/game/ability/effects/BalanceEffect.java index 618f539ffc6..6841f84e947 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/BalanceEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/BalanceEffect.java @@ -23,7 +23,7 @@ public class BalanceEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { Player activator = sa.getActivatingPlayer(); - Card source = sa.getSourceCard(); + Card source = sa.getHostCard(); Game game = activator.getGame(); String valid = sa.hasParam("Valid") ? sa.getParam("Valid") : "Card"; ZoneType zone = sa.hasParam("Zone") ? ZoneType.smartValueOf(sa.getParam("Zone")) : ZoneType.Battlefield; diff --git a/forge-game/src/main/java/forge/game/ability/effects/BondEffect.java b/forge-game/src/main/java/forge/game/ability/effects/BondEffect.java index dd21e8a952e..df550615f55 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/BondEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/BondEffect.java @@ -12,7 +12,7 @@ public class BondEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { // find card that triggered pairing first - List trigCards = AbilityUtils.getDefinedCards(sa.getSourceCard(), sa.getParam("Defined"), sa); + List trigCards = AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("Defined"), sa); // Check that this card hasn't already become paired by an earlier trigger if (trigCards.get(0).isPaired() || !trigCards.get(0).isInZone(ZoneType.Battlefield)) { @@ -39,7 +39,7 @@ public class BondEffect extends SpellAbilityEffect { @Override protected String getStackDescription(SpellAbility sa) { - List tgts = AbilityUtils.getDefinedCards(sa.getSourceCard(), sa.getParam("Defined"), sa); + List tgts = AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("Defined"), sa); final StringBuilder sb = new StringBuilder(); diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChangeTargetsEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChangeTargetsEffect.java index c82cecf9103..3016d1df716 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChangeTargetsEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChangeTargetsEffect.java @@ -46,7 +46,7 @@ public class ChangeTargetsEffect extends SpellAbilityEffect { // Redirect rules read 'you MAY choose new targets' ... okay! boolean isOptional = sa.hasParam("Optional"); - if( isOptional && !chooser.getController().confirmAction(sa, null, "Do you want to change targets of " + tgtSA.getSourceCard() + "?")) + if( isOptional && !chooser.getController().confirmAction(sa, null, "Do you want to change targets of " + tgtSA.getHostCard() + "?")) continue; if( changesOneTarget ) { @@ -103,10 +103,10 @@ public class ChangeTargetsEffect extends SpellAbilityEffect { if (null != newTarget) { if (sa.hasParam("TargetRestriction")) { if (newTarget.getFirstTargetedCard() != null && newTarget.getFirstTargetedCard(). - isValid(sa.getParam("TargetRestriction").split(","), activator, sa.getSourceCard())) { + isValid(sa.getParam("TargetRestriction").split(","), activator, sa.getHostCard())) { changingTgtSI.updateTarget(newTarget); } else if (newTarget.getFirstTargetedPlayer() != null && newTarget.getFirstTargetedPlayer(). - isValid(sa.getParam("TargetRestriction").split(","), activator, sa.getSourceCard())) { + isValid(sa.getParam("TargetRestriction").split(","), activator, sa.getHostCard())) { changingTgtSI.updateTarget(newTarget); } } else { @@ -118,7 +118,7 @@ public class ChangeTargetsEffect extends SpellAbilityEffect { } } if (remember) { - sa.getSourceCard().addRemembered(tgtSA.getSourceCard()); + sa.getHostCard().addRemembered(tgtSA.getHostCard()); } } } diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneAllEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneAllEffect.java index 44503904228..fe7a470ecb0 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneAllEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneAllEffect.java @@ -40,7 +40,7 @@ public class ChangeZoneAllEffect extends SpellAbilityEffect { List tgtPlayers = getTargetPlayers(sa); final Game game = sa.getActivatingPlayer().getGame(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); if ((!sa.usesTargeting() && !sa.hasParam("Defined")) || sa.hasParam("UseAllOriginZones")) { cards = game.getCardsIn(origin); @@ -75,7 +75,7 @@ public class ChangeZoneAllEffect extends SpellAbilityEffect { cards = AbilityUtils.filterListByType(cards, sa.getParam("ChangeType"), sa); if (sa.hasParam("ForgetOtherRemembered")) { - sa.getSourceCard().clearRemembered(); + sa.getHostCard().clearRemembered(); } final String remember = sa.getParam("RememberChanged"); diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java index 096f6ad29d0..8a025323ed5 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java @@ -58,7 +58,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect { // added final StringBuilder sb = new StringBuilder(); - final Card host = sa.getSourceCard(); + final Card host = sa.getHostCard(); if (!(sa instanceof AbilitySub)) { sb.append(" -"); @@ -69,13 +69,13 @@ public class ChangeZoneEffect extends SpellAbilityEffect { // Player whose cards will change zones List fetchers = null; if (sa.hasParam("DefinedPlayer")) { - fetchers = AbilityUtils.getDefinedPlayers(sa.getSourceCard(), sa.getParam("DefinedPlayer"), sa); + fetchers = AbilityUtils.getDefinedPlayers(sa.getHostCard(), sa.getParam("DefinedPlayer"), sa); } if (fetchers == null && sa.hasParam("ValidTgts") && sa.usesTargeting()) { fetchers = Lists.newArrayList(sa.getTargets().getTargetPlayers()); } if (fetchers == null) { - fetchers = Lists.newArrayList(sa.getSourceCard().getController()); + fetchers = Lists.newArrayList(sa.getHostCard().getController()); } final String fetcherNames = Lang.joinHomogenous(fetchers, Player.Accessors.FN_GET_NAME); @@ -83,7 +83,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect { // Player who chooses the cards to move List choosers = new ArrayList(); if (sa.hasParam("Chooser")) { - choosers = AbilityUtils.getDefinedPlayers(sa.getSourceCard(), sa.getParam("Chooser"), sa); + choosers = AbilityUtils.getDefinedPlayers(sa.getHostCard(), sa.getParam("Chooser"), sa); } if (choosers.isEmpty()) { choosers.add(sa.getActivatingPlayer()); @@ -222,7 +222,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect { private static String changeKnownOriginStackDescription(final SpellAbility sa) { final StringBuilder sb = new StringBuilder(); - final Card host = sa.getSourceCard(); + final Card host = sa.getHostCard(); if (!(sa instanceof AbilitySub)) { sb.append(host.getName()).append(" -"); @@ -365,7 +365,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect { Iterable tgtCards = getTargetCards(sa); final TargetRestrictions tgt = sa.getTargetRestrictions(); final Player player = sa.getActivatingPlayer(); - final Card hostCard = sa.getSourceCard(); + final Card hostCard = sa.getHostCard(); final Game game = player.getGame(); final ZoneType destination = ZoneType.smartValueOf(sa.getParam("Destination")); @@ -555,14 +555,14 @@ public class ChangeZoneEffect extends SpellAbilityEffect { List fetchers; if (sa.hasParam("DefinedPlayer")) { - fetchers = AbilityUtils.getDefinedPlayers(sa.getSourceCard(), sa.getParam("DefinedPlayer"), sa); + fetchers = AbilityUtils.getDefinedPlayers(sa.getHostCard(), sa.getParam("DefinedPlayer"), sa); } else { - fetchers = AbilityUtils.getDefinedPlayers(sa.getSourceCard(), sa.getParam("Defined"), sa); + fetchers = AbilityUtils.getDefinedPlayers(sa.getHostCard(), sa.getParam("Defined"), sa); } // handle case when Defined is for a Card if (fetchers.isEmpty()) { - fetchers.add(sa.getSourceCard().getController()); + fetchers.add(sa.getHostCard().getController()); } Player chooser = null; @@ -571,7 +571,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect { if (choose.equals("Targeted") && sa.getTargets().isTargetingAnyPlayer()) { chooser = sa.getTargets().getFirstTargetedPlayer(); } else { - chooser = AbilityUtils.getDefinedPlayers(sa.getSourceCard(), choose, sa).get(0); + chooser = AbilityUtils.getDefinedPlayers(sa.getHostCard(), choose, sa).get(0); } } @@ -600,7 +600,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect { origin = ZoneType.listValueOf(sa.getParam("Origin")); } ZoneType destination = ZoneType.smartValueOf(sa.getParam("Destination")); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); // this needs to be zero indexed. Top = 0, Third = 2 int libraryPos = sa.hasParam("LibraryPosition") ? AbilityUtils.calculateAmount(source, sa.getParam("LibraryPosition"), sa) : 0; @@ -777,7 +777,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect { if (sa.hasParam("GainControl")) { Player newController = sa.getActivatingPlayer(); if (sa.hasParam("NewController")) { - newController = AbilityUtils.getDefinedPlayers(sa.getSourceCard(), sa.getParam("NewController"), sa).get(0); + newController = AbilityUtils.getDefinedPlayers(sa.getHostCard(), sa.getParam("NewController"), sa).get(0); } c.setController(newController, game.getNextTimestamp()); } @@ -929,29 +929,29 @@ public class ChangeZoneEffect extends SpellAbilityEffect { if (tgtSA.isAbility()) { // Shouldn't be able to target Abilities but leaving this in for now } else if (tgtSA.isFlashBackAbility()) { - game.getAction().exile(tgtSA.getSourceCard()); + game.getAction().exile(tgtSA.getHostCard()); } else if (srcSA.getParam("Destination").equals("Graveyard")) { - game.getAction().moveToGraveyard(tgtSA.getSourceCard()); + game.getAction().moveToGraveyard(tgtSA.getHostCard()); } else if (srcSA.getParam("Destination").equals("Exile")) { - game.getAction().exile(tgtSA.getSourceCard()); + game.getAction().exile(tgtSA.getHostCard()); } else if (srcSA.getParam("Destination").equals("TopOfLibrary")) { - game.getAction().moveToLibrary(tgtSA.getSourceCard()); + game.getAction().moveToLibrary(tgtSA.getHostCard()); } else if (srcSA.getParam("Destination").equals("Hand")) { - game.getAction().moveToHand(tgtSA.getSourceCard()); + game.getAction().moveToHand(tgtSA.getHostCard()); } else if (srcSA.getParam("Destination").equals("BottomOfLibrary")) { - game.getAction().moveToBottomOfLibrary(tgtSA.getSourceCard()); + game.getAction().moveToBottomOfLibrary(tgtSA.getHostCard()); } else if (srcSA.getParam("Destination").equals("Library")) { - game.getAction().moveToBottomOfLibrary(tgtSA.getSourceCard()); + game.getAction().moveToBottomOfLibrary(tgtSA.getHostCard()); if (srcSA.hasParam("Shuffle")) { - tgtSA.getSourceCard().getOwner().shuffle(srcSA); + tgtSA.getHostCard().getOwner().shuffle(srcSA); } } else { throw new IllegalArgumentException("AbilityFactory_ChangeZone: Invalid Destination argument for card " - + srcSA.getSourceCard().getName()); + + srcSA.getHostCard().getName()); } if (remember) { - srcSA.getSourceCard().addRemembered(tgtSA.getSourceCard()); + srcSA.getHostCard().addRemembered(tgtSA.getHostCard()); } if (!tgtSA.isAbility()) { diff --git a/forge-game/src/main/java/forge/game/ability/effects/CharmEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CharmEffect.java index 0db674ccf9c..c2c5abfdd20 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CharmEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CharmEffect.java @@ -13,7 +13,7 @@ import java.util.List; public class CharmEffect extends SpellAbilityEffect { public static List makePossibleOptions(final SpellAbility sa) { - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final String[] saChoices = sa.getParam("Choices").split(","); List choices = new ArrayList(); @@ -45,7 +45,7 @@ public class CharmEffect extends SpellAbilityEffect { final int num = Integer.parseInt(sa.hasParam("CharmNum") ? sa.getParam("CharmNum") : "1"); final int min = sa.hasParam("MinCharmNum") ? Integer.parseInt(sa.getParam("MinCharmNum")) : num; - Card source = sa.getSourceCard(); + Card source = sa.getHostCard(); Player activator = sa.getActivatingPlayer(); Player chooser = sa.getActivatingPlayer(); diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChooseCardEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChooseCardEffect.java index 720b9b7a043..48804dbf4b5 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChooseCardEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChooseCardEffect.java @@ -32,7 +32,7 @@ public class ChooseCardEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - final Card host = sa.getSourceCard(); + final Card host = sa.getHostCard(); final Player activator = sa.getActivatingPlayer(); final Game game = activator.getGame(); List chosen = new ArrayList(); diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChooseCardNameEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChooseCardNameEffect.java index 2076e679361..1247e3777c4 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChooseCardNameEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChooseCardNameEffect.java @@ -36,7 +36,7 @@ public class ChooseCardNameEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - final Card host = sa.getSourceCard(); + final Card host = sa.getHostCard(); final TargetRestrictions tgt = sa.getTargetRestrictions(); final List tgtPlayers = getTargetPlayers(sa); diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChooseColorEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChooseColorEffect.java index ff047b6f1a4..41ca6bbc51d 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChooseColorEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChooseColorEffect.java @@ -32,7 +32,7 @@ public class ChooseColorEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - final Card card = sa.getSourceCard(); + final Card card = sa.getHostCard(); List colorChoices = new ArrayList(MagicColor.Constant.ONLY_COLORS); if (sa.hasParam("Choices")) { diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChooseGenericEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChooseGenericEffect.java index 67a5deb96e7..66a58780d14 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChooseGenericEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChooseGenericEffect.java @@ -29,7 +29,7 @@ public class ChooseGenericEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - final Card host = sa.getSourceCard(); + final Card host = sa.getHostCard(); final String[] choices = sa.getParam("Choices").split(","); final List abilities = new ArrayList(); @@ -59,7 +59,7 @@ public class ChooseGenericEffect extends SpellAbilityEffect { if (sa.hasParam("ShowChoice")) { p.getGame().getAction().nofityOfValue(sa, p, abilities.get(idxChosen).getDescription(), null); } - chosenSA.setActivatingPlayer(sa.getSourceCard().getController()); + chosenSA.setActivatingPlayer(sa.getHostCard().getController()); ((AbilitySub) chosenSA).setParent(sa); AbilityUtils.resolve(chosenSA); } diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChooseNumberEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChooseNumberEffect.java index f9a55166561..f969f1e207b 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChooseNumberEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChooseNumberEffect.java @@ -30,7 +30,7 @@ public class ChooseNumberEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - final Card card = sa.getSourceCard(); + final Card card = sa.getHostCard(); //final int min = sa.containsKey("Min") ? Integer.parseInt(sa.get("Min")) : 0; //final int max = sa.containsKey("Max") ? Integer.parseInt(sa.get("Max")) : 99; final boolean random = sa.hasParam("Random"); diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChoosePlayerEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChoosePlayerEffect.java index 63cbbf0c0cc..e839d5f62a3 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChoosePlayerEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChoosePlayerEffect.java @@ -26,14 +26,14 @@ public class ChoosePlayerEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - final Card card = sa.getSourceCard(); + final Card card = sa.getHostCard(); final List tgtPlayers = getTargetPlayers(sa); final TargetRestrictions tgt = sa.getTargetRestrictions(); final List choices = sa.hasParam("Choices") ? AbilityUtils.getDefinedPlayers( - sa.getSourceCard(), sa.getParam("Choices"), sa) : sa.getActivatingPlayer().getGame().getPlayers(); + sa.getHostCard(), sa.getParam("Choices"), sa) : sa.getActivatingPlayer().getGame().getPlayers(); final String choiceDesc = sa.hasParam("ChoiceTitle") ? sa.getParam("ChoiceTitle") : "Choose a player"; final boolean random = sa.hasParam("Random"); diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChooseSourceEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChooseSourceEffect.java index 281a6f8ffee..c2ed4299543 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChooseSourceEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChooseSourceEffect.java @@ -30,7 +30,7 @@ public class ChooseSourceEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - final Card host = sa.getSourceCard(); + final Card host = sa.getHostCard(); final Game game = sa.getActivatingPlayer().getGame(); final TargetRestrictions tgt = sa.getTargetRestrictions(); diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChooseTypeEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChooseTypeEffect.java index 48c4ef848e1..e93674bd9d6 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChooseTypeEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChooseTypeEffect.java @@ -28,7 +28,7 @@ public class ChooseTypeEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - final Card card = sa.getSourceCard(); + final Card card = sa.getHostCard(); final String type = sa.getParam("Type"); final List invalidTypes = sa.hasParam("InvalidTypes") ? Arrays.asList(sa.getParam("InvalidTypes").split(",")) : new ArrayList(); @@ -63,7 +63,7 @@ public class ChooseTypeEffect extends SpellAbilityEffect { } } } else - throw new InvalidParameterException(sa.getSourceCard() + "'s ability resulted in no types to choose from"); + throw new InvalidParameterException(sa.getHostCard() + "'s ability resulted in no types to choose from"); } } diff --git a/forge-game/src/main/java/forge/game/ability/effects/ClashEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ClashEffect.java index 9a2a6f0b32b..f3dd2910b13 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ClashEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ClashEffect.java @@ -21,7 +21,7 @@ public class ClashEffect extends SpellAbilityEffect { */ @Override protected String getStackDescription(SpellAbility sa) { - return sa.getSourceCard().getName() + " - Clash with an opponent."; + return sa.getHostCard().getName() + " - Clash with an opponent."; } /* (non-Javadoc) @@ -33,13 +33,13 @@ public class ClashEffect extends SpellAbilityEffect { // Run triggers final HashMap runParams = new HashMap(); - runParams.put("Player", sa.getSourceCard().getController()); + runParams.put("Player", sa.getHostCard().getController()); if (victory) { if (sa.hasParam("WinSubAbility")) { final SpellAbility win = AbilityFactory.getAbility( - sa.getSourceCard().getSVar(sa.getParam("WinSubAbility")), sa.getSourceCard()); - win.setActivatingPlayer(sa.getSourceCard().getController()); + sa.getHostCard().getSVar(sa.getParam("WinSubAbility")), sa.getHostCard()); + win.setActivatingPlayer(sa.getHostCard().getController()); ((AbilitySub) win).setParent(sa); AbilityUtils.resolve(win); @@ -48,8 +48,8 @@ public class ClashEffect extends SpellAbilityEffect { } else { if (sa.hasParam("OtherwiseSubAbility")) { final SpellAbility otherwise = AbilityFactory.getAbility( - sa.getSourceCard().getSVar(sa.getParam("OtherwiseSubAbility")), sa.getSourceCard()); - otherwise.setActivatingPlayer(sa.getSourceCard().getController()); + sa.getHostCard().getSVar(sa.getParam("OtherwiseSubAbility")), sa.getHostCard()); + otherwise.setActivatingPlayer(sa.getHostCard().getController()); ((AbilitySub) otherwise).setParent(sa); AbilityUtils.resolve(otherwise); @@ -58,7 +58,7 @@ public class ClashEffect extends SpellAbilityEffect { } - sa.getSourceCard().getGame().getTriggerHandler().runTrigger(TriggerType.Clashed, runParams, false); + sa.getHostCard().getGame().getTriggerHandler().runTrigger(TriggerType.Clashed, runParams, false); } /** @@ -78,7 +78,7 @@ public class ClashEffect extends SpellAbilityEffect { * * Clash you win or win you don't. There is no tie. */ - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final Player player = source.getController(); final Player opponent = player.getOpponent(); final ZoneType lib = ZoneType.Library; diff --git a/forge-game/src/main/java/forge/game/ability/effects/CleanUpEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CleanUpEffect.java index 3177dec9822..99e46dfb2cd 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CleanUpEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CleanUpEffect.java @@ -14,7 +14,7 @@ public class CleanUpEffect extends SpellAbilityEffect { */ @Override public void resolve(SpellAbility sa) { - Card source = sa.getSourceCard(); + Card source = sa.getHostCard(); final Game game = source.getGame(); if (sa.hasParam("ClearRemembered")) { diff --git a/forge-game/src/main/java/forge/game/ability/effects/CloneEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CloneEffect.java index 1cdb63a1dbc..c942b0c75b9 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CloneEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CloneEffect.java @@ -25,7 +25,7 @@ public class CloneEffect extends SpellAbilityEffect { @Override protected String getStackDescription(SpellAbility sa) { final StringBuilder sb = new StringBuilder(); - final Card host = sa.getSourceCard(); + final Card host = sa.getHostCard(); Card tgtCard = host; Card cardToCopy = host; @@ -52,7 +52,7 @@ public class CloneEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - final Card host = sa.getSourceCard(); + final Card host = sa.getHostCard(); Card tgtCard = host; Map origSVars = host.getSVars(); diff --git a/forge-game/src/main/java/forge/game/ability/effects/ControlExchangeEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ControlExchangeEffect.java index 36ef7541324..a723bf4b807 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ControlExchangeEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ControlExchangeEffect.java @@ -27,7 +27,7 @@ public class ControlExchangeEffect extends SpellAbilityEffect { object1 = tgts.get(0); } if (sa.hasParam("Defined")) { - List cards = AbilityUtils.getDefinedCards(sa.getSourceCard(), sa.getParam("Defined"), sa); + List cards = AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("Defined"), sa); object2 = cards.isEmpty() ? null : cards.get(0); if (cards.size() > 1 && sa.hasParam("BothDefined")) { object1 = cards.get(1); @@ -52,7 +52,7 @@ public class ControlExchangeEffect extends SpellAbilityEffect { object1 = tgts.get(0); } if (sa.hasParam("Defined")) { - final List cards = AbilityUtils.getDefinedCards(sa.getSourceCard(), sa.getParam("Defined"), sa); + final List cards = AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("Defined"), sa); object2 = cards.isEmpty() ? null : cards.get(0); if (cards.size() > 1 && sa.hasParam("BothDefined")) { object1 = cards.get(1); diff --git a/forge-game/src/main/java/forge/game/ability/effects/ControlGainEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ControlGainEffect.java index 13fd93fd37f..2ea87cd9a25 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ControlGainEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ControlGainEffect.java @@ -67,7 +67,7 @@ public class ControlGainEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - Card source = sa.getSourceCard(); + Card source = sa.getHostCard(); final boolean bUntap = sa.hasParam("Untap"); final boolean bTapOnLose = sa.hasParam("TapOnLose"); @@ -107,8 +107,8 @@ public class ControlGainEffect extends SpellAbilityEffect { continue; } - if (!tgtC.equals(sa.getSourceCard()) && !sa.getSourceCard().getGainControlTargets().contains(tgtC)) { - sa.getSourceCard().addGainControlTarget(tgtC); + if (!tgtC.equals(sa.getHostCard()) && !sa.getHostCard().getGainControlTargets().contains(tgtC)) { + sa.getHostCard().addGainControlTarget(tgtC); } long tStamp = game.getNextTimestamp(); @@ -128,23 +128,23 @@ public class ControlGainEffect extends SpellAbilityEffect { } } - if (remember && !sa.getSourceCard().getRemembered().contains(tgtC)) { - sa.getSourceCard().addRemembered(tgtC); + if (remember && !sa.getHostCard().getRemembered().contains(tgtC)) { + sa.getHostCard().addRemembered(tgtC); } - if (forget && sa.getSourceCard().getRemembered().contains(tgtC)) { - sa.getSourceCard().removeRemembered(tgtC); + if (forget && sa.getHostCard().getRemembered().contains(tgtC)) { + sa.getHostCard().removeRemembered(tgtC); } if (lose != null) { if (lose.contains("LeavesPlay")) { - sa.getSourceCard().addLeavesPlayCommand(this.getLoseControlCommand(tgtC, tStamp, bTapOnLose, source, kws)); + sa.getHostCard().addLeavesPlayCommand(this.getLoseControlCommand(tgtC, tStamp, bTapOnLose, source, kws)); } if (lose.contains("Untap")) { - sa.getSourceCard().addUntapCommand(this.getLoseControlCommand(tgtC, tStamp, bTapOnLose, source, kws)); + sa.getHostCard().addUntapCommand(this.getLoseControlCommand(tgtC, tStamp, bTapOnLose, source, kws)); } if (lose.contains("LoseControl")) { - sa.getSourceCard().addChangeControllerCommand(this.getLoseControlCommand(tgtC, tStamp, bTapOnLose, source, kws)); + sa.getHostCard().addChangeControllerCommand(this.getLoseControlCommand(tgtC, tStamp, bTapOnLose, source, kws)); } if (lose.contains("EOT")) { game.getEndOfTurn().addUntil(this.getLoseControlCommand(tgtC, tStamp, bTapOnLose, source, kws)); @@ -153,20 +153,20 @@ public class ControlGainEffect extends SpellAbilityEffect { if (lose.contains("StaticCommandCheck")) { String leftVar = sa.getSVar(sa.getParam("StaticCommandCheckSVar")); String rightVar = sa.getParam("StaticCommandSVarCompare"); - sa.getSourceCard().addStaticCommandList(new Object[]{leftVar, rightVar, tgtC, + sa.getHostCard().addStaticCommandList(new Object[]{leftVar, rightVar, tgtC, this.getLoseControlCommand(tgtC, tStamp, bTapOnLose, source, kws)}); } } if (destroyOn != null) { if (destroyOn.contains("LeavesPlay")) { - sa.getSourceCard().addLeavesPlayCommand(this.getDestroyCommand(tgtC, source, bNoRegen)); + sa.getHostCard().addLeavesPlayCommand(this.getDestroyCommand(tgtC, source, bNoRegen)); } if (destroyOn.contains("Untap")) { - sa.getSourceCard().addUntapCommand(this.getDestroyCommand(tgtC, source, bNoRegen)); + sa.getHostCard().addUntapCommand(this.getDestroyCommand(tgtC, source, bNoRegen)); } if (destroyOn.contains("LoseControl")) { - sa.getSourceCard().addChangeControllerCommand(this.getDestroyCommand(tgtC, source, bNoRegen)); + sa.getHostCard().addChangeControllerCommand(this.getDestroyCommand(tgtC, source, bNoRegen)); } } diff --git a/forge-game/src/main/java/forge/game/ability/effects/CopyPermanentEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CopyPermanentEffect.java index a8d8780c49f..de43372e2f9 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CopyPermanentEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CopyPermanentEffect.java @@ -51,7 +51,7 @@ public class CopyPermanentEffect extends SpellAbilityEffect { */ @Override public void resolve(final SpellAbility sa) { - final Card hostCard = sa.getSourceCard(); + final Card hostCard = sa.getHostCard(); final Game game = hostCard.getGame(); final ArrayList keywords = new ArrayList(); final List types = new ArrayList(); @@ -244,7 +244,7 @@ public class CopyPermanentEffect extends SpellAbilityEffect { copy = game.getAction().moveToPlay(copy); copy.setCloneOrigin(hostCard); - sa.getSourceCard().addClone(copy); + sa.getHostCard().addClone(copy); crds[i] = copy; if (sa.hasParam("RememberCopied")) { hostCard.addRemembered(copy); diff --git a/forge-game/src/main/java/forge/game/ability/effects/CopySpellAbilityEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CopySpellAbilityEffect.java index 099fa87a60f..e40e5238588 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CopySpellAbilityEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CopySpellAbilityEffect.java @@ -26,14 +26,14 @@ public class CopySpellAbilityEffect extends SpellAbilityEffect { // TODO Someone fix this Description when Copying Charms final Iterator it = tgtSpells.iterator(); while (it.hasNext()) { - sb.append(it.next().getSourceCard()); + sb.append(it.next().getHostCard()); if (it.hasNext()) { sb.append(", "); } } int amount = 1; if (sa.hasParam("Amount")) { - amount = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("Amount"), sa); + amount = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("Amount"), sa); } if (amount > 1) { sb.append(amount).append(" times"); @@ -48,7 +48,7 @@ public class CopySpellAbilityEffect extends SpellAbilityEffect { */ @Override public void resolve(SpellAbility sa) { - final Card card = sa.getSourceCard(); + final Card card = sa.getHostCard(); Player controller = sa.getActivatingPlayer(); int amount = 1; @@ -76,7 +76,7 @@ public class CopySpellAbilityEffect extends SpellAbilityEffect { for (int multi = 0; multi < spellCount && !tgtSpells.isEmpty(); multi++) { String prompt = "Select " + Lang.getOrdinal(multi) + " spell to copy to stack"; SpellAbility chosen = controller.getController().chooseSingleSpellForEffect(tgtSpells, sa, prompt); - copies.add(CardFactory.copySpellAbilityAndSrcCard(card, chosen.getSourceCard(), chosen, true)); + copies.add(CardFactory.copySpellAbilityAndSrcCard(card, chosen.getHostCard(), chosen, true)); tgtSpells.remove(chosen); } } @@ -100,7 +100,7 @@ public class CopySpellAbilityEffect extends SpellAbilityEffect { mayChoseNewTargets = false; for (GameObject o : candidates) { - SpellAbility copy = CardFactory.copySpellAbilityAndSrcCard(card, chosenSA.getSourceCard(), chosenSA, true); + SpellAbility copy = CardFactory.copySpellAbilityAndSrcCard(card, chosenSA.getHostCard(), chosenSA, true); copy.resetFirstTarget(o); copies.add(copy); } @@ -112,12 +112,12 @@ public class CopySpellAbilityEffect extends SpellAbilityEffect { valid.add((Card) o); } } - valid = CardLists.getValidCards(valid, type, chosenSA.getActivatingPlayer(), chosenSA.getSourceCard()); + valid = CardLists.getValidCards(valid, type, chosenSA.getActivatingPlayer(), chosenSA.getHostCard()); Card originalTarget = Iterables.getFirst(getTargetCards(chosenSA), null); valid.remove(originalTarget); mayChoseNewTargets = false; for (Card c : valid) { - SpellAbility copy = CardFactory.copySpellAbilityAndSrcCard(card, chosenSA.getSourceCard(), chosenSA, true); + SpellAbility copy = CardFactory.copySpellAbilityAndSrcCard(card, chosenSA.getHostCard(), chosenSA, true); copy.resetFirstTarget(c); copies.add(copy); } @@ -127,7 +127,7 @@ public class CopySpellAbilityEffect extends SpellAbilityEffect { SpellAbility chosenSA = controller.getController().chooseSingleSpellForEffect(tgtSpells, sa, "Select a spell to copy"); chosenSA.setActivatingPlayer(controller); for (int i = 0; i < amount; i++) { - copies.add(CardFactory.copySpellAbilityAndSrcCard(card, chosenSA.getSourceCard(), chosenSA, true)); + copies.add(CardFactory.copySpellAbilityAndSrcCard(card, chosenSA.getHostCard(), chosenSA, true)); } } diff --git a/forge-game/src/main/java/forge/game/ability/effects/CounterEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CounterEffect.java index 2642f2f8741..8e1ef3af241 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CounterEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CounterEffect.java @@ -31,7 +31,7 @@ public class CounterEffect extends SpellAbilityEffect { continue; } if (sa.hasParam("AllValid")) { - if (!spell.getSourceCard().isValid(sa.getParam("AllValid"), sa.getActivatingPlayer(), sa.getSourceCard())) { + if (!spell.getHostCard().isValid(sa.getParam("AllValid"), sa.getActivatingPlayer(), sa.getHostCard())) { continue; } } @@ -46,7 +46,7 @@ public class CounterEffect extends SpellAbilityEffect { boolean isAbility = false; for (final SpellAbility tgtSA : sas) { sb.append(" "); - sb.append(tgtSA.getSourceCard()); + sb.append(tgtSA.getHostCard()); isAbility = tgtSA.isAbility(); if (isAbility) { sb.append("'s ability"); @@ -76,7 +76,7 @@ public class CounterEffect extends SpellAbilityEffect { continue; } if (sa.hasParam("AllValid")) { - if (!spell.getSourceCard().isValid(sa.getParam("AllValid"), sa.getActivatingPlayer(), sa.getSourceCard())) { + if (!spell.getHostCard().isValid(sa.getParam("AllValid"), sa.getActivatingPlayer(), sa.getHostCard())) { continue; } } @@ -88,12 +88,12 @@ public class CounterEffect extends SpellAbilityEffect { if (sa.hasParam("ForgetOtherTargets")) { if (sa.getParam("ForgetOtherTargets").equals("True")) { - sa.getSourceCard().clearRemembered(); + sa.getHostCard().clearRemembered(); } } for (final SpellAbility tgtSA : sas) { - final Card tgtSACard = tgtSA.getSourceCard(); + final Card tgtSACard = tgtSA.getHostCard(); if (tgtSA.isSpell() && !CardFactoryUtil.isCounterableBy(tgtSACard, sa)) { continue; @@ -113,13 +113,13 @@ public class CounterEffect extends SpellAbilityEffect { if (sa.hasParam("RememberCountered")) { if (sa.getParam("RememberCountered").equals("True")) { - sa.getSourceCard().addRemembered(tgtSACard); + sa.getHostCard().addRemembered(tgtSACard); } } if (sa.hasParam("RememberSplicedOntoCounteredSpell")) { if (tgtSA.getSplicedCards() != null) { - sa.getSourceCard().getRemembered().addAll(tgtSA.getSplicedCards()); + sa.getHostCard().getRemembered().addAll(tgtSA.getSplicedCards()); } } } @@ -145,8 +145,8 @@ public class CounterEffect extends SpellAbilityEffect { final HashMap repParams = new HashMap(); repParams.put("Event", "Counter"); repParams.put("TgtSA", tgtSA); - repParams.put("Affected", tgtSA.getSourceCard()); - repParams.put("Cause", srcSA.getSourceCard()); + repParams.put("Affected", tgtSA.getHostCard()); + repParams.put("Cause", srcSA.getHostCard()); if (game.getReplacementHandler().run(repParams) != ReplacementResult.NotReplaced) { return; } @@ -161,39 +161,39 @@ public class CounterEffect extends SpellAbilityEffect { // For Ability-targeted counterspells - do not move it anywhere, // even if Destination$ is specified. } else if (tgtSA.isFlashBackAbility()) { - game.getAction().exile(tgtSA.getSourceCard()); + game.getAction().exile(tgtSA.getHostCard()); } else if (destination.equals("Graveyard")) { - game.getAction().moveToGraveyard(tgtSA.getSourceCard()); + game.getAction().moveToGraveyard(tgtSA.getHostCard()); } else if (destination.equals("Exile")) { - game.getAction().exile(tgtSA.getSourceCard()); + game.getAction().exile(tgtSA.getHostCard()); } else if (destination.equals("TopOfLibrary")) { - game.getAction().moveToLibrary(tgtSA.getSourceCard()); + game.getAction().moveToLibrary(tgtSA.getHostCard()); } else if (destination.equals("Hand")) { - game.getAction().moveToHand(tgtSA.getSourceCard()); + game.getAction().moveToHand(tgtSA.getHostCard()); } else if (destination.equals("Battlefield")) { if (tgtSA instanceof SpellPermanent) { - Card c = tgtSA.getSourceCard(); + Card c = tgtSA.getHostCard(); System.out.println(c + " is SpellPermanent"); c.setController(srcSA.getActivatingPlayer(), 0); game.getAction().moveToPlay(c, srcSA.getActivatingPlayer()); } else { - Card c = game.getAction().moveToPlay(tgtSA.getSourceCard(), srcSA.getActivatingPlayer()); + Card c = game.getAction().moveToPlay(tgtSA.getHostCard(), srcSA.getActivatingPlayer()); c.setController(srcSA.getActivatingPlayer(), 0); } } else if (destination.equals("BottomOfLibrary")) { - game.getAction().moveToBottomOfLibrary(tgtSA.getSourceCard()); + game.getAction().moveToBottomOfLibrary(tgtSA.getHostCard()); } else if (destination.equals("ShuffleIntoLibrary")) { - game.getAction().moveToBottomOfLibrary(tgtSA.getSourceCard()); - tgtSA.getSourceCard().getController().shuffle(srcSA); + game.getAction().moveToBottomOfLibrary(tgtSA.getHostCard()); + tgtSA.getHostCard().getController().shuffle(srcSA); } else { throw new IllegalArgumentException("AbilityFactory_CounterMagic: Invalid Destination argument for card " - + srcSA.getSourceCard().getName()); + + srcSA.getHostCard().getName()); } // Run triggers final HashMap runParams = new HashMap(); runParams.put("Player", tgtSA.getActivatingPlayer()); - runParams.put("Card", tgtSA.getSourceCard()); - runParams.put("Cause", srcSA.getSourceCard()); + runParams.put("Card", tgtSA.getHostCard()); + runParams.put("Cause", srcSA.getHostCard()); srcSA.getActivatingPlayer().getGame().getTriggerHandler().runTrigger(TriggerType.Countered, runParams, false); diff --git a/forge-game/src/main/java/forge/game/ability/effects/CountersMoveEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CountersMoveEffect.java index 0095247b14c..9c02a2e5520 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CountersMoveEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CountersMoveEffect.java @@ -25,7 +25,7 @@ public class CountersMoveEffect extends SpellAbilityEffect { } final List tgtCards = getDefinedCardsOrTargeted(sa); final String countername = sa.getParam("CounterType"); - final int amount = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("CounterNum"), sa); + final int amount = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("CounterNum"), sa); sb.append("Move "); if ("Any".matches(countername)) { @@ -49,7 +49,7 @@ public class CountersMoveEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - final Card host = sa.getSourceCard(); + final Card host = sa.getHostCard(); final String counterName = sa.getParam("CounterType"); int cntToMove = 0; if (!sa.getParam("CounterNum").equals("All")) { diff --git a/forge-game/src/main/java/forge/game/ability/effects/CountersProliferateEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CountersProliferateEffect.java index 5eb949b9ad3..2dd07da7463 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CountersProliferateEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CountersProliferateEffect.java @@ -23,13 +23,13 @@ public class CountersProliferateEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - Player controller = sa.getSourceCard().getController(); + Player controller = sa.getHostCard().getController(); Map proliferateChoice = controller.getController().chooseProliferation(); if (proliferateChoice == null ) return; for(Entry ge: proliferateChoice.entrySet()) { if( ge.getKey() instanceof Player ) - ((Player) ge.getKey()).addPoisonCounters(1, sa.getSourceCard()); + ((Player) ge.getKey()).addPoisonCounters(1, sa.getHostCard()); else if( ge.getKey() instanceof Card) ((Card) ge.getKey()).addCounter(ge.getValue(), 1, true); } diff --git a/forge-game/src/main/java/forge/game/ability/effects/CountersPutAllEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CountersPutAllEffect.java index 74be7bbc2d4..d0b9df89c85 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CountersPutAllEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CountersPutAllEffect.java @@ -20,7 +20,7 @@ public class CountersPutAllEffect extends SpellAbilityEffect { final StringBuilder sb = new StringBuilder(); final CounterType cType = CounterType.valueOf(sa.getParam("CounterType")); - final int amount = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("CounterNum"), sa); + final int amount = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("CounterNum"), sa); final String zone = sa.hasParam("ValidZone") ? sa.getParam("ValidZone") : "Battlefield"; sb.append("Put ").append(amount).append(" ").append(cType.getName()).append(" counter"); @@ -40,13 +40,13 @@ public class CountersPutAllEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { final String type = sa.getParam("CounterType"); - final int counterAmount = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("CounterNum"), sa); + final int counterAmount = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("CounterNum"), sa); final String valid = sa.getParam("ValidCards"); final ZoneType zone = sa.hasParam("ValidZone") ? ZoneType.smartValueOf(sa.getParam("ValidZone")) : ZoneType.Battlefield; final Game game = sa.getActivatingPlayer().getGame(); List cards = game.getCardsIn(zone); - cards = CardLists.getValidCards(cards, valid, sa.getSourceCard().getController(), sa.getSourceCard()); + cards = CardLists.getValidCards(cards, valid, sa.getHostCard().getController(), sa.getHostCard()); final TargetRestrictions tgt = sa.getTargetRestrictions(); if (tgt != null) { diff --git a/forge-game/src/main/java/forge/game/ability/effects/CountersPutEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CountersPutEffect.java index 6775f039693..cb5f7904ea7 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CountersPutEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CountersPutEffect.java @@ -19,7 +19,7 @@ public class CountersPutEffect extends SpellAbilityEffect { @Override protected String getStackDescription(SpellAbility sa) { final StringBuilder sb = new StringBuilder(); - final Card card = sa.getSourceCard(); + final Card card = sa.getHostCard(); final boolean dividedAsYouChoose = sa.hasParam("DividedAsYouChoose"); final CounterType cType = CounterType.valueOf(sa.getParam("CounterType")); @@ -63,7 +63,7 @@ public class CountersPutEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - final Card card = sa.getSourceCard(); + final Card card = sa.getHostCard(); final Player activator = sa.getActivatingPlayer(); CounterType counterType; @@ -76,7 +76,7 @@ public class CountersPutEffect extends SpellAbilityEffect { } final boolean remember = sa.hasParam("RememberCounters"); - int counterAmount = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("CounterNum"), sa); + int counterAmount = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("CounterNum"), sa); final int max = sa.hasParam("MaxFromEffect") ? Integer.parseInt(sa.getParam("MaxFromEffect")) : -1; if (sa.hasParam("UpTo")) { diff --git a/forge-game/src/main/java/forge/game/ability/effects/CountersPutOrRemoveEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CountersPutOrRemoveEffect.java index f0ba905477e..00084e686d1 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CountersPutOrRemoveEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CountersPutOrRemoveEffect.java @@ -34,7 +34,7 @@ public class CountersPutOrRemoveEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { final Player activator = sa.getActivatingPlayer(); - final int counterAmount = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("CounterNum"), sa); + final int counterAmount = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("CounterNum"), sa); List tgtCards = getDefinedCardsOrTargeted(sa); diff --git a/forge-game/src/main/java/forge/game/ability/effects/CountersRemoveAllEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CountersRemoveAllEffect.java index f051c49f92f..06e437cc4c1 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CountersRemoveAllEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CountersRemoveAllEffect.java @@ -19,7 +19,7 @@ public class CountersRemoveAllEffect extends SpellAbilityEffect { final StringBuilder sb = new StringBuilder(); final CounterType cType = CounterType.valueOf(sa.getParam("CounterType")); - final int amount = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("CounterNum"), sa); + final int amount = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("CounterNum"), sa); final String zone = sa.hasParam("ValidZone") ? sa.getParam("ValidZone") : "Battlefield"; String amountString = Integer.toString(amount); @@ -44,13 +44,13 @@ public class CountersRemoveAllEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { final String type = sa.getParam("CounterType"); - int counterAmount = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("CounterNum"), sa); + int counterAmount = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("CounterNum"), sa); final String valid = sa.getParam("ValidCards"); final ZoneType zone = sa.hasParam("ValidZone") ? ZoneType.smartValueOf(sa.getParam("ValidZone")) : ZoneType.Battlefield; final Game game = sa.getActivatingPlayer().getGame(); List cards = game.getCardsIn(zone); - cards = CardLists.getValidCards(cards, valid, sa.getSourceCard().getController(), sa.getSourceCard()); + cards = CardLists.getValidCards(cards, valid, sa.getHostCard().getController(), sa.getHostCard()); if (sa.usesTargeting()) { final Player pl = sa.getTargets().getFirstTargetedPlayer(); diff --git a/forge-game/src/main/java/forge/game/ability/effects/CountersRemoveEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CountersRemoveEffect.java index df8fa30e4e7..e3ba31133b8 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CountersRemoveEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CountersRemoveEffect.java @@ -20,7 +20,7 @@ public class CountersRemoveEffect extends SpellAbilityEffect { final String counterName = sa.getParam("CounterType"); - final int amount = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("CounterNum"), sa); + final int amount = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("CounterNum"), sa); sb.append("Remove "); if (sa.hasParam("UpTo")) { @@ -52,12 +52,12 @@ public class CountersRemoveEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - final Card card = sa.getSourceCard(); + final Card card = sa.getHostCard(); final Game game = card.getGame(); final String type = sa.getParam("CounterType"); int cntToRemove = 0; if (!sa.getParam("CounterNum").equals("All") && !sa.getParam("CounterNum").equals("Remembered")) { - cntToRemove = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("CounterNum"), sa); + cntToRemove = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("CounterNum"), sa); } CounterType counterType = null; diff --git a/forge-game/src/main/java/forge/game/ability/effects/DamageAllEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DamageAllEffect.java index eced38633ad..6629065e722 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/DamageAllEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/DamageAllEffect.java @@ -23,13 +23,13 @@ public class DamageAllEffect extends SpellAbilityEffect { } final String damage = sa.getParam("NumDmg"); - final int dmg = AbilityUtils.calculateAmount(sa.getSourceCard(), damage, sa); + final int dmg = AbilityUtils.calculateAmount(sa.getHostCard(), damage, sa); - final List definedSources = AbilityUtils.getDefinedCards(sa.getSourceCard(), sa.getParam("DamageSource"), sa); + final List definedSources = AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("DamageSource"), sa); final Card source = definedSources.get(0); - if (source != sa.getSourceCard()) { + if (source != sa.getHostCard()) { sb.append(source.toString()).append(" deals"); } else { sb.append("Deals"); @@ -42,13 +42,13 @@ public class DamageAllEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - final List definedSources = AbilityUtils.getDefinedCards(sa.getSourceCard(), sa.getParam("DamageSource"), sa); + final List definedSources = AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("DamageSource"), sa); final Card card = definedSources.get(0); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final Game game = sa.getActivatingPlayer().getGame(); final String damage = sa.getParam("NumDmg"); - final int dmg = AbilityUtils.calculateAmount(sa.getSourceCard(), damage, sa); + final int dmg = AbilityUtils.calculateAmount(sa.getHostCard(), damage, sa); Player targetPlayer = sa.getTargets().getFirstTargetedPlayer(); diff --git a/forge-game/src/main/java/forge/game/ability/effects/DamageDealEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DamageDealEffect.java index 52777525566..dba5b7104ab 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/DamageDealEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/DamageDealEffect.java @@ -25,17 +25,17 @@ public class DamageDealEffect extends SpellAbilityEffect { // when damageStackDescription is called, just build exactly what is happening final StringBuilder sb = new StringBuilder(); final String damage = sa.getParam("NumDmg"); - final int dmg = AbilityUtils.calculateAmount(sa.getSourceCard(), damage, sa); + final int dmg = AbilityUtils.calculateAmount(sa.getHostCard(), damage, sa); List tgts = getTargets(sa); if (tgts.isEmpty()) return ""; - final List definedSources = AbilityUtils.getDefinedCards(sa.getSourceCard(), sa.getParam("DamageSource"), sa); + final List definedSources = AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("DamageSource"), sa); Card source = definedSources.isEmpty() ? new Card(0) : definedSources.get(0); - if (source != sa.getSourceCard()) { + if (source != sa.getHostCard()) { sb.append(source.toString()).append(" deals"); } else { sb.append("Deals"); @@ -67,7 +67,7 @@ public class DamageDealEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { final String damage = sa.getParam("NumDmg"); - int dmg = AbilityUtils.calculateAmount(sa.getSourceCard(), damage, sa); + int dmg = AbilityUtils.calculateAmount(sa.getHostCard(), damage, sa); final boolean noPrevention = sa.hasParam("NoPrevention"); final boolean combatDmg = sa.hasParam("CombatDamage"); @@ -96,7 +96,7 @@ public class DamageDealEffect extends SpellAbilityEffect { } // Can't radiate from a player if (origin != null) { - for (final Card c : CardUtil.getRadiance(sa.getSourceCard(), origin, + for (final Card c : CardUtil.getRadiance(sa.getHostCard(), origin, sa.getParam("ValidTgts").split(","))) { tgts.add(c); } @@ -105,7 +105,7 @@ public class DamageDealEffect extends SpellAbilityEffect { final boolean remember = sa.hasParam("RememberDamaged"); - final List definedSources = AbilityUtils.getDefinedCards(sa.getSourceCard(), sa.getParam("DamageSource"), sa); + final List definedSources = AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("DamageSource"), sa); if (definedSources == null) { return; } @@ -114,7 +114,7 @@ public class DamageDealEffect extends SpellAbilityEffect { if (divideOnResolution) { // Dividing Damage up to multiple targets using combat damage box // Currently only used for Master of the Wild Hunt - List players = AbilityUtils.getDefinedPlayers(sa.getSourceCard(), sa.getParam("DividerOnResolution"), sa); + List players = AbilityUtils.getDefinedPlayers(sa.getHostCard(), sa.getParam("DividerOnResolution"), sa); if (players.isEmpty()) { return; } diff --git a/forge-game/src/main/java/forge/game/ability/effects/DamageEachEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DamageEachEffect.java index df72a0c2007..f50d226d896 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/DamageEachEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/DamageEachEffect.java @@ -21,7 +21,7 @@ public class DamageEachEffect extends SpellAbilityEffect { protected String getStackDescription(SpellAbility sa) { final StringBuilder sb = new StringBuilder(); final String damage = sa.getParam("NumDmg"); - final int iDmg = AbilityUtils.calculateAmount(sa.getSourceCard(), damage, sa); + final int iDmg = AbilityUtils.calculateAmount(sa.getHostCard(), damage, sa); String desc = sa.getParam("ValidCards"); if (sa.hasParam("ValidDescription")) { @@ -58,7 +58,7 @@ public class DamageEachEffect extends SpellAbilityEffect { */ @Override public void resolve(SpellAbility sa) { - final Card card = sa.getSourceCard(); + final Card card = sa.getHostCard(); List sources = card.getGame().getCardsIn(ZoneType.Battlefield); if (sa.hasParam("ValidCards")) { @@ -100,7 +100,7 @@ public class DamageEachEffect extends SpellAbilityEffect { for (final Card source : sources) { final int dmg = CardFactoryUtil.xCount(source, card.getSVar("X")); Card rememberedcard; - for (final Object o : sa.getSourceCard().getRemembered()) { + for (final Object o : sa.getHostCard().getRemembered()) { if (o instanceof Card) { rememberedcard = (Card) o; // System.out.println(source + " deals " + dmg + " damage to " + rememberedcard); diff --git a/forge-game/src/main/java/forge/game/ability/effects/DamagePreventAllEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DamagePreventAllEffect.java index ba6c7b61773..b5684deecd1 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/DamagePreventAllEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/DamagePreventAllEffect.java @@ -18,9 +18,9 @@ public class DamagePreventAllEffect extends SpellAbilityEffect { */ @Override public void resolve(SpellAbility sa) { - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final Game game = sa.getActivatingPlayer().getGame(); - final int numDam = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("Amount"), sa); + final int numDam = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("Amount"), sa); String players = ""; List list = new ArrayList(); diff --git a/forge-game/src/main/java/forge/game/ability/effects/DamagePreventEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DamagePreventEffect.java index ce31f59aae2..b5575de5eb7 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/DamagePreventEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/DamagePreventEffect.java @@ -64,7 +64,7 @@ public class DamagePreventEffect extends SpellAbilityEffect { */ @Override public void resolve(SpellAbility sa) { - Card host = sa.getSourceCard(); + Card host = sa.getHostCard(); int numDam = AbilityUtils.calculateAmount(host, sa.getParam("Amount"), sa); final List tgts = getTargets(sa); diff --git a/forge-game/src/main/java/forge/game/ability/effects/DebuffAllEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DebuffAllEffect.java index 1dd2f0c06eb..aac5168a6b1 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/DebuffAllEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/DebuffAllEffect.java @@ -38,7 +38,7 @@ public class DebuffAllEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - final Card hostCard = sa.getSourceCard(); + final Card hostCard = sa.getHostCard(); final List kws = sa.hasParam("Keywords") ? Arrays.asList(sa.getParam("Keywords").split(" & ")) : new ArrayList(); final Game game = sa.getActivatingPlayer().getGame(); diff --git a/forge-game/src/main/java/forge/game/ability/effects/DelayedTriggerEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DelayedTriggerEffect.java index e8a942bfdb2..b5beb2e7527 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/DelayedTriggerEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/DelayedTriggerEffect.java @@ -46,12 +46,12 @@ public class DelayedTriggerEffect extends SpellAbilityEffect { } if (triggerRemembered != null) { - for (final Object o : AbilityUtils.getDefinedObjects(sa.getSourceCard(), triggerRemembered, sa)) { - sa.getSourceCard().addRemembered(o); + for (final Object o : AbilityUtils.getDefinedObjects(sa.getHostCard(), triggerRemembered, sa)) { + sa.getHostCard().addRemembered(o); } } - final Trigger delTrig = TriggerHandler.parseTrigger(mapParams, sa.getSourceCard(), true); + final Trigger delTrig = TriggerHandler.parseTrigger(mapParams, sa.getHostCard(), true); sa.getActivatingPlayer().getGame().getTriggerHandler().registerDelayedTrigger(delTrig); } diff --git a/forge-game/src/main/java/forge/game/ability/effects/DestroyAllEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DestroyAllEffect.java index a2cb25c6112..07c5574a78f 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/DestroyAllEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/DestroyAllEffect.java @@ -23,7 +23,7 @@ public class DestroyAllEffect extends SpellAbilityEffect { final StringBuilder sb = new StringBuilder(); final boolean noRegen = sa.hasParam("NoRegen"); - sb.append(sa.getSourceCard().getName()).append(" - Destroy permanents."); + sb.append(sa.getHostCard().getName()).append(" - Destroy permanents."); if (noRegen) { sb.append(" They can't be regenerated"); @@ -39,7 +39,7 @@ public class DestroyAllEffect extends SpellAbilityEffect { public void resolve(SpellAbility sa) { final boolean noRegen = sa.hasParam("NoRegen"); - final Card card = sa.getSourceCard(); + final Card card = sa.getHostCard(); final Game game = sa.getActivatingPlayer().getGame(); Player targetPlayer = sa.getTargets().getFirstTargetedPlayer(); diff --git a/forge-game/src/main/java/forge/game/ability/effects/DestroyEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DestroyEffect.java index 49bebe817da..09ca278ae96 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/DestroyEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/DestroyEffect.java @@ -68,7 +68,7 @@ public class DestroyEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - final Card card = sa.getSourceCard(); + final Card card = sa.getHostCard(); final Game game = card.getGame(); final boolean remDestroyed = sa.hasParam("RememberDestroyed"); diff --git a/forge-game/src/main/java/forge/game/ability/effects/DigEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DigEffect.java index f5038ac010a..3d3a81ee2e7 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/DigEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/DigEffect.java @@ -22,7 +22,7 @@ public class DigEffect extends SpellAbilityEffect { @Override protected String getStackDescription(SpellAbility sa) { - final Card host = sa.getSourceCard(); + final Card host = sa.getHostCard(); final StringBuilder sb = new StringBuilder(); final int numToDig = AbilityUtils.calculateAmount(host, sa.getParam("DigNum"), sa); final List tgtPlayers = getTargetPlayers(sa); @@ -44,7 +44,7 @@ public class DigEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - final Card host = sa.getSourceCard(); + final Card host = sa.getHostCard(); final Player player = sa.getActivatingPlayer(); final Game game = player.getGame(); Player chooser = player; @@ -91,7 +91,7 @@ public class DigEffect extends SpellAbilityEffect { final List tgtPlayers = getTargetPlayers(sa); if (sa.hasParam("Choser")) { - final List choosers = AbilityUtils.getDefinedPlayers(sa.getSourceCard(), sa.getParam("Choser"), sa); + final List choosers = AbilityUtils.getDefinedPlayers(sa.getHostCard(), sa.getParam("Choser"), sa); if (!choosers.isEmpty()) { chooser = choosers.get(0); } diff --git a/forge-game/src/main/java/forge/game/ability/effects/DigUntilEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DigUntilEffect.java index 4318b57d260..57d4094b092 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/DigUntilEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/DigUntilEffect.java @@ -29,7 +29,7 @@ public class DigUntilEffect extends SpellAbilityEffect { int untilAmount = 1; if (sa.hasParam("Amount")) { - untilAmount = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("Amount"), sa); + untilAmount = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("Amount"), sa); } for (final Player pl : getTargetPlayers(sa)) { @@ -42,7 +42,7 @@ public class DigUntilEffect extends SpellAbilityEffect { sb.append("s"); } if (sa.hasParam("MaxRevealed")) { - untilAmount = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("MaxRevealed"), sa); + untilAmount = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("MaxRevealed"), sa); sb.append(" or ").append(untilAmount).append(" card/s"); } sb.append(". Put "); @@ -74,7 +74,7 @@ public class DigUntilEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - final Card host = sa.getSourceCard(); + final Card host = sa.getHostCard(); String[] type = new String[]{"Card"}; if (sa.hasParam("Valid")) { diff --git a/forge-game/src/main/java/forge/game/ability/effects/DiscardEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DiscardEffect.java index d92b4ded842..e103e19b1e8 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/DiscardEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/DiscardEffect.java @@ -42,7 +42,7 @@ public class DiscardEffect extends SpellAbilityEffect { int numCards = 1; if (sa.hasParam("NumCards")) { - numCards = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("NumCards"), sa); + numCards = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("NumCards"), sa); } if (mode.equals("Hand")) { @@ -85,7 +85,7 @@ public class DiscardEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final String mode = sa.getParam("Mode"); //final boolean anyNumber = sa.hasParam("AnyNumber"); @@ -140,7 +140,7 @@ public class DiscardEffect extends SpellAbilityEffect { int numCards = 1; if (sa.hasParam("NumCards")) { - numCards = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("NumCards"), sa); + numCards = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("NumCards"), sa); if (p.getCardsIn(ZoneType.Hand).size() > 0 && p.getCardsIn(ZoneType.Hand).size() < numCards) { // System.out.println("Scale down discard from " + numCards + " to " + p.getCardsIn(ZoneType.Hand).size()); @@ -154,7 +154,7 @@ public class DiscardEffect extends SpellAbilityEffect { if (runDiscard) { final String valid = sa.hasParam("DiscardValid") ? sa.getParam("DiscardValid") : "Card"; - List list = CardLists.getValidCards(p.getCardsIn(ZoneType.Hand), valid, sa.getSourceCard().getController(), sa.getSourceCard()); + List list = CardLists.getValidCards(p.getCardsIn(ZoneType.Hand), valid, sa.getHostCard().getController(), sa.getHostCard()); list = CardLists.filter(list, Presets.NON_TOKEN); for (int i = 0; i < numCards; i++) { if (list.isEmpty()) diff --git a/forge-game/src/main/java/forge/game/ability/effects/DrawEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DrawEffect.java index 32648f20bff..bead40f2cfa 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/DrawEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/DrawEffect.java @@ -19,7 +19,7 @@ public class DrawEffect extends SpellAbilityEffect { if (!tgtPlayers.isEmpty()) { - int numCards = sa.hasParam("NumCards") ? AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("NumCards"), sa) : 1; + int numCards = sa.hasParam("NumCards") ? AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("NumCards"), sa) : 1; sb.append(Lang.joinHomogenous(tgtPlayers)); @@ -36,8 +36,8 @@ public class DrawEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - final Card source = sa.getSourceCard(); - final int numCards = sa.hasParam("NumCards") ? AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("NumCards"), sa) : 1; + final Card source = sa.getHostCard(); + final int numCards = sa.hasParam("NumCards") ? AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("NumCards"), sa) : 1; final TargetRestrictions tgt = sa.getTargetRestrictions(); diff --git a/forge-game/src/main/java/forge/game/ability/effects/EffectEffect.java b/forge-game/src/main/java/forge/game/ability/effects/EffectEffect.java index dbf87abcccf..e86b2f7a992 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/EffectEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/EffectEffect.java @@ -37,7 +37,7 @@ public class EffectEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - final Card hostCard = sa.getSourceCard(); + final Card hostCard = sa.getHostCard(); final Game game = hostCard.getGame(); String[] effectAbilities = null; @@ -85,7 +85,7 @@ public class EffectEffect extends SpellAbilityEffect { // Effect eff = new Effect(); String name = sa.getParam("Name"); if (name == null) { - name = sa.getSourceCard().getName() + "'s Effect"; + name = sa.getHostCard().getName() + "'s Effect"; } // Unique Effects shouldn't be duplicated @@ -94,7 +94,7 @@ public class EffectEffect extends SpellAbilityEffect { } if (sa.hasParam("EffectOwner")) { - List effectOwner = AbilityUtils.getDefinedPlayers(sa.getSourceCard(), sa.getParam("EffectOwner"), sa); + List effectOwner = AbilityUtils.getDefinedPlayers(sa.getHostCard(), sa.getParam("EffectOwner"), sa); ownerEff = effectOwner.get(0); } diff --git a/forge-game/src/main/java/forge/game/ability/effects/EncodeEffect.java b/forge-game/src/main/java/forge/game/ability/effects/EncodeEffect.java index 54e41e79717..48f28162683 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/EncodeEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/EncodeEffect.java @@ -27,7 +27,7 @@ public class EncodeEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - final Card host = sa.getSourceCard(); + final Card host = sa.getHostCard(); final Player player = sa.getActivatingPlayer(); final Game game = player.getGame(); diff --git a/forge-game/src/main/java/forge/game/ability/effects/FightEffect.java b/forge-game/src/main/java/forge/game/ability/effects/FightEffect.java index 995a8e5f57e..1002137bad9 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/FightEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/FightEffect.java @@ -58,7 +58,7 @@ public class FightEffect extends SpellAbilityEffect { } } if (sa.hasParam("Defined")) { - List defined = AbilityUtils.getDefinedCards(sa.getSourceCard(), sa.getParam("Defined"), sa); + List defined = AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("Defined"), sa); // Allow both fighters to come from defined list if first fighter not already found if (!defined.isEmpty()) { if (defined.size() > 1 && fighter1 == null) { diff --git a/forge-game/src/main/java/forge/game/ability/effects/FlipCoinEffect.java b/forge-game/src/main/java/forge/game/ability/effects/FlipCoinEffect.java index f5c1a59dd23..363e2e03c15 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/FlipCoinEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/FlipCoinEffect.java @@ -22,7 +22,7 @@ public class FlipCoinEffect extends SpellAbilityEffect { */ @Override protected String getStackDescription(SpellAbility sa) { - final Card host = sa.getSourceCard(); + final Card host = sa.getHostCard(); final Player player = host.getController(); final StringBuilder sb = new StringBuilder(); @@ -36,7 +36,7 @@ public class FlipCoinEffect extends SpellAbilityEffect { */ @Override public void resolve(SpellAbility sa) { - final Card host = sa.getSourceCard(); + final Card host = sa.getHostCard(); final Player player = host.getController(); int flipMultiplier = 1; // For multiple copies of Krark's Thumb @@ -154,7 +154,7 @@ public class FlipCoinEffect extends SpellAbilityEffect { public static boolean flipCoinCall(final Player caller, final SpellAbility sa, final int multiplier) { boolean [] results = new boolean [multiplier]; for (int i = 0; i < multiplier; i++) { - final boolean choice = caller.getController().chooseBinary(sa, sa.getSourceCard().getName() + " - Call coin flip", PlayerController.BinaryChoiceType.HeadsOrTails); + final boolean choice = caller.getController().chooseBinary(sa, sa.getHostCard().getName() + " - Call coin flip", PlayerController.BinaryChoiceType.HeadsOrTails); // Play the Flip A Coin sound caller.getGame().fireEvent(new GameEventFlipCoin()); final boolean flip = MyRandom.getRandom().nextBoolean(); diff --git a/forge-game/src/main/java/forge/game/ability/effects/FogEffect.java b/forge-game/src/main/java/forge/game/ability/effects/FogEffect.java index 4bb70af7a5f..ebc64cf4b2a 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/FogEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/FogEffect.java @@ -7,7 +7,7 @@ public class FogEffect extends SpellAbilityEffect { @Override protected String getStackDescription(SpellAbility sa) { - return sa.getSourceCard().getController() + " prevents all combat damage this turn."; + return sa.getHostCard().getController() + " prevents all combat damage this turn."; } diff --git a/forge-game/src/main/java/forge/game/ability/effects/GameLossEffect.java b/forge-game/src/main/java/forge/game/ability/effects/GameLossEffect.java index c6f6ec169b0..6f7402cc9c0 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/GameLossEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/GameLossEffect.java @@ -28,7 +28,7 @@ public class GameLossEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - final Card card = sa.getSourceCard(); + final Card card = sa.getHostCard(); for (final Player p : getTargetPlayers(sa)) { p.loseConditionMet(GameLossReason.SpellEffect, card.getName()); diff --git a/forge-game/src/main/java/forge/game/ability/effects/GameWinEffect.java b/forge-game/src/main/java/forge/game/ability/effects/GameWinEffect.java index 84a1cfcf20e..d4f90f2dc99 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/GameWinEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/GameWinEffect.java @@ -13,7 +13,7 @@ public class GameWinEffect extends SpellAbilityEffect { */ @Override public void resolve(SpellAbility sa) { - final Card card = sa.getSourceCard(); + final Card card = sa.getHostCard(); for (final Player p : getTargetPlayers(sa)) { p.altWinBySpellEffect(card.getName()); diff --git a/forge-game/src/main/java/forge/game/ability/effects/LifeExchangeEffect.java b/forge-game/src/main/java/forge/game/ability/effects/LifeExchangeEffect.java index 647773f8470..c819c21e848 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/LifeExchangeEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/LifeExchangeEffect.java @@ -45,7 +45,7 @@ public class LifeExchangeEffect extends SpellAbilityEffect { */ @Override public void resolve(SpellAbility sa) { - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); Player p1; Player p2; diff --git a/forge-game/src/main/java/forge/game/ability/effects/LifeGainEffect.java b/forge-game/src/main/java/forge/game/ability/effects/LifeGainEffect.java index 32c1355f671..a0b288395a7 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/LifeGainEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/LifeGainEffect.java @@ -17,7 +17,7 @@ public class LifeGainEffect extends SpellAbilityEffect { @Override protected String getStackDescription(SpellAbility sa) { final StringBuilder sb = new StringBuilder(); - final int amount = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("LifeAmount"), sa); + final int amount = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("LifeAmount"), sa); for (final Player player : getDefinedPlayersOrTargeted(sa)) { sb.append(player).append(" "); @@ -33,7 +33,7 @@ public class LifeGainEffect extends SpellAbilityEffect { */ @Override public void resolve(SpellAbility sa) { - final int lifeAmount = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("LifeAmount"), sa); + final int lifeAmount = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("LifeAmount"), sa); final TargetRestrictions tgt = sa.getTargetRestrictions(); List tgtPlayers = getDefinedPlayersOrTargeted(sa); @@ -43,7 +43,7 @@ public class LifeGainEffect extends SpellAbilityEffect { for (final Player p : tgtPlayers) { if ((tgt == null) || p.canBeTargetedBy(sa)) { - p.gainLife(lifeAmount, sa.getSourceCard()); + p.gainLife(lifeAmount, sa.getHostCard()); } } } diff --git a/forge-game/src/main/java/forge/game/ability/effects/LifeLoseEffect.java b/forge-game/src/main/java/forge/game/ability/effects/LifeLoseEffect.java index d1f05165d8c..da1be21bd63 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/LifeLoseEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/LifeLoseEffect.java @@ -16,7 +16,7 @@ public class LifeLoseEffect extends SpellAbilityEffect { protected String getStackDescription(SpellAbility sa) { final StringBuilder sb = new StringBuilder(); - final int amount = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("LifeAmount"), sa); + final int amount = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("LifeAmount"), sa); int affected = getTargetPlayers(sa).size(); for (int i = 0; i < affected; i++) { @@ -39,7 +39,7 @@ public class LifeLoseEffect extends SpellAbilityEffect { int lifeLost = 0; - final int lifeAmount = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("LifeAmount"), sa); + final int lifeAmount = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("LifeAmount"), sa); final TargetRestrictions tgt = sa.getTargetRestrictions(); for (final Player p : getTargetPlayers(sa)) { @@ -47,7 +47,7 @@ public class LifeLoseEffect extends SpellAbilityEffect { lifeLost += p.loseLife(lifeAmount); } } - sa.getSourceCard().setSVar("AFLifeLost", "Number$" + Integer.toString(lifeLost)); + sa.getHostCard().setSVar("AFLifeLost", "Number$" + Integer.toString(lifeLost)); } } diff --git a/forge-game/src/main/java/forge/game/ability/effects/LifeSetEffect.java b/forge-game/src/main/java/forge/game/ability/effects/LifeSetEffect.java index 4f5190505a5..4c033d714b9 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/LifeSetEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/LifeSetEffect.java @@ -17,7 +17,7 @@ public class LifeSetEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { final boolean redistribute = sa.hasParam("Redistribute"); - final int lifeAmount = redistribute ? 20 : AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("LifeAmount"), sa); + final int lifeAmount = redistribute ? 20 : AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("LifeAmount"), sa); final TargetRestrictions tgt = sa.getTargetRestrictions(); final List lifetotals = new ArrayList(); @@ -32,10 +32,10 @@ public class LifeSetEffect extends SpellAbilityEffect { for (final Player p : getTargetPlayers(sa)) { if ((tgt == null) || p.canBeTargetedBy(sa)) { if (!redistribute) { - p.setLife(lifeAmount, sa.getSourceCard()); + p.setLife(lifeAmount, sa.getHostCard()); } else { int life = sa.getActivatingPlayer().getController().chooseNumber(sa, "Life Total: " + p, lifetotals, p); - p.setLife(life, sa.getSourceCard()); + p.setLife(life, sa.getHostCard()); lifetotals.remove((Integer) life); } } @@ -48,7 +48,7 @@ public class LifeSetEffect extends SpellAbilityEffect { @Override protected String getStackDescription(SpellAbility sa) { final StringBuilder sb = new StringBuilder(); - final int amount = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("LifeAmount"), sa); + final int amount = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("LifeAmount"), sa); final boolean redistribute = sa.hasParam("Redistribute"); List tgtPlayers = getTargetPlayers(sa); diff --git a/forge-game/src/main/java/forge/game/ability/effects/ManaEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ManaEffect.java index ab464e07d42..08940d00f1f 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ManaEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ManaEffect.java @@ -21,7 +21,7 @@ public class ManaEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - final Card card = sa.getSourceCard(); + final Card card = sa.getHostCard(); AbilityManaPart abMana = sa.getManaPart(); @@ -128,7 +128,7 @@ public class ManaEffect extends SpellAbilityEffect { } if (abMana.getExpressChoice().isEmpty()) { - System.out.println("AbilityFactoryMana::manaResolve() - special mana effect is empty for " + sa.getSourceCard().getName()); + System.out.println("AbilityFactoryMana::manaResolve() - special mana effect is empty for " + sa.getHostCard().getName()); } } } diff --git a/forge-game/src/main/java/forge/game/ability/effects/ManaReflectedEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ManaReflectedEffect.java index 39c40ca9897..f7c023d025c 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ManaReflectedEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ManaReflectedEffect.java @@ -55,7 +55,7 @@ public class ManaReflectedEffect extends SpellAbilityEffect { */ private String generatedReflectedMana(final SpellAbility sa, final Collection colors, final Player player) { // Calculate generated mana here for stack description and resolving - final int amount = sa.hasParam("Amount") ? AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("Amount"), sa) : 1; + final int amount = sa.hasParam("Amount") ? AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("Amount"), sa) : 1; String baseMana = ""; diff --git a/forge-game/src/main/java/forge/game/ability/effects/MillEffect.java b/forge-game/src/main/java/forge/game/ability/effects/MillEffect.java index c41574de6a3..5458eaa2895 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/MillEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/MillEffect.java @@ -15,8 +15,8 @@ public class MillEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - final Card source = sa.getSourceCard(); - final int numCards = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("NumCards"), sa); + final Card source = sa.getHostCard(); + final int numCards = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("NumCards"), sa); final boolean bottom = sa.hasParam("FromBottom"); if (sa.hasParam("ForgetOtherRemembered")) { @@ -61,7 +61,7 @@ public class MillEffect extends SpellAbilityEffect { @Override protected String getStackDescription(SpellAbility sa) { final StringBuilder sb = new StringBuilder(); - final int numCards = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("NumCards"), sa); + final int numCards = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("NumCards"), sa); final List tgtPlayers = getTargetPlayers(sa); for (final Player p : tgtPlayers) { diff --git a/forge-game/src/main/java/forge/game/ability/effects/MultiplePilesEffect.java b/forge-game/src/main/java/forge/game/ability/effects/MultiplePilesEffect.java index 69ee667ae52..d5cd2350fb9 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/MultiplePilesEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/MultiplePilesEffect.java @@ -50,7 +50,7 @@ public class MultiplePilesEffect extends SpellAbilityEffect { */ @Override public void resolve(SpellAbility sa) { - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final ZoneType zone = sa.hasParam("Zone") ? ZoneType.smartValueOf(sa.getParam("Zone")) : ZoneType.Battlefield; final boolean randomChosen = sa.hasParam("RandomChosen"); final int piles = Integer.parseInt(sa.getParam("Piles")); diff --git a/forge-game/src/main/java/forge/game/ability/effects/MustAttackEffect.java b/forge-game/src/main/java/forge/game/ability/effects/MustAttackEffect.java index 4f6c7802bd7..06746815622 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/MustAttackEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/MustAttackEffect.java @@ -16,7 +16,7 @@ public class MustAttackEffect extends SpellAbilityEffect { */ @Override protected String getStackDescription(SpellAbility sa) { - final Card host = sa.getSourceCard(); + final Card host = sa.getHostCard(); final StringBuilder sb = new StringBuilder(); @@ -48,7 +48,7 @@ public class MustAttackEffect extends SpellAbilityEffect { if ((tgt == null) || p.canBeTargetedBy(sa)) { GameEntity entity; if (sa.getParam("Defender").equals("Self")) { - entity = sa.getSourceCard(); + entity = sa.getHostCard(); } else { entity = p.getOpponent(); } diff --git a/forge-game/src/main/java/forge/game/ability/effects/MustBlockEffect.java b/forge-game/src/main/java/forge/game/ability/effects/MustBlockEffect.java index 9ffbd57943b..19e73b6c9a7 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/MustBlockEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/MustBlockEffect.java @@ -13,7 +13,7 @@ public class MustBlockEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - final Card host = sa.getSourceCard(); + final Card host = sa.getHostCard(); List tgtCards = getTargetCards(sa); final TargetRestrictions tgt = sa.getTargetRestrictions(); @@ -21,7 +21,7 @@ public class MustBlockEffect extends SpellAbilityEffect { List cards; if (sa.hasParam("DefinedAttacker")) { - cards = AbilityUtils.getDefinedCards(sa.getSourceCard(), sa.getParam("DefinedAttacker"), sa); + cards = AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("DefinedAttacker"), sa); } else { cards = new ArrayList(); cards.add(host); @@ -43,7 +43,7 @@ public class MustBlockEffect extends SpellAbilityEffect { @Override protected String getStackDescription(SpellAbility sa) { - final Card host = sa.getSourceCard(); + final Card host = sa.getHostCard(); final StringBuilder sb = new StringBuilder(); // end standard pre- @@ -52,7 +52,7 @@ public class MustBlockEffect extends SpellAbilityEffect { String attacker = null; if (sa.hasParam("DefinedAttacker")) { - final List cards = AbilityUtils.getDefinedCards(sa.getSourceCard(), sa.getParam("DefinedAttacker"), sa); + final List cards = AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("DefinedAttacker"), sa); attacker = cards.get(0).toString(); } else { attacker = host.toString(); diff --git a/forge-game/src/main/java/forge/game/ability/effects/PeekAndRevealEffect.java b/forge-game/src/main/java/forge/game/ability/effects/PeekAndRevealEffect.java index 7c64ab1ea25..88e573831d1 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/PeekAndRevealEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/PeekAndRevealEffect.java @@ -28,15 +28,15 @@ public class PeekAndRevealEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { //RevealValid$ Card.sharesCreatureTypeWith | RevealOptional$ True | RememberRevealed$ True - Card source = sa.getSourceCard(); + Card source = sa.getHostCard(); final boolean rememberRevealed = sa.hasParam("RememberRevealed"); final boolean imprintRevealed = sa.hasParam("ImprintRevealed"); String revealValid = sa.hasParam("RevealValid") ? sa.getParam("RevealValid") : "Card"; String peekAmount = sa.hasParam("PeekAmount") ? sa.getParam("PeekAmount") : "1"; - int numPeek = AbilityUtils.calculateAmount(sa.getSourceCard(), peekAmount, sa); + int numPeek = AbilityUtils.calculateAmount(sa.getHostCard(), peekAmount, sa); // Right now, this is only used on your own library. - List libraryPlayers = AbilityUtils.getDefinedPlayers(sa.getSourceCard(), sa.getParam("Defined"), sa); + List libraryPlayers = AbilityUtils.getDefinedPlayers(sa.getHostCard(), sa.getParam("Defined"), sa); Player peekingPlayer = sa.getActivatingPlayer(); for(Player libraryToPeek : libraryPlayers) { @@ -48,7 +48,7 @@ public class PeekAndRevealEffect extends SpellAbilityEffect { peekCards.add(library.get(i)); } - List revealableCards = CardLists.getValidCards(peekCards, revealValid, sa.getActivatingPlayer(), sa.getSourceCard()); + List revealableCards = CardLists.getValidCards(peekCards, revealValid, sa.getActivatingPlayer(), sa.getHostCard()); boolean doReveal = !sa.hasParam("NoReveal") && !revealableCards.isEmpty(); if (!sa.hasParam("NoPeek")) { peekingPlayer.getController().reveal(peekCards, ZoneType.Library, peekingPlayer, source + " - Revealing cards from "); diff --git a/forge-game/src/main/java/forge/game/ability/effects/PermanentCreatureEffect.java b/forge-game/src/main/java/forge/game/ability/effects/PermanentCreatureEffect.java index 68b638dafc6..254e301c77d 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/PermanentCreatureEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/PermanentCreatureEffect.java @@ -18,14 +18,14 @@ public class PermanentCreatureEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { Player p = sa.getActivatingPlayer(); - sa.getSourceCard().setController(p, 0); - final Card c = p.getGame().getAction().moveTo(p.getZone(ZoneType.Battlefield), sa.getSourceCard()); - sa.setSourceCard(c); + sa.getHostCard().setController(p, 0); + final Card c = p.getGame().getAction().moveTo(p.getZone(ZoneType.Battlefield), sa.getHostCard()); + sa.setHostCard(c); } @Override public String getStackDescription(final SpellAbility sa) { - final Card sourceCard = sa.getSourceCard(); + final Card sourceCard = sa.getHostCard(); final StringBuilder sb = new StringBuilder(); sb.append(sourceCard.getName()).append(" - Creature ").append(sourceCard.getNetAttack()); sb.append(" / ").append(sourceCard.getNetDefense()); diff --git a/forge-game/src/main/java/forge/game/ability/effects/PermanentNoncreatureEffect.java b/forge-game/src/main/java/forge/game/ability/effects/PermanentNoncreatureEffect.java index 295497cd66d..d69be154633 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/PermanentNoncreatureEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/PermanentNoncreatureEffect.java @@ -18,14 +18,14 @@ public class PermanentNoncreatureEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { final Player p = sa.getActivatingPlayer(); - sa.getSourceCard().setController(p, 0); - final Card c = p.getGame().getAction().moveTo(p.getZone(ZoneType.Battlefield), sa.getSourceCard()); - sa.setSourceCard(c); + sa.getHostCard().setController(p, 0); + final Card c = p.getGame().getAction().moveTo(p.getZone(ZoneType.Battlefield), sa.getHostCard()); + sa.setHostCard(c); } @Override public String getStackDescription(final SpellAbility sa) { - final Card sourceCard = sa.getSourceCard(); + final Card sourceCard = sa.getHostCard(); final StringBuilder sb = new StringBuilder(); sb.append(sourceCard.getName()); return sb.toString(); diff --git a/forge-game/src/main/java/forge/game/ability/effects/PhasesEffect.java b/forge-game/src/main/java/forge/game/ability/effects/PhasesEffect.java index a048d6738cb..e837b4547e6 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/PhasesEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/PhasesEffect.java @@ -43,7 +43,7 @@ public class PhasesEffect extends SpellAbilityEffect { public void resolve(SpellAbility sa) { List tgtCards = new ArrayList(); final Game game = sa.getActivatingPlayer().getGame(); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final boolean phaseInOrOut = sa.hasParam("PhaseInOrOutAll"); if (sa.hasParam("AllValid")) { diff --git a/forge-game/src/main/java/forge/game/ability/effects/PlaneswalkEffect.java b/forge-game/src/main/java/forge/game/ability/effects/PlaneswalkEffect.java index bd3f69c6dfe..dea6537f36e 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/PlaneswalkEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/PlaneswalkEffect.java @@ -27,7 +27,7 @@ public class PlaneswalkEffect extends SpellAbilityEffect { p.leaveCurrentPlane(); } if(sa.hasParam("Defined")) { - List destinations = AbilityUtils.getDefinedCards(sa.getSourceCard(), sa.getParam("Defined"), sa); + List destinations = AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("Defined"), sa); sa.getActivatingPlayer().planeswalkTo(destinations); } else diff --git a/forge-game/src/main/java/forge/game/ability/effects/PlayEffect.java b/forge-game/src/main/java/forge/game/ability/effects/PlayEffect.java index 1ab6ab959e5..24c97e32615 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/PlayEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/PlayEffect.java @@ -48,7 +48,7 @@ public class PlayEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); Player activator = sa.getActivatingPlayer(); final Game game = activator.getGame(); boolean optional = sa.hasParam("Optional"); @@ -222,7 +222,7 @@ public class PlayEffect extends SpellAbilityEffect { remember = controller.getController().playSaFromPlayEffect(tgtSA); if (remember) { - source.addRemembered(tgtSA.getSourceCard()); + source.addRemembered(tgtSA.getHostCard()); } } diff --git a/forge-game/src/main/java/forge/game/ability/effects/PoisonEffect.java b/forge-game/src/main/java/forge/game/ability/effects/PoisonEffect.java index 94c3cc8bf84..fc7b3e9014e 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/PoisonEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/PoisonEffect.java @@ -21,12 +21,12 @@ import java.util.List; */ @Override public void resolve(SpellAbility sa) { - final int amount = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("Num"), sa); + final int amount = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("Num"), sa); final TargetRestrictions tgt = sa.getTargetRestrictions(); for (final Player p : getTargetPlayers(sa)) { if ((tgt == null) || p.canBeTargetedBy(sa)) { - p.addPoisonCounters(amount, sa.getSourceCard()); + p.addPoisonCounters(amount, sa.getHostCard()); } } } @@ -37,7 +37,7 @@ import java.util.List; @Override protected String getStackDescription(SpellAbility sa) { final StringBuilder sb = new StringBuilder(); - final int amount = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("Num"), sa); + final int amount = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("Num"), sa); final List tgtPlayers = getTargetPlayers(sa); diff --git a/forge-game/src/main/java/forge/game/ability/effects/PowerExchangeEffect.java b/forge-game/src/main/java/forge/game/ability/effects/PowerExchangeEffect.java index 53abad6149d..ce4e7b18aa7 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/PowerExchangeEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/PowerExchangeEffect.java @@ -20,7 +20,7 @@ public class PowerExchangeEffect extends SpellAbilityEffect { if (tgtCards.size() == 1) { - sb.append(sa.getSourceCard()).append(" exchanges power with "); + sb.append(sa.getHostCard()).append(" exchanges power with "); sb.append(tgtCards.get(0)); } else if (tgtCards.size() > 1) { sb.append(tgtCards.get(0)).append(" exchanges power with "); @@ -35,7 +35,7 @@ public class PowerExchangeEffect extends SpellAbilityEffect { */ @Override public void resolve(SpellAbility sa) { - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final Game game = source.getGame(); final Card c1; final Card c2; @@ -79,7 +79,7 @@ public class PowerExchangeEffect extends SpellAbilityEffect { if (sa.hasParam("UntilEndOfCombat")) { game.getEndOfCombat().addUntil(untilEOT); } else if (sa.hasParam("UntilHostLeavesPlay")) { - sa.getSourceCard().addLeavesPlayCommand(untilEOT); + sa.getHostCard().addLeavesPlayCommand(untilEOT); } else { game.getEndOfTurn().addUntil(untilEOT); } diff --git a/forge-game/src/main/java/forge/game/ability/effects/ProtectAllEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ProtectAllEffect.java index 2a4bda65be8..c81b9ed1d25 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ProtectAllEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ProtectAllEffect.java @@ -38,7 +38,7 @@ public class ProtectAllEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - final Card host = sa.getSourceCard(); + final Card host = sa.getHostCard(); final Game game = sa.getActivatingPlayer().getGame(); final boolean isChoice = sa.getParam("Gains").contains("Choice"); diff --git a/forge-game/src/main/java/forge/game/ability/effects/ProtectEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ProtectEffect.java index 2c3b6c3e359..ade1988041f 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ProtectEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ProtectEffect.java @@ -94,7 +94,7 @@ public class ProtectEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - final Card host = sa.getSourceCard(); + final Card host = sa.getHostCard(); final Game game = sa.getActivatingPlayer().getGame(); final boolean isChoice = sa.getParam("Gains").contains("Choice"); diff --git a/forge-game/src/main/java/forge/game/ability/effects/PumpAllEffect.java b/forge-game/src/main/java/forge/game/ability/effects/PumpAllEffect.java index b59f50075c2..d1076caae4f 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/PumpAllEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/PumpAllEffect.java @@ -64,7 +64,7 @@ public class PumpAllEffect extends SpellAbilityEffect { } if (sa.hasParam("RememberAllPumped")) { - sa.getSourceCard().addRemembered(tgtC); + sa.getHostCard().addRemembered(tgtC); } if (!sa.hasParam("Permanent")) { @@ -86,7 +86,7 @@ public class PumpAllEffect extends SpellAbilityEffect { } }; if (sa.hasParam("UntilUntaps")) { - sa.getSourceCard().addUntapCommand(untilEOT); + sa.getHostCard().addUntapCommand(untilEOT); } else if (sa.hasParam("UntilEndOfCombat")) { game.getEndOfCombat().addUntil(untilEOT); } else if (sa.hasParam("UntilYourNextTurn")) { @@ -110,7 +110,7 @@ public class PumpAllEffect extends SpellAbilityEffect { if (sa.hasParam("PumpAllDescription")) { desc = sa.getParam("PumpAllDescription"); } else if (sa.hasParam("SpellDescription")) { - desc = sa.getParam("SpellDescription").replace("CARDNAME", sa.getSourceCard().getName()); + desc = sa.getParam("SpellDescription").replace("CARDNAME", sa.getHostCard().getName()); } sb.append(desc); @@ -154,13 +154,13 @@ public class PumpAllEffect extends SpellAbilityEffect { list = AbilityUtils.filterListByType(list, valid, sa); List keywords = sa.hasParam("KW") ? Arrays.asList(sa.getParam("KW").split(" & ")) : new ArrayList(); - final int a = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("NumAtt"), sa); - final int d = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("NumDef"), sa); + final int a = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("NumAtt"), sa); + final int d = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("NumDef"), sa); if (sa.hasParam("SharedKeywordsZone")) { List zones = ZoneType.listValueOf(sa.getParam("SharedKeywordsZone")); String[] restrictions = sa.hasParam("SharedRestrictions") ? sa.getParam("SharedRestrictions").split(",") : new String[] {"Card"}; - keywords = CardFactoryUtil.sharedKeywords(sa.getParam("KW").split(" & "), restrictions, zones, sa.getSourceCard()); + keywords = CardFactoryUtil.sharedKeywords(sa.getParam("KW").split(" & "), restrictions, zones, sa.getHostCard()); } this.applyPumpAll(sa, list, a, d, keywords, affectedZones); } // pumpAllResolve() diff --git a/forge-game/src/main/java/forge/game/ability/effects/PumpEffect.java b/forge-game/src/main/java/forge/game/ability/effects/PumpEffect.java index 2aa39bb730b..b28c938a2f9 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/PumpEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/PumpEffect.java @@ -26,7 +26,7 @@ public class PumpEffect extends SpellAbilityEffect { private void applyPump(final SpellAbility sa, final Card applyTo, final int a, final int d, final List keywords) { //if host is not on the battlefield don't apply if (sa.hasParam("UntilLoseControlOfHost") - && !sa.getSourceCard().isInPlay()) { + && !sa.getHostCard().isInPlay()) { return; } final Game game = sa.getActivatingPlayer().getGame(); @@ -77,17 +77,17 @@ public class PumpEffect extends SpellAbilityEffect { } else if (sa.hasParam("UntilYourNextUpkeep")) { game.getUpkeep().addUntil(sa.getActivatingPlayer(), untilEOT); } else if (sa.hasParam("UntilHostLeavesPlay")) { - sa.getSourceCard().addLeavesPlayCommand(untilEOT); + sa.getHostCard().addLeavesPlayCommand(untilEOT); } else if (sa.hasParam("UntilHostLeavesPlayOrEOT")) { - sa.getSourceCard().addLeavesPlayCommand(untilEOT); + sa.getHostCard().addLeavesPlayCommand(untilEOT); game.getEndOfTurn().addUntil(untilEOT); } else if (sa.hasParam("UntilLoseControlOfHost")) { - sa.getSourceCard().addLeavesPlayCommand(untilEOT); - sa.getSourceCard().addChangeControllerCommand(untilEOT); + sa.getHostCard().addLeavesPlayCommand(untilEOT); + sa.getHostCard().addChangeControllerCommand(untilEOT); } else if (sa.hasParam("UntilYourNextTurn")) { game.getCleanup().addUntil(sa.getActivatingPlayer(), untilEOT); } else if (sa.hasParam("UntilUntaps")) { - sa.getSourceCard().addUntapCommand(untilEOT); + sa.getHostCard().addUntapCommand(untilEOT); } else { game.getEndOfTurn().addUntil(untilEOT); } @@ -151,8 +151,8 @@ public class PumpEffect extends SpellAbilityEffect { } final List keywords = sa.hasParam("KW") ? Arrays.asList(sa.getParam("KW").split(" & ")) : new ArrayList(); - final int atk = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("NumAtt"), sa); - final int def = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("NumDef"), sa); + final int atk = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("NumAtt"), sa); + final int def = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("NumDef"), sa); sb.append("gains "); if ((atk != 0) || (def != 0)) { @@ -187,7 +187,7 @@ public class PumpEffect extends SpellAbilityEffect { final ArrayList untargetedCards = new ArrayList(); final TargetRestrictions tgt = sa.getTargetRestrictions(); final Game game = sa.getActivatingPlayer().getGame(); - final Card host = sa.getSourceCard(); + final Card host = sa.getHostCard(); String pumpRemembered = null; String pumpForget = null; diff --git a/forge-game/src/main/java/forge/game/ability/effects/RearrangeTopOfLibraryEffect.java b/forge-game/src/main/java/forge/game/ability/effects/RearrangeTopOfLibraryEffect.java index 0559fdf93ca..da330d52e60 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/RearrangeTopOfLibraryEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/RearrangeTopOfLibraryEffect.java @@ -23,7 +23,7 @@ public class RearrangeTopOfLibraryEffect extends SpellAbilityEffect { int numCards = 0; final List tgtPlayers = getTargetPlayers(sa); boolean shuffle = false; - Card host = sa.getSourceCard(); + Card host = sa.getHostCard(); numCards = AbilityUtils.calculateAmount(host, sa.getParam("NumCards"), sa); shuffle = sa.hasParam("MayShuffle"); @@ -68,7 +68,7 @@ public class RearrangeTopOfLibraryEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { int numCards = 0; - Card host = sa.getSourceCard(); + Card host = sa.getHostCard(); boolean shuffle = false; final TargetRestrictions tgt = sa.getTargetRestrictions(); diff --git a/forge-game/src/main/java/forge/game/ability/effects/RegenerateAllEffect.java b/forge-game/src/main/java/forge/game/ability/effects/RegenerateAllEffect.java index f787adca218..87d1b3ff075 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/RegenerateAllEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/RegenerateAllEffect.java @@ -20,7 +20,7 @@ public class RegenerateAllEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - final Card hostCard = sa.getSourceCard(); + final Card hostCard = sa.getHostCard(); final Game game = hostCard.getGame(); String valid = ""; diff --git a/forge-game/src/main/java/forge/game/ability/effects/RegenerateEffect.java b/forge-game/src/main/java/forge/game/ability/effects/RegenerateEffect.java index 5a1c118ab2f..e6393cb8512 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/RegenerateEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/RegenerateEffect.java @@ -50,7 +50,7 @@ public class RegenerateEffect extends SpellAbilityEffect { public void resolve(SpellAbility sa) { final TargetRestrictions tgt = sa.getTargetRestrictions(); final Game game = sa.getActivatingPlayer().getGame(); - final Card sourceCard = sa.getSourceCard(); + final Card sourceCard = sa.getHostCard(); for (final Card tgtC : getTargetCards(sa)) { final Command untilEOT = new Command() { @@ -65,7 +65,7 @@ public class RegenerateEffect extends SpellAbilityEffect { if (tgtC.isInPlay() && (tgt == null || tgt.canTgtPlayer() || tgtC.canBeTargetedBy(sa))) { SpellAbility triggerSA = null; if (sa.hasParam("RegenerationTrigger")) { - String abString = sa.getSourceCard().getSVar(sa.getParam("RegenerationTrigger")); + String abString = sa.getHostCard().getSVar(sa.getParam("RegenerationTrigger")); if (sa.hasParam("ReplacePlayerName")) { // Soldevi Sentry String def = sa.getParam("ReplacePlayerName"); List replaced = AbilityUtils.getDefinedPlayers(sourceCard, def, sa); @@ -78,7 +78,7 @@ public class RegenerateEffect extends SpellAbilityEffect { triggerSA = AbilityFactory.getAbility(abString, sourceCard); triggerSA.setActivatingPlayer(sa.getActivatingPlayer()); triggerSA.setTrigger(true); - triggerSA.setSourceCard(sourceCard); + triggerSA.setHostCard(sourceCard); } CardShields shield = new CardShields(sa, triggerSA); tgtC.addShield(shield); diff --git a/forge-game/src/main/java/forge/game/ability/effects/RemoveFromCombatEffect.java b/forge-game/src/main/java/forge/game/ability/effects/RemoveFromCombatEffect.java index d4e0223b447..b0e97e673a3 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/RemoveFromCombatEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/RemoveFromCombatEffect.java @@ -38,7 +38,7 @@ public class RemoveFromCombatEffect extends SpellAbilityEffect { if (combat != null && (tgt == null || c.canBeTargetedBy(sa))) { combat.removeFromCombat(c); if (rem) { - sa.getSourceCard().addRemembered(c); + sa.getHostCard().addRemembered(c); } } } diff --git a/forge-game/src/main/java/forge/game/ability/effects/RepeatEachEffect.java b/forge-game/src/main/java/forge/game/ability/effects/RepeatEachEffect.java index a6ceb688fa7..7f764aef7be 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/RepeatEachEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/RepeatEachEffect.java @@ -25,10 +25,10 @@ public class RepeatEachEffect extends SpellAbilityEffect { */ @Override public void resolve(SpellAbility sa) { - Card source = sa.getSourceCard(); + Card source = sa.getHostCard(); // setup subability to repeat - final SpellAbility repeat = AbilityFactory.getAbility(sa.getSourceCard().getSVar(sa.getParam("RepeatSubAbility")), source); + final SpellAbility repeat = AbilityFactory.getAbility(sa.getHostCard().getSVar(sa.getParam("RepeatSubAbility")), source); repeat.setActivatingPlayer(sa.getActivatingPlayer()); ((AbilitySub) repeat).setParent(sa); diff --git a/forge-game/src/main/java/forge/game/ability/effects/RepeatEffect.java b/forge-game/src/main/java/forge/game/ability/effects/RepeatEffect.java index 190dc692368..6a015513670 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/RepeatEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/RepeatEffect.java @@ -25,16 +25,16 @@ public class RepeatEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - Card source = sa.getSourceCard(); + Card source = sa.getHostCard(); // setup subability to repeat - final SpellAbility repeat = AbilityFactory.getAbility(sa.getSourceCard().getSVar(sa.getParam("RepeatSubAbility")), source); + final SpellAbility repeat = AbilityFactory.getAbility(sa.getHostCard().getSVar(sa.getParam("RepeatSubAbility")), source); repeat.setActivatingPlayer(sa.getActivatingPlayer()); ((AbilitySub) repeat).setParent(sa); Integer maxRepeat = null; if (sa.hasParam("MaxRepeat")) { - maxRepeat = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("MaxRepeat"), sa); + maxRepeat = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("MaxRepeat"), sa); if (maxRepeat.intValue() == 0) return; // do nothing if maxRepeat is 0. the next loop will execute at least once } @@ -46,7 +46,7 @@ public class RepeatEffect extends SpellAbilityEffect { if (maxRepeat != null && maxRepeat <= count) { // TODO Replace Infinite Loop Break with a game draw. Here are the scenarios that can cause this: // Helm of Obedience vs Graveyard to Library replacement effect - StringBuilder infLoop = new StringBuilder(sa.getSourceCard().toString()); + StringBuilder infLoop = new StringBuilder(sa.getHostCard().toString()); infLoop.append(" - To avoid an infinite loop, this repeat has been broken "); infLoop.append(" and the game will now continue in the current state, ending the loop early. "); infLoop.append("Once Draws are available this probably should change to a Draw."); @@ -83,12 +83,12 @@ public class RepeatEffect extends SpellAbilityEffect { } if (sa.hasParam("RepeatDefined")) { - list.addAll(AbilityUtils.getDefinedCards(sa.getSourceCard(), sa.getParam("RepeatDefined"), sa)); + list.addAll(AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("RepeatDefined"), sa)); } else { list = game.getCardsIn(ZoneType.Battlefield); } - list = CardLists.getValidCards(list, repeatPresent.split(","), sa.getActivatingPlayer(), sa.getSourceCard()); + list = CardLists.getValidCards(list, repeatPresent.split(","), sa.getActivatingPlayer(), sa.getHostCard()); int right; final String rightString = repeatCompare.substring(2); @@ -97,7 +97,7 @@ public class RepeatEffect extends SpellAbilityEffect { } catch (final NumberFormatException e) { // Otherwise, grab it from // the // SVar - right = CardFactoryUtil.xCount(sa.getSourceCard(), sa.getSourceCard().getSVar(rightString)); + right = CardFactoryUtil.xCount(sa.getHostCard(), sa.getHostCard().getSVar(rightString)); } final int left = list.size(); @@ -114,8 +114,8 @@ public class RepeatEffect extends SpellAbilityEffect { sVarOperator = sa.getParam("RepeatSVarCompare").substring(0, 2); sVarOperand = sa.getParam("RepeatSVarCompare").substring(2); } - final int svarValue = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("RepeatCheckSVar"), sa); - final int operandValue = AbilityUtils.calculateAmount(sa.getSourceCard(), sVarOperand, sa); + final int svarValue = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("RepeatCheckSVar"), sa); + final int operandValue = AbilityUtils.calculateAmount(sa.getHostCard(), sVarOperand, sa); if (!Expressions.compare(svarValue, sVarOperator, operandValue)) { return false; diff --git a/forge-game/src/main/java/forge/game/ability/effects/RestartGameEffect.java b/forge-game/src/main/java/forge/game/ability/effects/RestartGameEffect.java index 3f6c9bd62a5..a3ce78dedf2 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/RestartGameEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/RestartGameEffect.java @@ -41,7 +41,7 @@ public class RestartGameEffect extends SpellAbilityEffect { List filteredCards = null; if (leaveZone != null) { filteredCards = CardLists.filter(p.getCardsIn(leaveZone), - CardPredicates.restriction(leaveRestriction.split(","), p, sa.getSourceCard())); + CardPredicates.restriction(leaveRestriction.split(","), p, sa.getHostCard())); } newLibrary.addAll(filteredCards); @@ -68,7 +68,7 @@ public class RestartGameEffect extends SpellAbilityEffect { RegisteredPlayer psc = game.getMatch().getPlayers().get(i); player.setStartingLife(psc.getStartingLife()); - player.setPoisonCounters(0, sa.getSourceCard()); + player.setPoisonCounters(0, sa.getHostCard()); player.setNumLandsPlayed(0); player.initVariantsZones(psc); @@ -102,7 +102,7 @@ public class RestartGameEffect extends SpellAbilityEffect { desc = "Restart the game."; } - return desc.replace("CARDNAME", sa.getSourceCard().getName()); + return desc.replace("CARDNAME", sa.getHostCard().getName()); } } diff --git a/forge-game/src/main/java/forge/game/ability/effects/RevealEffect.java b/forge-game/src/main/java/forge/game/ability/effects/RevealEffect.java index dcc681ac8c5..591c8ffc326 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/RevealEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/RevealEffect.java @@ -18,7 +18,7 @@ public class RevealEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - final Card host = sa.getSourceCard(); + final Card host = sa.getHostCard(); final boolean anyNumber = sa.hasParam("AnyNumber"); int cnt = sa.hasParam("NumCards") ? AbilityUtils.calculateAmount(host, sa.getParam("NumCards"), sa) : 1; @@ -46,7 +46,7 @@ public class RevealEffect extends SpellAbilityEffect { } } else if (sa.hasParam("RevealDefined")) { - revealed.addAll(AbilityUtils.getDefinedCards(sa.getSourceCard(), sa.getParam("RevealDefined"), sa)); + revealed.addAll(AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("RevealDefined"), sa)); } else { List valid = new ArrayList(cardsInHand); diff --git a/forge-game/src/main/java/forge/game/ability/effects/RevealHandEffect.java b/forge-game/src/main/java/forge/game/ability/effects/RevealHandEffect.java index cc8394ebe60..41153f2df3f 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/RevealHandEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/RevealHandEffect.java @@ -33,7 +33,7 @@ public class RevealHandEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - final Card host = sa.getSourceCard(); + final Card host = sa.getHostCard(); final TargetRestrictions tgt = sa.getTargetRestrictions(); final boolean optional = sa.hasParam("Optional"); diff --git a/forge-game/src/main/java/forge/game/ability/effects/SacrificeAllEffect.java b/forge-game/src/main/java/forge/game/ability/effects/SacrificeAllEffect.java index aac8bbe1812..3894a41d262 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/SacrificeAllEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/SacrificeAllEffect.java @@ -24,7 +24,7 @@ public class SacrificeAllEffect extends SpellAbilityEffect { * * Target tgt = af.getAbTgt(); if (tgt != null) tgtPlayers = * tgt.getTargetPlayers(); else tgtPlayers = - * AbilityFactory.getDefinedPlayers(sa.getSourceCard(), + * AbilityFactory.getDefinedPlayers(sa.getHostCard(), * sa.get("Defined"), sa); */ @@ -34,7 +34,7 @@ public class SacrificeAllEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - final Card card = sa.getSourceCard(); + final Card card = sa.getHostCard(); final Player activator = sa.getActivatingPlayer(); final Game game = activator.getGame(); @@ -47,7 +47,7 @@ public class SacrificeAllEffect extends SpellAbilityEffect { List list; if (sa.hasParam("Defined")) { - list = new ArrayList(AbilityUtils.getDefinedCards(sa.getSourceCard(), sa.getParam("Defined"), sa)); + list = new ArrayList(AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("Defined"), sa)); } else { list = AbilityUtils.filterListByType(game.getCardsIn(ZoneType.Battlefield), valid, sa); } diff --git a/forge-game/src/main/java/forge/game/ability/effects/SacrificeEffect.java b/forge-game/src/main/java/forge/game/ability/effects/SacrificeEffect.java index ea1f8c89c23..caf33be17de 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/SacrificeEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/SacrificeEffect.java @@ -22,7 +22,7 @@ public class SacrificeEffect extends SpellAbilityEffect { public void resolve(SpellAbility sa) { final Player activator = sa.getActivatingPlayer(); final Game game = activator.getGame(); - final Card card = sa.getSourceCard(); + final Card card = sa.getHostCard(); // Expand Sacrifice keyword here depending on what we need out of it. final String num = sa.hasParam("Amount") ? sa.getParam("Amount") : "1"; @@ -101,12 +101,12 @@ public class SacrificeEffect extends SpellAbilityEffect { String num = sa.getParam("Amount"); num = (num == null) ? "1" : num; - final int amount = AbilityUtils.calculateAmount(sa.getSourceCard(), num, sa); + final int amount = AbilityUtils.calculateAmount(sa.getHostCard(), num, sa); if (valid.equals("Self")) { - sb.append("Sacrifice ").append(sa.getSourceCard().toString()); + sb.append("Sacrifice ").append(sa.getHostCard().toString()); } else if (valid.equals("Card.AttachedBy")) { - final Card toSac = sa.getSourceCard().getEnchantingCard(); + final Card toSac = sa.getHostCard().getEnchantingCard(); sb.append(toSac.getController()).append(" sacrifices ").append(toSac).append("."); } else { for (final Player p : tgts) { diff --git a/forge-game/src/main/java/forge/game/ability/effects/ScryEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ScryEffect.java index 9e8eb12aee8..2dd2e9e6932 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ScryEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ScryEffect.java @@ -30,7 +30,7 @@ public class ScryEffect extends SpellAbilityEffect { int num = 1; if (sa.hasParam("ScryNum")) { - num = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("ScryNum"), sa); + num = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("ScryNum"), sa); } sb.append("scrys (").append(num).append(")."); @@ -42,7 +42,7 @@ public class ScryEffect extends SpellAbilityEffect { int num = 1; if (sa.hasParam("ScryNum")) { - num = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("ScryNum"), sa); + num = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("ScryNum"), sa); } final TargetRestrictions tgt = sa.getTargetRestrictions(); diff --git a/forge-game/src/main/java/forge/game/ability/effects/SetInMotionEffect.java b/forge-game/src/main/java/forge/game/ability/effects/SetInMotionEffect.java index b58960545dc..522142bd4d0 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/SetInMotionEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/SetInMotionEffect.java @@ -15,14 +15,14 @@ public class SetInMotionEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { System.out.println("AF_SIM"); - Card source = sa.getSourceCard(); + Card source = sa.getHostCard(); Player controller = source.getController(); int repeats = 1; if (sa.hasParam("RepeatNum")) { - repeats = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("RepeatNum"), sa); + repeats = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("RepeatNum"), sa); } for (int i = 0; i < repeats; i++) { diff --git a/forge-game/src/main/java/forge/game/ability/effects/SetStateEffect.java b/forge-game/src/main/java/forge/game/ability/effects/SetStateEffect.java index 0a7b22ea2aa..0ee19c42103 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/SetStateEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/SetStateEffect.java @@ -44,7 +44,7 @@ public class SetStateEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - final Card host = sa.getSourceCard(); + final Card host = sa.getHostCard(); final Game game = host.getGame(); final List tgtCards = getTargetCards(sa); diff --git a/forge-game/src/main/java/forge/game/ability/effects/SkipTurnEffect.java b/forge-game/src/main/java/forge/game/ability/effects/SkipTurnEffect.java index 316de997140..1820ab64177 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/SkipTurnEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/SkipTurnEffect.java @@ -12,7 +12,7 @@ public class SkipTurnEffect extends SpellAbilityEffect { @Override protected String getStackDescription(SpellAbility sa) { final StringBuilder sb = new StringBuilder(); - final int numTurns = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("NumTurns"), sa); + final int numTurns = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("NumTurns"), sa); List tgtPlayers = getTargetPlayers(sa); for (final Player player : tgtPlayers) { @@ -25,7 +25,7 @@ public class SkipTurnEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - final int numTurns = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("NumTurns"), sa); + final int numTurns = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("NumTurns"), sa); List tgtPlayers = getTargetPlayers(sa); for (final Player player : tgtPlayers) { for(int i = 0; i < numTurns; i++) { diff --git a/forge-game/src/main/java/forge/game/ability/effects/StoreSVarEffect.java b/forge-game/src/main/java/forge/game/ability/effects/StoreSVarEffect.java index 6fcba546132..4ad9e3dda01 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/StoreSVarEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/StoreSVarEffect.java @@ -11,7 +11,7 @@ public class StoreSVarEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { //SVar$ OldToughness | Type$ Count | Expression$ CardToughness - Card source = sa.getSourceCard(); + Card source = sa.getHostCard(); String key = null; String type = null; diff --git a/forge-game/src/main/java/forge/game/ability/effects/TapAllEffect.java b/forge-game/src/main/java/forge/game/ability/effects/TapAllEffect.java index 525c7c3edac..75071e642b9 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/TapAllEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/TapAllEffect.java @@ -30,7 +30,7 @@ public class TapAllEffect extends SpellAbilityEffect { public void resolve(SpellAbility sa) { final Player activator = sa.getActivatingPlayer(); final Game game = activator.getGame(); - final Card card = sa.getSourceCard(); + final Card card = sa.getHostCard(); final boolean remTapped = sa.hasParam("RememberTapped"); if (remTapped) { card.clearRemembered(); diff --git a/forge-game/src/main/java/forge/game/ability/effects/TapEffect.java b/forge-game/src/main/java/forge/game/ability/effects/TapEffect.java index 9850cd6c858..17e007334ad 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/TapEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/TapEffect.java @@ -15,7 +15,7 @@ public class TapEffect extends SpellAbilityEffect { */ @Override public void resolve(SpellAbility sa) { - final Card card = sa.getSourceCard(); + final Card card = sa.getHostCard(); final boolean remTapped = sa.hasParam("RememberTapped"); if (remTapped) { card.clearRemembered(); diff --git a/forge-game/src/main/java/forge/game/ability/effects/TokenEffect.java b/forge-game/src/main/java/forge/game/ability/effects/TokenEffect.java index 88d2e29d7bd..325f044dc6b 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/TokenEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/TokenEffect.java @@ -119,7 +119,7 @@ public class TokenEffect extends SpellAbilityEffect { @Override protected String getStackDescription(SpellAbility sa) { final StringBuilder sb = new StringBuilder(); - final Card host = sa.getSourceCard(); + final Card host = sa.getHostCard(); readParameters(sa); @@ -147,7 +147,7 @@ public class TokenEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - final Card host = sa.getSourceCard(); + final Card host = sa.getHostCard(); readParameters(sa); String cost = ""; @@ -302,10 +302,10 @@ public class TokenEffect extends SpellAbilityEffect { } } if (remember) { - game.getCardState(sa.getSourceCard()).addRemembered(c); + game.getCardState(sa.getHostCard()).addRemembered(c); } if (imprint) { - game.getCardState(sa.getSourceCard()).addImprinted(c); + game.getCardState(sa.getHostCard()).addImprinted(c); } if (sa.hasParam("RememberSource")) { game.getCardState(c).addRemembered(host); diff --git a/forge-game/src/main/java/forge/game/ability/effects/TwoPilesEffect.java b/forge-game/src/main/java/forge/game/ability/effects/TwoPilesEffect.java index 712bd9bd5bb..26ea5d48d30 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/TwoPilesEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/TwoPilesEffect.java @@ -50,7 +50,7 @@ public class TwoPilesEffect extends SpellAbilityEffect { */ @Override public void resolve(SpellAbility sa) { - final Card card = sa.getSourceCard(); + final Card card = sa.getHostCard(); ZoneType zone = null; boolean pile1WasChosen = true; @@ -68,19 +68,19 @@ public class TwoPilesEffect extends SpellAbilityEffect { Player separator = card.getController(); if (sa.hasParam("Separator")) { - separator = AbilityUtils.getDefinedPlayers(sa.getSourceCard(), sa.getParam("Separator"), sa).get(0); + separator = AbilityUtils.getDefinedPlayers(sa.getHostCard(), sa.getParam("Separator"), sa).get(0); } Player chooser = tgtPlayers.get(0); if (sa.hasParam("Chooser")) { - chooser = AbilityUtils.getDefinedPlayers(sa.getSourceCard(), sa.getParam("Chooser"), sa).get(0); + chooser = AbilityUtils.getDefinedPlayers(sa.getHostCard(), sa.getParam("Chooser"), sa).get(0); } for (final Player p : tgtPlayers) { if ((tgt == null) || p.canBeTargetedBy(sa)) { List pool0 = new ArrayList(); if (sa.hasParam("DefinedCards")) { - pool0 = new ArrayList(AbilityUtils.getDefinedCards(sa.getSourceCard(), sa.getParam("DefinedCards"), sa)); + pool0 = new ArrayList(AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("DefinedCards"), sa)); } else { pool0 = p.getCardsIn(zone); } diff --git a/forge-game/src/main/java/forge/game/ability/effects/UnattachAllEffect.java b/forge-game/src/main/java/forge/game/ability/effects/UnattachAllEffect.java index e197371d40c..495c2d29c22 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/UnattachAllEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/UnattachAllEffect.java @@ -152,7 +152,7 @@ public class UnattachAllEffect extends SpellAbilityEffect { */ @Override public void resolve(SpellAbility sa) { - Card source = sa.getSourceCard(); + Card source = sa.getHostCard(); final Game game = sa.getActivatingPlayer().getGame(); final List targets = getTargets(sa); diff --git a/forge-game/src/main/java/forge/game/ability/effects/UntapAllEffect.java b/forge-game/src/main/java/forge/game/ability/effects/UntapAllEffect.java index fb2c6af9a3f..53f0bf8e990 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/UntapAllEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/UntapAllEffect.java @@ -27,7 +27,7 @@ public class UntapAllEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - final Card card = sa.getSourceCard(); + final Card card = sa.getHostCard(); String valid = ""; List list = null; diff --git a/forge-game/src/main/java/forge/game/ability/effects/UntapEffect.java b/forge-game/src/main/java/forge/game/ability/effects/UntapEffect.java index 9e1a0083c90..5558c86a186 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/UntapEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/UntapEffect.java @@ -71,7 +71,7 @@ public class UntapEffect extends SpellAbilityEffect { final int num = Integer.parseInt(sa.getParam("Amount")); final String valid = sa.getParam("UntapType"); - final List definedPlayers = AbilityUtils.getDefinedPlayers(sa.getSourceCard(), sa.getParam("Defined"), sa); + final List definedPlayers = AbilityUtils.getDefinedPlayers(sa.getHostCard(), sa.getParam("Defined"), sa); for (final Player p : definedPlayers) { List list = CardLists.getType(p.getCardsIn(ZoneType.Battlefield), valid); diff --git a/forge-game/src/main/java/forge/game/ability/effects/ZoneExchangeEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ZoneExchangeEffect.java index 2ff633d3352..8f58af3d040 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ZoneExchangeEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ZoneExchangeEffect.java @@ -22,9 +22,9 @@ public class ZoneExchangeEffect extends SpellAbilityEffect { protected String getStackDescription(SpellAbility sa) { Card object1; if (sa.hasParam("Object")) { - object1 = AbilityUtils.getDefinedCards(sa.getSourceCard(), sa.getParam("Object"), sa).get(0); + object1 = AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("Object"), sa).get(0); } else { - object1 = sa.getSourceCard(); + object1 = sa.getHostCard(); } return "Exchange a " + sa.getParam("Type") + " in " + sa.getParam("Zone2") + " with " + object1; } @@ -34,7 +34,7 @@ public class ZoneExchangeEffect extends SpellAbilityEffect { */ @Override public void resolve(SpellAbility sa) { - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final Player p = sa.getActivatingPlayer(); final Game game = p.getGame(); final String type = sa.getParam("Type"); 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 788d89f5b75..517a6d77807 100644 --- a/forge-game/src/main/java/forge/game/card/Card.java +++ b/forge-game/src/main/java/forge/game/card/Card.java @@ -2519,7 +2519,7 @@ public class Card extends GameEntity implements Comparable { */ public final void addSpellAbility(final SpellAbility a) { - a.setSourceCard(this); + a.setHostCard(this); if (a.isManaAbility()) { this.getCharacteristics().getManaAbility().add(a); } else { @@ -5405,7 +5405,7 @@ public class Card extends GameEntity implements Comparable { } } for (final SpellAbility s : sas) { - final Player p = s.getSourceCard().getController(); + final Player p = s.getHostCard().getController(); if (!this.getController().equals(p)) { return false; } @@ -8177,7 +8177,7 @@ public class Card extends GameEntity implements Comparable { return true; } - if (this.hasProtectionFrom(sa.getSourceCard())) { + if (this.hasProtectionFrom(sa.getHostCard())) { return false; } @@ -8185,7 +8185,7 @@ public class Card extends GameEntity implements Comparable { return false; } - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); if (this.getKeyword() != null) { for (String kw : this.getKeyword()) { @@ -8607,7 +8607,7 @@ public class Card extends GameEntity implements Comparable { return; } } - if (sa.getSourceCard().hasKeyword("Fuse")) // it's ok that such card won't change its side + if (sa.getHostCard().hasKeyword("Fuse")) // it's ok that such card won't change its side return; throw new RuntimeException("Not found which part to choose for ability " + sa + " from card " + this); @@ -8665,7 +8665,7 @@ public class Card extends GameEntity implements Comparable { } if (isLand() && player.canPlayLand(this)) { - Ability.PLAY_LAND_SURROGATE.setSourceCard(this); + Ability.PLAY_LAND_SURROGATE.setHostCard(this); abilities.add(Ability.PLAY_LAND_SURROGATE); } diff --git a/forge-game/src/main/java/forge/game/card/CardFactory.java b/forge-game/src/main/java/forge/game/card/CardFactory.java index e9fb7f80d71..aca2fe36366 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactory.java +++ b/forge-game/src/main/java/forge/game/card/CardFactory.java @@ -189,7 +189,7 @@ public class CardFactory { if(sa instanceof AbilityActivated) { copySA = ((AbilityActivated)sa).getCopy(); - copySA.setSourceCard(original); + copySA.setHostCard(original); } else if (sa.isTrigger()) { copySA = getCopiedTriggeredAbility(sa); @@ -197,14 +197,14 @@ public class CardFactory { else { copySA = sa.copy(); - copySA.setSourceCard(c); + copySA.setHostCard(c); SpellAbility parentSA = copySA; SpellAbility subSA = copySA.getSubAbility(); while (subSA != null) { AbilitySub copySubSA = ((AbilitySub) subSA).getCopy(); parentSA.setSubAbility(copySubSA); copySubSA.setParent(parentSA); - copySubSA.setSourceCard(c); + copySubSA.setHostCard(c); copySubSA.setCopied(true); parentSA = copySubSA; subSA = copySubSA.getSubAbility(); @@ -620,9 +620,9 @@ public class CardFactory { // set up copied wrapped ability SpellAbility trig = t.getOverridingAbility(); if (trig == null) { - trig = AbilityFactory.getAbility(sa.getSourceCard().getSVar(t.getMapParams().get("Execute")), sa.getSourceCard()); + trig = AbilityFactory.getAbility(sa.getHostCard().getSVar(t.getMapParams().get("Execute")), sa.getHostCard()); } - trig.setSourceCard(sa.getSourceCard()); + trig.setHostCard(sa.getHostCard()); trig.setTrigger(true); trig.setSourceTrigger(t.getId()); t.setTriggeringObjects(trig); 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 78013e67327..af42b68374d 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java @@ -87,7 +87,7 @@ public class CardFactoryUtil { @Override public AbilityActivated getCopy() { - AbilityActivated res = new AbilityUnearth(getSourceCard(), + AbilityActivated res = new AbilityUnearth(getHostCard(), getPayCosts(), getTargetRestrictions() == null ? null : new TargetRestrictions(getTargetRestrictions())); CardFactory.copySpellAbility(this, res); final SpellAbilityRestriction restrict = new SpellAbilityRestriction(); @@ -484,13 +484,13 @@ public class CardFactoryUtil { return false; // for tokens that disappeared } - final Card source = ability.getSourceCard(); + final Card source = ability.getHostCard(); final TargetRestrictions tgt = ability.getTargetRestrictions(); if (tgt != null) { // Reconfirm the Validity of a TgtValid, or if the Creature is still // a Creature if (tgt.doesTarget() - && !target.isValid(tgt.getValidTgts(), ability.getActivatingPlayer(), ability.getSourceCard())) { + && !target.isValid(tgt.getValidTgts(), ability.getActivatingPlayer(), ability.getHostCard())) { return false; } @@ -564,7 +564,7 @@ public class CardFactoryUtil { } // Autumn's Veil if (c.hasKeyword("CARDNAME can't be countered by blue or black spells.") && sa.isSpell() - && (sa.getSourceCard().isBlack() || sa.getSourceCard().isBlue())) { + && (sa.getHostCard().isBlack() || sa.getHostCard().isBlue())) { return false; } return true; @@ -1963,7 +1963,7 @@ public class CardFactoryUtil { public static void correctAbilityChainSourceCard(final SpellAbility sa, final Card card) { - sa.setSourceCard(card); + sa.setHostCard(card); if (sa.getSubAbility() != null) { correctAbilityChainSourceCard(sa.getSubAbility(), card); @@ -2923,8 +2923,8 @@ public class CardFactoryUtil { private static final Map emptyMap = new TreeMap(); public static void setupETBReplacementAbility(SpellAbility sa) { - sa.appendSubAbility(new AbilitySub(ApiType.InternalEtbReplacement, sa.getSourceCard(), null, emptyMap)); - // ETBReplacementMove(sa.getSourceCard(), null)); + sa.appendSubAbility(new AbilitySub(ApiType.InternalEtbReplacement, sa.getHostCard(), null, emptyMap)); + // ETBReplacementMove(sa.getHostCard(), null)); } /** diff --git a/forge-game/src/main/java/forge/game/card/CardShields.java b/forge-game/src/main/java/forge/game/card/CardShields.java index 96b814bd380..85e6830d1cd 100644 --- a/forge-game/src/main/java/forge/game/card/CardShields.java +++ b/forge-game/src/main/java/forge/game/card/CardShields.java @@ -74,6 +74,6 @@ public class CardShields { @Override public String toString() { String suffix = this.triggerSA != null ? " - " + triggerSA.getDescription() : ""; - return this.sourceSA.getSourceCard().getName() + suffix; + return this.sourceSA.getHostCard().getName() + suffix; } } diff --git a/forge-game/src/main/java/forge/game/card/CardUtil.java b/forge-game/src/main/java/forge/game/card/CardUtil.java index 4e9c39eaff8..261d0d89df0 100644 --- a/forge-game/src/main/java/forge/game/card/CardUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardUtil.java @@ -151,7 +151,7 @@ public final class CardUtil { newCopy.setTriggers(in.getTriggers(), false); for (SpellAbility sa : in.getManaAbility()) { newCopy.addSpellAbility(sa); - sa.setSourceCard(in); + sa.setHostCard(in); } // lock in the current P/T without boni from counters @@ -233,7 +233,7 @@ public final class CardUtil { // they need to Reflect each other, // so we basically need to have a recursive list that send the parents // so we don't infinite recurse. - final Card card = abMana.getSourceCard(); + final Card card = abMana.getHostCard(); if (abMana.getApi() != ApiType.ManaReflected) { return colors; @@ -313,17 +313,17 @@ public final class CardUtil { } if (ab.getApi() == ApiType.ManaReflected) { - if (!parents.contains(ab.getSourceCard())) { + if (!parents.contains(ab.getHostCard())) { // Recursion! Set Activator to controller for appropriate valid comparison - ab.setActivatingPlayer(ab.getSourceCard().getController()); + ab.setActivatingPlayer(ab.getHostCard().getController()); reflectAbilities.add(ab); - parents.add(ab.getSourceCard()); + parents.add(ab.getHostCard()); } continue; } colors = canProduce(maxChoices, ab.getManaPart(), colors); - if (!parents.contains(ab.getSourceCard())) { - parents.add(ab.getSourceCard()); + if (!parents.contains(ab.getHostCard())) { + parents.add(ab.getHostCard()); } } diff --git a/forge-game/src/main/java/forge/game/cost/CostAddMana.java b/forge-game/src/main/java/forge/game/cost/CostAddMana.java index 4a473096f13..3af7f616556 100644 --- a/forge-game/src/main/java/forge/game/cost/CostAddMana.java +++ b/forge-game/src/main/java/forge/game/cost/CostAddMana.java @@ -68,7 +68,7 @@ public class CostAddMana extends CostPart { @Override public boolean payAsDecided(Player ai, PaymentDecision decision, SpellAbility sa) { - Card source = sa.getSourceCard(); + Card source = sa.getHostCard(); ColorSet cid = null; if (ai.getGame().getRules().getGameType() == GameType.Commander) { diff --git a/forge-game/src/main/java/forge/game/cost/CostChooseCreatureType.java b/forge-game/src/main/java/forge/game/cost/CostChooseCreatureType.java index 5f3968b3353..9448b87ad33 100644 --- a/forge-game/src/main/java/forge/game/cost/CostChooseCreatureType.java +++ b/forge-game/src/main/java/forge/game/cost/CostChooseCreatureType.java @@ -50,7 +50,7 @@ public class CostChooseCreatureType extends CostPart { @Override public boolean payAsDecided(Player payer, PaymentDecision pd, SpellAbility sa) { - sa.getSourceCard().setChosenType(pd.type); + sa.getHostCard().setChosenType(pd.type); return true; } diff --git a/forge-game/src/main/java/forge/game/cost/CostDamage.java b/forge-game/src/main/java/forge/game/cost/CostDamage.java index 3db23c5bbba..280c7a27fec 100644 --- a/forge-game/src/main/java/forge/game/cost/CostDamage.java +++ b/forge-game/src/main/java/forge/game/cost/CostDamage.java @@ -55,7 +55,7 @@ public class CostDamage extends CostPart { @Override public boolean payAsDecided(Player payer, PaymentDecision decision, SpellAbility sa) { - return payer.addDamage(decision.c, sa.getSourceCard()); + return payer.addDamage(decision.c, sa.getHostCard()); } @Override diff --git a/forge-game/src/main/java/forge/game/cost/CostDiscard.java b/forge-game/src/main/java/forge/game/cost/CostDiscard.java index 75c79a6ce4d..c51c2bcd365 100644 --- a/forge-game/src/main/java/forge/game/cost/CostDiscard.java +++ b/forge-game/src/main/java/forge/game/cost/CostDiscard.java @@ -99,7 +99,7 @@ public class CostDiscard extends CostPartWithList { @Override public final boolean canPay(final SpellAbility ability) { final Player activator = ability.getActivatingPlayer(); - final Card source = ability.getSourceCard(); + final Card source = ability.getHostCard(); List handList = new ArrayList(activator.getCardsIn(ZoneType.Hand)); String type = this.getType(); diff --git a/forge-game/src/main/java/forge/game/cost/CostDraw.java b/forge-game/src/main/java/forge/game/cost/CostDraw.java index 390630cdea3..c1d9d3c4b88 100644 --- a/forge-game/src/main/java/forge/game/cost/CostDraw.java +++ b/forge-game/src/main/java/forge/game/cost/CostDraw.java @@ -75,7 +75,7 @@ public class CostDraw extends CostPart { */ @Override public final boolean canPay(final SpellAbility ability) { - List potentials = getPotentialPlayers(ability.getActivatingPlayer(), ability.getSourceCard()); + List potentials = getPotentialPlayers(ability.getActivatingPlayer(), ability.getHostCard()); return !potentials.isEmpty(); } @@ -87,7 +87,7 @@ public class CostDraw extends CostPart { */ @Override public final boolean payAsDecided(final Player ai, final PaymentDecision decision, SpellAbility ability) { - for (final Player p : getPotentialPlayers(ai, ability.getSourceCard())) { + for (final Player p : getPotentialPlayers(ai, ability.getHostCard())) { p.drawCards(decision.c); } return true; diff --git a/forge-game/src/main/java/forge/game/cost/CostExile.java b/forge-game/src/main/java/forge/game/cost/CostExile.java index 56cd5499235..2ecacd65cb0 100644 --- a/forge-game/src/main/java/forge/game/cost/CostExile.java +++ b/forge-game/src/main/java/forge/game/cost/CostExile.java @@ -144,7 +144,7 @@ public class CostExile extends CostPartWithList { @Override public final boolean canPay(final SpellAbility ability) { final Player activator = ability.getActivatingPlayer(); - final Card source = ability.getSourceCard(); + final Card source = ability.getHostCard(); final Game game = activator.getGame(); String type = this.getType(); diff --git a/forge-game/src/main/java/forge/game/cost/CostExiledMoveToGrave.java b/forge-game/src/main/java/forge/game/cost/CostExiledMoveToGrave.java index b10cc2f6468..8194795e093 100644 --- a/forge-game/src/main/java/forge/game/cost/CostExiledMoveToGrave.java +++ b/forge-game/src/main/java/forge/game/cost/CostExiledMoveToGrave.java @@ -83,7 +83,7 @@ public class CostExiledMoveToGrave extends CostPartWithList { @Override public final boolean canPay(final SpellAbility ability) { final Player activator = ability.getActivatingPlayer(); - final Card source = ability.getSourceCard(); + final Card source = ability.getHostCard(); Integer i = this.convertAmount(); diff --git a/forge-game/src/main/java/forge/game/cost/CostGainControl.java b/forge-game/src/main/java/forge/game/cost/CostGainControl.java index ef5936fe256..e1b26f7170c 100644 --- a/forge-game/src/main/java/forge/game/cost/CostGainControl.java +++ b/forge-game/src/main/java/forge/game/cost/CostGainControl.java @@ -70,7 +70,7 @@ public class CostGainControl extends CostPartWithList { @Override public final boolean canPay(final SpellAbility ability) { final Player activator = ability.getActivatingPlayer(); - final Card source = ability.getSourceCard(); + final Card source = ability.getHostCard(); List typeList = new ArrayList(activator.getGame().getCardsIn(ZoneType.Battlefield)); typeList = CardLists.getValidCards(typeList, this.getType().split(";"), activator, source); diff --git a/forge-game/src/main/java/forge/game/cost/CostGainLife.java b/forge-game/src/main/java/forge/game/cost/CostGainLife.java index 34fe5c8478a..1264d364843 100644 --- a/forge-game/src/main/java/forge/game/cost/CostGainLife.java +++ b/forge-game/src/main/java/forge/game/cost/CostGainLife.java @@ -84,7 +84,7 @@ public class CostGainLife extends CostPart { if ( amount == null ) return false; int cntAbleToGainLife = 0; - List possibleTargets = getPotentialTargets(ability.getActivatingPlayer(), ability.getSourceCard()); + List possibleTargets = getPotentialTargets(ability.getActivatingPlayer(), ability.getHostCard()); for (final Player opp : possibleTargets) { if (opp.canGainLife()) { diff --git a/forge-game/src/main/java/forge/game/cost/CostMill.java b/forge-game/src/main/java/forge/game/cost/CostMill.java index 955798146fd..198dae7211e 100644 --- a/forge-game/src/main/java/forge/game/cost/CostMill.java +++ b/forge-game/src/main/java/forge/game/cost/CostMill.java @@ -59,7 +59,7 @@ public class CostMill extends CostPartWithList { @Override public final boolean canPay(final SpellAbility ability) { final Player activator = ability.getActivatingPlayer(); - final Card source = ability.getSourceCard(); + final Card source = ability.getHostCard(); final PlayerZone zone = activator.getZone(ZoneType.Library); Integer i = this.convertAmount(); diff --git a/forge-game/src/main/java/forge/game/cost/CostPayLife.java b/forge-game/src/main/java/forge/game/cost/CostPayLife.java index 41308c67161..628e03db181 100644 --- a/forge-game/src/main/java/forge/game/cost/CostPayLife.java +++ b/forge-game/src/main/java/forge/game/cost/CostPayLife.java @@ -76,7 +76,7 @@ public class CostPayLife extends CostPart { String sAmount = getAmount(); String sVar = ability.getSVar(sAmount); if (!sVar.startsWith("XChoice")) { - amount = AbilityUtils.calculateAmount(ability.getSourceCard(), getAmount(), ability); + amount = AbilityUtils.calculateAmount(ability.getHostCard(), getAmount(), ability); } } diff --git a/forge-game/src/main/java/forge/game/cost/CostPayment.java b/forge-game/src/main/java/forge/game/cost/CostPayment.java index b52e60fc2d2..a068c845a00 100644 --- a/forge-game/src/main/java/forge/game/cost/CostPayment.java +++ b/forge-game/src/main/java/forge/game/cost/CostPayment.java @@ -80,7 +80,7 @@ public class CostPayment { return true; } - final Card card = ability.getSourceCard(); + final Card card = ability.getHostCard(); Player activator = ability.getActivatingPlayer(); if (activator == null) { @@ -119,7 +119,7 @@ public class CostPayment { *

*/ public final void refundPayment() { - Card sourceCard = this.ability.getSourceCard(); + Card sourceCard = this.ability.getHostCard(); for (final CostPart part : this.paidCostParts) { if (part.isUndoable()) { part.refund(sourceCard); diff --git a/forge-game/src/main/java/forge/game/cost/CostPutCardToLib.java b/forge-game/src/main/java/forge/game/cost/CostPutCardToLib.java index 71dcff8ffc3..f05a471ee88 100644 --- a/forge-game/src/main/java/forge/game/cost/CostPutCardToLib.java +++ b/forge-game/src/main/java/forge/game/cost/CostPutCardToLib.java @@ -147,7 +147,7 @@ public class CostPutCardToLib extends CostPartWithList { @Override public final boolean canPay(final SpellAbility ability) { final Player activator = ability.getActivatingPlayer(); - final Card source = ability.getSourceCard(); + final Card source = ability.getHostCard(); final Game game = activator.getGame(); Integer i = this.convertAmount(); diff --git a/forge-game/src/main/java/forge/game/cost/CostPutCounter.java b/forge-game/src/main/java/forge/game/cost/CostPutCounter.java index 9976b081bdd..3328cb60726 100644 --- a/forge-game/src/main/java/forge/game/cost/CostPutCounter.java +++ b/forge-game/src/main/java/forge/game/cost/CostPutCounter.java @@ -125,7 +125,7 @@ public class CostPutCounter extends CostPartWithList { @Override public final boolean canPay(final SpellAbility ability) { final Player activator = ability.getActivatingPlayer(); - final Card source = ability.getSourceCard(); + final Card source = ability.getHostCard(); if (this.payCostFromSource()) { if (!source.canReceiveCounters(this.counter)) { return false; @@ -153,12 +153,12 @@ public class CostPutCounter extends CostPartWithList { Integer c = getNumberOfCounters(ability); if (this.payCostFromSource()) { - executePayment(ability, ability.getSourceCard(), c); + executePayment(ability, ability.getHostCard(), c); } else { // Put counter on chosen card for (int i = 0; i < c; i++) executePayment(ability, decision.cards); - ability.getSourceCard().setSVar("CostCountersAdded", Integer.toString(Math.min(decision.cards.size(), c))); + ability.getHostCard().setSVar("CostCountersAdded", Integer.toString(Math.min(decision.cards.size(), c))); } return true; } @@ -166,7 +166,7 @@ public class CostPutCounter extends CostPartWithList { public Integer getNumberOfCounters(final SpellAbility ability) { Integer c = this.convertAmount(); if (c == null) { - c = AbilityUtils.calculateAmount(ability.getSourceCard(), this.getAmount(), ability); + c = AbilityUtils.calculateAmount(ability.getHostCard(), this.getAmount(), ability); } return c; } diff --git a/forge-game/src/main/java/forge/game/cost/CostRemoveAnyCounter.java b/forge-game/src/main/java/forge/game/cost/CostRemoveAnyCounter.java index 24e18153f48..a8d8008ecd6 100644 --- a/forge-game/src/main/java/forge/game/cost/CostRemoveAnyCounter.java +++ b/forge-game/src/main/java/forge/game/cost/CostRemoveAnyCounter.java @@ -83,7 +83,7 @@ public class CostRemoveAnyCounter extends CostPartWithList { @Override public final boolean canPay(final SpellAbility ability) { final Player activator = ability.getActivatingPlayer(); - final Card source = ability.getSourceCard(); + final Card source = ability.getHostCard(); List validCards = new ArrayList(activator.getCardsIn(ZoneType.Battlefield)); validCards = CardLists.getValidCards(validCards, this.getType().split(";"), activator, source); validCards = CardLists.filter(validCards, new Predicate() { @@ -134,7 +134,7 @@ public class CostRemoveAnyCounter extends CostPartWithList { @Override public boolean payAsDecided(Player ai, PaymentDecision decision, SpellAbility ability) { final String amount = this.getAmount(); - final Card source = ability.getSourceCard(); + final Card source = ability.getHostCard(); Integer c = this.convertAmount(); if (c == null) { c = AbilityUtils.calculateAmount(source, amount, ability); diff --git a/forge-game/src/main/java/forge/game/cost/CostRemoveCounter.java b/forge-game/src/main/java/forge/game/cost/CostRemoveCounter.java index d6eb1a1d939..9a083636027 100644 --- a/forge-game/src/main/java/forge/game/cost/CostRemoveCounter.java +++ b/forge-game/src/main/java/forge/game/cost/CostRemoveCounter.java @@ -124,7 +124,7 @@ public class CostRemoveCounter extends CostPartWithList { public final boolean canPay(final SpellAbility ability) { final CounterType cntrs = this.counter; final Player activator = ability.getActivatingPlayer(); - final Card source = ability.getSourceCard(); + final Card source = ability.getHostCard(); final String type = this.getType(); final Integer amount = this.convertAmount(); @@ -158,7 +158,7 @@ public class CostRemoveCounter extends CostPartWithList { */ @Override public boolean payAsDecided(Player ai, PaymentDecision decision, SpellAbility ability) { - Card source = ability.getSourceCard(); + Card source = ability.getHostCard(); cntRemoved = decision.c; for (final Card card : decision.cards) { executePayment(ability, card); diff --git a/forge-game/src/main/java/forge/game/cost/CostReturn.java b/forge-game/src/main/java/forge/game/cost/CostReturn.java index 9ee275aeb05..39fb11309f3 100644 --- a/forge-game/src/main/java/forge/game/cost/CostReturn.java +++ b/forge-game/src/main/java/forge/game/cost/CostReturn.java @@ -88,7 +88,7 @@ public class CostReturn extends CostPartWithList { @Override public final boolean canPay(final SpellAbility ability) { final Player activator = ability.getActivatingPlayer(); - final Card source = ability.getSourceCard(); + final Card source = ability.getHostCard(); if (!this.payCostFromSource()) { boolean needsAnnoucement = ability.hasParam("Announce") && this.getType().contains(ability.getParam("Announce")); diff --git a/forge-game/src/main/java/forge/game/cost/CostReveal.java b/forge-game/src/main/java/forge/game/cost/CostReveal.java index d12913dcdc9..134f08ad9ef 100644 --- a/forge-game/src/main/java/forge/game/cost/CostReveal.java +++ b/forge-game/src/main/java/forge/game/cost/CostReveal.java @@ -65,7 +65,7 @@ public class CostReveal extends CostPartWithList { @Override public final boolean canPay(final SpellAbility ability) { final Player activator = ability.getActivatingPlayer(); - final Card source = ability.getSourceCard(); + final Card source = ability.getHostCard(); List handList = new ArrayList(activator.getCardsIn(ZoneType.Hand)); final String type = this.getType(); diff --git a/forge-game/src/main/java/forge/game/cost/CostSacrifice.java b/forge-game/src/main/java/forge/game/cost/CostSacrifice.java index 6ac79d8bba7..88c1be7ce6b 100644 --- a/forge-game/src/main/java/forge/game/cost/CostSacrifice.java +++ b/forge-game/src/main/java/forge/game/cost/CostSacrifice.java @@ -80,7 +80,7 @@ public class CostSacrifice extends CostPartWithList { @Override public final boolean canPay(final SpellAbility ability) { final Player activator = ability.getActivatingPlayer(); - final Card source = ability.getSourceCard(); + final Card source = ability.getHostCard(); // You can always sac all if (!this.payCostFromSource()) { diff --git a/forge-game/src/main/java/forge/game/cost/CostTap.java b/forge-game/src/main/java/forge/game/cost/CostTap.java index 8e0a92b83d4..15b2198219c 100644 --- a/forge-game/src/main/java/forge/game/cost/CostTap.java +++ b/forge-game/src/main/java/forge/game/cost/CostTap.java @@ -71,7 +71,7 @@ public class CostTap extends CostPart { */ @Override public final boolean canPay(final SpellAbility ability) { - final Card source = ability.getSourceCard(); + final Card source = ability.getHostCard(); return source.isUntapped() && (!source.isSick() || source.hasKeyword("CARDNAME may activate abilities as though it has haste.")); } @@ -80,7 +80,7 @@ public class CostTap extends CostPart { */ @Override public boolean payAsDecided(Player ai, PaymentDecision decision, SpellAbility ability) { - ability.getSourceCard().tap(); + ability.getHostCard().tap(); return true; } diff --git a/forge-game/src/main/java/forge/game/cost/CostTapType.java b/forge-game/src/main/java/forge/game/cost/CostTapType.java index 6d2e08abc4b..ba020ab0985 100644 --- a/forge-game/src/main/java/forge/game/cost/CostTapType.java +++ b/forge-game/src/main/java/forge/game/cost/CostTapType.java @@ -106,7 +106,7 @@ public class CostTapType extends CostPartWithList { @Override public final boolean canPay(final SpellAbility ability) { final Player activator = ability.getActivatingPlayer(); - final Card source = ability.getSourceCard(); + final Card source = ability.getHostCard(); List typeList = new ArrayList(activator.getCardsIn(ZoneType.Battlefield)); String type = this.getType(); diff --git a/forge-game/src/main/java/forge/game/cost/CostUnattach.java b/forge-game/src/main/java/forge/game/cost/CostUnattach.java index 8f0a4ca4d50..2c5f732dc42 100644 --- a/forge-game/src/main/java/forge/game/cost/CostUnattach.java +++ b/forge-game/src/main/java/forge/game/cost/CostUnattach.java @@ -64,7 +64,7 @@ public class CostUnattach extends CostPartWithList { @Override public final boolean canPay(final SpellAbility ability) { final Player activator = ability.getActivatingPlayer(); - final Card source = ability.getSourceCard(); + final Card source = ability.getHostCard(); final String type = this.getType(); if (type.equals("CARDNAME")) { diff --git a/forge-game/src/main/java/forge/game/cost/CostUntap.java b/forge-game/src/main/java/forge/game/cost/CostUntap.java index 4bb8cdb5235..f950c6e1ecd 100644 --- a/forge-game/src/main/java/forge/game/cost/CostUntap.java +++ b/forge-game/src/main/java/forge/game/cost/CostUntap.java @@ -71,7 +71,7 @@ public class CostUntap extends CostPart { */ @Override public final boolean canPay(final SpellAbility ability) { - final Card source = ability.getSourceCard(); + final Card source = ability.getHostCard(); return source.isTapped() && (!source.isSick() || source.hasKeyword("CARDNAME may activate abilities as though it has haste.")); } @@ -80,7 +80,7 @@ public class CostUntap extends CostPart { */ @Override public boolean payAsDecided(Player ai, PaymentDecision decision, SpellAbility ability) { - ability.getSourceCard().untap(); + ability.getHostCard().untap(); return true; } diff --git a/forge-game/src/main/java/forge/game/cost/CostUntapType.java b/forge-game/src/main/java/forge/game/cost/CostUntapType.java index 3c782da5771..4707fcdc704 100644 --- a/forge-game/src/main/java/forge/game/cost/CostUntapType.java +++ b/forge-game/src/main/java/forge/game/cost/CostUntapType.java @@ -101,7 +101,7 @@ public class CostUntapType extends CostPartWithList { @Override public final boolean canPay(final SpellAbility ability) { final Player activator = ability.getActivatingPlayer(); - final Card source = ability.getSourceCard(); + final Card source = ability.getHostCard(); List typeList = activator.getGame().getCardsIn(ZoneType.Battlefield); typeList = CardLists.getValidCards(typeList, this.getType().split(";"), activator, source); diff --git a/forge-game/src/main/java/forge/game/mana/ManaCostBeingPaid.java b/forge-game/src/main/java/forge/game/mana/ManaCostBeingPaid.java index 810b06cf394..5eca5a209a0 100644 --- a/forge-game/src/main/java/forge/game/mana/ManaCostBeingPaid.java +++ b/forge-game/src/main/java/forge/game/mana/ManaCostBeingPaid.java @@ -491,7 +491,7 @@ public class ManaCostBeingPaid { public final void applySpellCostChange(final SpellAbility sa, boolean test) { final Game game = sa.getActivatingPlayer().getGame(); // Beached - final Card originalCard = sa.getSourceCard(); + final Card originalCard = sa.getHostCard(); final SpellAbility spell = sa; if (sa.isXCost() && !originalCard.isCopiedSpell()) { @@ -514,7 +514,7 @@ public class ManaCostBeingPaid { } } } - else if (spell.getSourceCard().hasKeyword("Convoke")) { + else if (spell.getHostCard().hasKeyword("Convoke")) { adjustCostByConvoke(sa); } } // isSpell @@ -583,7 +583,7 @@ public class ManaCostBeingPaid { private void adjustCostByOffering(final SpellAbility sa, final SpellAbility spell) { String offeringType = ""; - for (String kw : sa.getSourceCard().getKeyword()) { + for (String kw : sa.getHostCard().getKeyword()) { if (kw.endsWith(" offering")) { offeringType = kw.split(" ")[0]; break; @@ -594,7 +594,7 @@ public class ManaCostBeingPaid { List canOffer = CardLists.filter(spell.getActivatingPlayer().getCardsIn(ZoneType.Battlefield), CardPredicates.isType(offeringType)); - final List toSacList = sa.getSourceCard().getController().getController().choosePermanentsToSacrifice(spell, 0, 1, canOffer, + final List toSacList = sa.getHostCard().getController().getController().choosePermanentsToSacrifice(spell, 0, 1, canOffer, offeringType); if (!toSacList.isEmpty()) { diff --git a/forge-game/src/main/java/forge/game/mana/ManaPool.java b/forge-game/src/main/java/forge/game/mana/ManaPool.java index 88cdfcd290d..230990c5f97 100644 --- a/forge-game/src/main/java/forge/game/mana/ManaPool.java +++ b/forge-game/src/main/java/forge/game/mana/ManaPool.java @@ -297,16 +297,16 @@ public class ManaPool { manaCost.payMana(mana, this); sa.getPayingMana().add(mana); this.removeMana(mana); - if (mana.addsNoCounterMagic(sa) && sa.getSourceCard() != null) { - sa.getSourceCard().setCanCounter(false); + if (mana.addsNoCounterMagic(sa) && sa.getHostCard() != null) { + sa.getHostCard().setCanCounter(false); } - if (sa.isSpell() && sa.getSourceCard() != null) { - if (sa.getSourceCard().isCreature() && mana.addsKeywords(sa)) { - final long timestamp = sa.getSourceCard().getGame().getNextTimestamp(); - sa.getSourceCard().addChangedCardKeywords(Arrays.asList(mana.getAddedKeywords().split(" & ")), new ArrayList(), false, timestamp); + if (sa.isSpell() && sa.getHostCard() != null) { + if (sa.getHostCard().isCreature() && mana.addsKeywords(sa)) { + final long timestamp = sa.getHostCard().getGame().getNextTimestamp(); + sa.getHostCard().addChangedCardKeywords(Arrays.asList(mana.getAddedKeywords().split(" & ")), new ArrayList(), false, timestamp); } if (mana.addsCounters(sa)) { - mana.getManaAbility().createETBCounters(sa.getSourceCard()); + mana.getManaAbility().createETBCounters(sa.getHostCard()); } } } @@ -338,8 +338,8 @@ public class ManaPool { ability.getPayingManaAbilities().clear(); // move non-undoable paying mana back to floating if (refund) { - if (ability.getSourceCard() != null) { - ability.getSourceCard().setCanCounter(true); + if (ability.getHostCard() != null) { + ability.getHostCard().setCanCounter(true); } for (final Mana m : manaPaid) { this.addMana(m); @@ -390,8 +390,8 @@ public class ManaPool { final List manaPaid = sa.getPayingMana(); // move non-undoable paying mana back to floating - if (sa.getSourceCard() != null) { - sa.getSourceCard().setCanCounter(true); + if (sa.getHostCard() != null) { + sa.getHostCard().setCanCounter(true); } for (final Mana m : manaPaid) { this.addMana(m); diff --git a/forge-game/src/main/java/forge/game/phase/Upkeep.java b/forge-game/src/main/java/forge/game/phase/Upkeep.java index ce1fe429783..1aa6a17b4ac 100644 --- a/forge-game/src/main/java/forge/game/phase/Upkeep.java +++ b/forge-game/src/main/java/forge/game/phase/Upkeep.java @@ -164,7 +164,7 @@ public class Upkeep extends Phase { boolean isPaid = controller.getController().payManaOptional(c, upkeepCost, this, sb.toString(), ManaPaymentPurpose.CumulativeUpkeep); final HashMap runParams = new HashMap(); runParams.put("CumulativeUpkeepPaid", (Boolean) isPaid); - runParams.put("Card", this.getSourceCard()); + runParams.put("Card", this.getHostCard()); game.getTriggerHandler().runTrigger(TriggerType.PayCumulativeUpkeep, runParams, false); if(!isPaid) game.getAction().sacrifice(c, null); diff --git a/forge-game/src/main/java/forge/game/player/Player.java b/forge-game/src/main/java/forge/game/player/Player.java index 8f46a0bd1a4..8ac220e2957 100644 --- a/forge-game/src/main/java/forge/game/player/Player.java +++ b/forge-game/src/main/java/forge/game/player/Player.java @@ -1133,7 +1133,7 @@ public class Player extends GameEntity implements Comparable { @Override public final boolean canBeTargetedBy(final SpellAbility sa) { if (this.hasKeyword("Shroud") || (!this.equals(sa.getActivatingPlayer()) && this.hasKeyword("Hexproof")) - || this.hasProtectionFrom(sa.getSourceCard())) { + || this.hasProtectionFrom(sa.getHostCard())) { return false; } @@ -1558,7 +1558,7 @@ public class Player extends GameEntity implements Comparable { /*if (sa != null) { sa.addCostToHashList(c, "Discarded"); }*/ - final Card source = sa != null ? sa.getSourceCard() : null; + final Card source = sa != null ? sa.getHostCard() : null; // Replacement effects final HashMap repRunParams = new HashMap(); @@ -1587,7 +1587,7 @@ public class Player extends GameEntity implements Comparable { // Run triggers Card cause = null; if (sa != null) { - cause = sa.getSourceCard(); + cause = sa.getHostCard(); } final HashMap runParams = new HashMap(); runParams.put("Player", this); @@ -2795,7 +2795,7 @@ public class Player extends GameEntity implements Comparable { */ public boolean couldCastSorcery(final SpellAbility sa) { - final Card source = sa.getRootAbility().getSourceCard(); + final Card source = sa.getRootAbility().getHostCard(); boolean onlyThis = true; for (final Card card : game.getCardsIn(ZoneType.Stack)) { @@ -3068,9 +3068,9 @@ public class Player extends GameEntity implements Comparable { @Override public void resolve() { - miracle.setActivatingPlayer(getSourceCard().getOwner()); + miracle.setActivatingPlayer(getHostCard().getOwner()); // pay miracle cost here. - getSourceCard().getOwner().getController().playMiracle(miracle, getSourceCard()); + getHostCard().getOwner().getController().playMiracle(miracle, getHostCard()); } } diff --git a/forge-game/src/main/java/forge/game/player/PlayerControllerAi.java b/forge-game/src/main/java/forge/game/player/PlayerControllerAi.java index 5db010fe5a9..0d8831025f8 100644 --- a/forge-game/src/main/java/forge/game/player/PlayerControllerAi.java +++ b/forge-game/src/main/java/forge/game/player/PlayerControllerAi.java @@ -381,7 +381,7 @@ public class PlayerControllerAi extends PlayerController { { // System.out.println("Playing sa: " + sa); if ( sa == Ability.PLAY_LAND_SURROGATE ) - player.playLand(sa.getSourceCard(), false); + player.playLand(sa.getHostCard(), false); else ComputerUtil.handlePlayingSpellAbility(player, sa, game); } @@ -606,7 +606,7 @@ public class PlayerControllerAi extends PlayerController { @Override public boolean payCostToPreventEffect(Cost cost, SpellAbility sa, boolean alreadyPaid, List allPayers) { - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); final Ability emptyAbility = new AbilityStatic(source, cost, sa.getTargetRestrictions()) { @Override public void resolve() { } }; emptyAbility.setActivatingPlayer(player); if (ComputerUtilCost.willPayUnlessCost(sa, player, cost, alreadyPaid, allPayers) && ComputerUtilCost.canPayCost(emptyAbility, player)) { @@ -619,7 +619,7 @@ public class PlayerControllerAi extends PlayerController { @Override public void orderAndPlaySimultaneousSa(List activePlayerSAs) { for (final SpellAbility sa : activePlayerSAs) { - prepareSingleSa(sa.getSourceCard(),sa,true); + prepareSingleSa(sa.getHostCard(),sa,true); ComputerUtil.playStack(sa, player, game); } } diff --git a/forge-game/src/main/java/forge/game/replacement/ReplacementEffect.java b/forge-game/src/main/java/forge/game/replacement/ReplacementEffect.java index d247eb093ca..efa02349219 100644 --- a/forge-game/src/main/java/forge/game/replacement/ReplacementEffect.java +++ b/forge-game/src/main/java/forge/game/replacement/ReplacementEffect.java @@ -19,6 +19,7 @@ package forge.game.replacement; import forge.game.CardTraitBase; import forge.game.Game; +import forge.game.TriggerReplacementBase; import forge.game.ability.AbilityUtils; import forge.game.card.Card; import forge.game.card.CardFactoryUtil; @@ -35,7 +36,7 @@ import java.util.Map; * TODO: Write javadoc for this type. * */ -public abstract class ReplacementEffect extends CardTraitBase { +public abstract class ReplacementEffect extends TriggerReplacementBase { private ReplacementLayer layer = ReplacementLayer.None; diff --git a/forge-game/src/main/java/forge/game/spellability/Ability.java b/forge-game/src/main/java/forge/game/spellability/Ability.java index f92850cb355..f68a526598d 100644 --- a/forge-game/src/main/java/forge/game/spellability/Ability.java +++ b/forge-game/src/main/java/forge/game/spellability/Ability.java @@ -75,7 +75,7 @@ public abstract class Ability extends SpellAbility { return false; } - return this.getSourceCard().isInPlay() && !this.getSourceCard().isFaceDown(); + return this.getHostCard().isInPlay() && !this.getHostCard().isFaceDown(); } public static final Ability PLAY_LAND_SURROGATE = new Ability(null, (Cost)null){ diff --git a/forge-game/src/main/java/forge/game/spellability/AbilityActivated.java b/forge-game/src/main/java/forge/game/spellability/AbilityActivated.java index c23f81d6b4b..08d2338c772 100644 --- a/forge-game/src/main/java/forge/game/spellability/AbilityActivated.java +++ b/forge-game/src/main/java/forge/game/spellability/AbilityActivated.java @@ -82,7 +82,7 @@ public abstract class AbilityActivated extends SpellAbility implements java.io.S public boolean canPlay() { Player player = getActivatingPlayer(); if (player == null) { - player = this.getSourceCard().getController(); + player = this.getHostCard().getController(); } final Game game = player.getGame(); @@ -90,7 +90,7 @@ public abstract class AbilityActivated extends SpellAbility implements java.io.S return false; } - final Card c = this.getSourceCard(); + final Card c = this.getHostCard(); // CantBeActivated static abilities for (final Card ca : game.getCardsIn(ZoneType.listValueOf("Battlefield,Command"))) { @@ -123,8 +123,8 @@ public abstract class AbilityActivated extends SpellAbility implements java.io.S public boolean isPossible() { //consider activated abilities possible always and simply disable if not currently playable //the exception is to consider them not possible if there's a zone or activator restriction that's not met - return this.getRestrictions().checkZoneRestrictions(this.getSourceCard(), this) && - this.getRestrictions().checkActivatorRestrictions(this.getSourceCard(), this); + return this.getRestrictions().checkZoneRestrictions(this.getHostCard(), this) && + this.getRestrictions().checkActivatorRestrictions(this.getHostCard(), this); } /** {@inheritDoc} */ diff --git a/forge-game/src/main/java/forge/game/spellability/AbilityManaPart.java b/forge-game/src/main/java/forge/game/spellability/AbilityManaPart.java index 7de406e8bc8..cc8e280d523 100644 --- a/forge-game/src/main/java/forge/game/spellability/AbilityManaPart.java +++ b/forge-game/src/main/java/forge/game/spellability/AbilityManaPart.java @@ -181,7 +181,7 @@ public class AbilityManaPart implements java.io.Serializable { if (null == cannotCounterSpell) return false; if ("True".equalsIgnoreCase(cannotCounterSpell)) return true; - Card source = saBeingPaid.getSourceCard(); + Card source = saBeingPaid.getHostCard(); if (source == null) return false; return source.isValid(cannotCounterSpell, sourceCard.getController(), sourceCard); } @@ -300,8 +300,8 @@ public class AbilityManaPart implements java.io.Serializable { } } - if (sa.getSourceCard() != null) { - if (sa.getSourceCard().isValid(restriction, this.getSourceCard().getController(), this.getSourceCard())) { + if (sa.getHostCard() != null) { + if (sa.getHostCard().isValid(restriction, this.getSourceCard().getController(), this.getSourceCard())) { return true; } } diff --git a/forge-game/src/main/java/forge/game/spellability/AbilityStatic.java b/forge-game/src/main/java/forge/game/spellability/AbilityStatic.java index 707171d8947..eb5eb8d3a46 100644 --- a/forge-game/src/main/java/forge/game/spellability/AbilityStatic.java +++ b/forge-game/src/main/java/forge/game/spellability/AbilityStatic.java @@ -55,10 +55,10 @@ public abstract class AbilityStatic extends Ability { public boolean canPlay() { Player player = getActivatingPlayer(); if (player == null) { - player = this.getSourceCard().getController(); + player = this.getHostCard().getController(); } - final Card c = this.getSourceCard(); + final Card c = this.getHostCard(); return this.getRestrictions().canPlay(c, this); } diff --git a/forge-game/src/main/java/forge/game/spellability/AbilitySub.java b/forge-game/src/main/java/forge/game/spellability/AbilitySub.java index 0f67691f82c..b845ac74703 100644 --- a/forge-game/src/main/java/forge/game/spellability/AbilitySub.java +++ b/forge-game/src/main/java/forge/game/spellability/AbilitySub.java @@ -95,29 +95,29 @@ public final class AbilitySub extends SpellAbility implements java.io.Serializab this.setTargetRestrictions(tgt); api = api0; - params = params0; + mapParams.putAll(params0); ai = api.getAi(); effect = api.getSpellEffect(); if (effect instanceof ManaEffect || effect instanceof ManaReflectedEffect) { - this.setManaPart(new AbilityManaPart(ca, params)); + this.setManaPart(new AbilityManaPart(ca, mapParams)); } if (effect instanceof ChangeZoneEffect || effect instanceof ChangeZoneAllEffect) { - AbilityFactory.adjustChangeZoneTarget(params, this); + AbilityFactory.adjustChangeZoneTarget(mapParams, this); } } public AbilitySub getCopy() { TargetRestrictions t = getTargetRestrictions() == null ? null : new TargetRestrictions(getTargetRestrictions()); - AbilitySub res = new AbilitySub(api, getSourceCard(), t, params); + AbilitySub res = new AbilitySub(api, getHostCard(), t, mapParams); CardFactory.copySpellAbility(this, res); return res; } @Override public String getStackDescription() { - return effect.getStackDescriptionWithSubs(params, this); + return effect.getStackDescriptionWithSubs(mapParams, this); } @Override diff --git a/forge-game/src/main/java/forge/game/spellability/AbilityTriggered.java b/forge-game/src/main/java/forge/game/spellability/AbilityTriggered.java index be4791c7bd9..542d58e2c4f 100644 --- a/forge-game/src/main/java/forge/game/spellability/AbilityTriggered.java +++ b/forge-game/src/main/java/forge/game/spellability/AbilityTriggered.java @@ -159,14 +159,14 @@ public class AbilityTriggered extends Ability implements Command { return false; } final AbilityTriggered tmp = (AbilityTriggered) o; - return tmp.getSourceCard().equals(this.getSourceCard()) && tmp.trigger.equals(this.trigger) + return tmp.getHostCard().equals(this.getHostCard()) && tmp.trigger.equals(this.trigger) && tmp.todo.equals(this.todo) && Arrays.equals(tmp.restrictions, this.restrictions); } /** {@inheritDoc} */ @Override public int hashCode() { - return (41 * (41 + this.getSourceCard().hashCode() + this.trigger.hashCode() + this.todo.hashCode() + this.restrictions + return (41 * (41 + this.getHostCard().hashCode() + this.trigger.hashCode() + this.todo.hashCode() + this.restrictions .hashCode())); } @@ -179,7 +179,7 @@ public class AbilityTriggered extends Ability implements Command { */ public final boolean isBasic() { return (this.restrictions.length == 1) - && this.restrictions[0].equals("named " + this.getSourceCard().getName()); + && this.restrictions[0].equals("named " + this.getHostCard().getName()); } @Override diff --git a/forge-game/src/main/java/forge/game/spellability/Spell.java b/forge-game/src/main/java/forge/game/spellability/Spell.java index 07eccbbaaab..fae23f90252 100644 --- a/forge-game/src/main/java/forge/game/spellability/Spell.java +++ b/forge-game/src/main/java/forge/game/spellability/Spell.java @@ -67,7 +67,7 @@ public abstract class Spell extends SpellAbility implements java.io.Serializable /** {@inheritDoc} */ @Override public boolean canPlay() { - final Card card = this.getSourceCard(); + final Card card = this.getHostCard(); Player activator = this.getActivatingPlayer(); if (activator == null) { activator = card.getController(); @@ -107,7 +107,7 @@ public abstract class Spell extends SpellAbility implements java.io.Serializable } // canPlay() public boolean checkOtherRestrictions() { - final Card source = this.getSourceCard(); + final Card source = this.getHostCard(); Player activator = getActivatingPlayer(); final Game game = activator.getGame(); // CantBeCast static abilities @@ -127,7 +127,7 @@ public abstract class Spell extends SpellAbility implements java.io.Serializable /** {@inheritDoc} */ @Override public boolean canPlayAI(Player aiPlayer) { - final Card card = this.getSourceCard(); + final Card card = this.getHostCard(); final Game game = getActivatingPlayer().getGame(); if (card.getSVar("NeedsToPlay").length() > 0) { final String needsToPlay = card.getSVar("NeedsToPlay"); diff --git a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java index 69e592feb88..96d053deb4c 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java @@ -21,6 +21,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import forge.card.mana.ManaCost; +import forge.game.CardTraitBase; import forge.game.Game; import forge.game.GameEntity; import forge.game.GameObject; @@ -46,7 +47,7 @@ import java.util.*; * @author Forge * @version $Id$ */ -public abstract class SpellAbility extends GameObject implements ISpellAbility { +public abstract class SpellAbility extends CardTraitBase implements ISpellAbility { public static class EmptySa extends SpellAbility { public EmptySa(Card sourceCard) { super(sourceCard, Cost.Zero); setActivatingPlayer(sourceCard.getController());} @@ -63,10 +64,8 @@ public abstract class SpellAbility extends GameObject implements ISpellAbility { private ManaCost multiKickerManaCost = null; private Player activatingPlayer = null; - private boolean temporary; // that is given by some static ability private boolean basicLandAbility; // granted by basic land type - private Card sourceCard; private Card grantorCard = null; // card which grants the ability (equipment or owner of static ability that gave this one) private List splicedCards = null; @@ -77,7 +76,6 @@ public abstract class SpellAbility extends GameObject implements ISpellAbility { private boolean trigger = false; private boolean optionalTrigger = false; private int sourceTrigger = -1; - private boolean temporarilySuppressed = false; private boolean flashBackAbility = false; private boolean cycling = false; @@ -91,7 +89,6 @@ public abstract class SpellAbility extends GameObject implements ISpellAbility { private SpellAbilityCondition conditions = new SpellAbilityCondition(); private AbilitySub subAbility = null; - protected Map params = null; protected ApiType api = null; private final ArrayList payingMana = new ArrayList(); @@ -169,7 +166,7 @@ public abstract class SpellAbility extends GameObject implements ISpellAbility { * a {@link forge.game.card.Card} object. */ public SpellAbility(final Card iSourceCard, Cost toPay) { - this.sourceCard = iSourceCard; + this.hostCard = iSourceCard; this.payCosts = toPay; } @@ -358,29 +355,6 @@ public abstract class SpellAbility extends GameObject implements ISpellAbility { return this.cycling; } - /** - *

- * Setter for the field sourceCard. - *

- * - * @param c - * a {@link forge.game.card.Card} object. - */ - public void setSourceCard(final Card c) { - this.sourceCard = c; - } - - /** - *

- * Getter for the field sourceCard. - *

- * - * @return a {@link forge.game.card.Card} object. - */ - public Card getSourceCard() { - return this.sourceCard; - } - /** *

* Setter for the field originalHost. @@ -405,14 +379,14 @@ public abstract class SpellAbility extends GameObject implements ISpellAbility { } public String getParamOrDefault(String key, String defaultValue) { - return params == null || !params.containsKey(key) ? defaultValue : params.get(key); + return mapParams == null || !mapParams.containsKey(key) ? defaultValue : mapParams.get(key); } public String getParam(String key) { - return params == null ? null : params.get(key); + return mapParams == null ? null : mapParams.get(key); } public boolean hasParam(String key) { - return params == null ? false : params.containsKey(key); + return mapParams == null ? false : mapParams.containsKey(key); } /** @@ -420,8 +394,8 @@ public abstract class SpellAbility extends GameObject implements ISpellAbility { * @param mapParams */ public void copyParamsToMap(Map mapParams) { - if (null != params) { - mapParams.putAll(params); + if (null != this.mapParams) { + mapParams.putAll(this.mapParams); } } @@ -761,9 +735,9 @@ public abstract class SpellAbility extends GameObject implements ISpellAbility { // Clear SVars for (final String store : Card.getStorableSVars()) { - final String value = this.sourceCard.getSVar(store); + final String value = this.hostCard.getSVar(store); if (value.length() > 0) { - this.sourceCard.setSVar(store, ""); + this.hostCard.setSVar(store, ""); } } } @@ -778,7 +752,7 @@ public abstract class SpellAbility extends GameObject implements ISpellAbility { */ public void setStackDescription(final String s) { this.stackDescription = s; - if ((this.description == "") && this.sourceCard.getText().equals("")) { + if ((this.description == "") && this.hostCard.getText().equals("")) { this.description = s; } } @@ -791,11 +765,11 @@ public abstract class SpellAbility extends GameObject implements ISpellAbility { * @return a {@link java.lang.String} object. */ public String getStackDescription() { - if (this.stackDescription.equals(this.getSourceCard().getText().trim())) { - return this.getSourceCard().getName() + " - " + this.getSourceCard().getText(); + if (this.stackDescription.equals(this.getHostCard().getText().trim())) { + return this.getHostCard().getName() + " - " + this.getHostCard().getText(); } - return this.stackDescription.replaceAll("CARDNAME", this.getSourceCard().getName()); + return this.stackDescription.replaceAll("CARDNAME", this.getHostCard().getName()); } // setDescription() includes mana cost and everything like @@ -848,7 +822,7 @@ public abstract class SpellAbility extends GameObject implements ISpellAbility { sb.append(" "); } - sb.append(node.getDescription().replace("CARDNAME", node.getSourceCard().getName())); + sb.append(node.getDescription().replace("CARDNAME", node.getHostCard().getName())); node = node.getSubAbility(); } return sb.toString(); @@ -1059,14 +1033,14 @@ public abstract class SpellAbility extends GameObject implements ISpellAbility { // If the cards must have a specific controller if (hasParam("TargetsWithDefinedController") && entity instanceof Card) { final Card c = (Card) entity; - List pl = AbilityUtils.getDefinedPlayers(getSourceCard(), getParam("TargetsWithDefinedController"), this); + List pl = AbilityUtils.getDefinedPlayers(getHostCard(), getParam("TargetsWithDefinedController"), this); if (pl == null || !pl.contains(c.getController()) ) { return false; } } String[] validTgt = tr.getValidTgts(); - if (entity instanceof GameEntity && !((GameEntity) entity).isValid(validTgt, this.getActivatingPlayer(), this.getSourceCard())) + if (entity instanceof GameEntity && !((GameEntity) entity).isValid(validTgt, this.getActivatingPlayer(), this.getHostCard())) return false; } @@ -1087,24 +1061,6 @@ public abstract class SpellAbility extends GameObject implements ISpellAbility { return false; } - /** - * Sets the temporarily suppressed. - * - * @param supp - * the new temporarily suppressed - */ - public final void setTemporarilySuppressed(final boolean supp) { - this.temporarilySuppressed = supp; - } - - /** - * Checks if is suppressed. - * - * @return true, if is suppressed - */ - public final boolean isSuppressed() { - return (this.temporarilySuppressed); - } /** * Gets the checks if is delve. @@ -1233,7 +1189,7 @@ public abstract class SpellAbility extends GameObject implements ISpellAbility { */ public List knownDetermineDefined(final String defined) { final List ret = new ArrayList(); - final List list = AbilityUtils.getDefinedCards(getSourceCard(), defined, this); + final List list = AbilityUtils.getDefinedCards(getHostCard(), defined, this); final Game game = getActivatingPlayer().getGame(); for (final Card c : list) { @@ -1268,7 +1224,7 @@ public abstract class SpellAbility extends GameObject implements ISpellAbility { * @return */ public boolean isUndoable() { - return this.undoable && this.payCosts.isUndoable() && this.getSourceCard().isInPlay(); + return this.undoable && this.payCosts.isUndoable() && this.getHostCard().isInPlay(); } /** @@ -1276,7 +1232,7 @@ public abstract class SpellAbility extends GameObject implements ISpellAbility { */ public boolean undo() { if (isUndoable() && this.getActivatingPlayer().getManaPool().accountFor(this.getManaPart())) { - this.payCosts.refundPaidCost(sourceCard); + this.payCosts.refundPaidCost(hostCard); } return false; } @@ -1330,14 +1286,6 @@ public abstract class SpellAbility extends GameObject implements ISpellAbility { this.basicLandAbility = basicLandAbility; // TODO: Add 0 to parameter's name. } - public boolean isTemporary() { - return temporary; - } - - public void setTemporary(boolean temporary) { - this.temporary = temporary; // TODO: Add 0 to parameter's name. - } - @Override public boolean canBeTargetedBy(SpellAbility sa) { return sa.canTargetSpellAbility(this); @@ -1438,7 +1386,7 @@ public abstract class SpellAbility extends GameObject implements ISpellAbility { */ public void setTargetCard(final Card card) { if (card == null) { - System.out.println(this.getSourceCard() + System.out.println(this.getHostCard() + " - SpellAbility.setTargetCard() called with null for target card."); return; } @@ -1449,9 +1397,9 @@ public abstract class SpellAbility extends GameObject implements ISpellAbility { final String desc; if (!card.isFaceDown()) { - desc = this.getSourceCard().getName() + " - targeting " + card; + desc = this.getHostCard().getName() + " - targeting " + card; } else { - desc = this.getSourceCard().getName() + " - targeting Morph(" + card.getUniqueNumber() + ")"; + desc = this.getHostCard().getName() + " - targeting Morph(" + card.getUniqueNumber() + ")"; } this.setStackDescription(desc); } @@ -1473,7 +1421,7 @@ public abstract class SpellAbility extends GameObject implements ISpellAbility { if (targetChosen.isTargetingAnySpell()) { List res = Lists.newArrayList(); for (final SpellAbility ability : targetChosen.getTargetSpells()) { - res.add(ability.getSourceCard()); + res.add(ability.getHostCard()); } return res; } @@ -1565,7 +1513,7 @@ public abstract class SpellAbility extends GameObject implements ISpellAbility { public boolean canTargetSpellAbility(final SpellAbility topSA) { final TargetRestrictions tgt = this.getTargetRestrictions(); - if (this.hasParam("TargetType") && !topSA.isValid(this.getParam("TargetType").split(","), this.getActivatingPlayer(), this.getSourceCard())) { + if (this.hasParam("TargetType") && !topSA.isValid(this.getParam("TargetType").split(","), this.getActivatingPlayer(), this.getHostCard())) { return false; } @@ -1582,7 +1530,7 @@ public abstract class SpellAbility extends GameObject implements ISpellAbility { boolean result = false; for (final GameObject o : matchTgt.getTargets()) { - if (o.isValid(splitTargetRestrictions.split(","), this.getActivatingPlayer(), this.getSourceCard())) { + if (o.isValid(splitTargetRestrictions.split(","), this.getActivatingPlayer(), this.getHostCard())) { result = true; break; } @@ -1608,7 +1556,7 @@ public abstract class SpellAbility extends GameObject implements ISpellAbility { } } - return topSA.getSourceCard().isValid(tgt.getValidTgts(), this.getActivatingPlayer(), this.getSourceCard()); + return topSA.getHostCard().isValid(tgt.getValidTgts(), this.getActivatingPlayer(), this.getHostCard()); } // Takes one argument like Permanent.Blue+withFlying @@ -1699,13 +1647,13 @@ public abstract class SpellAbility extends GameObject implements ISpellAbility { // Return whether this spell tracks what color mana is spent to cast it for the sake of the effect public boolean tracksManaSpent() { - if (this.sourceCard == null) { return false; } + if (this.hostCard == null) { return false; } if (!this.isSpell()) { return false; } - if (this.sourceCard.hasKeyword("Sunburst")) { + if (this.hostCard.hasKeyword("Sunburst")) { return true; } - if (this.sourceCard.getRules().getOracleText().contains("was spent to cast")) { + if (this.hostCard.getRules().getOracleText().contains("was spent to cast")) { return true; } return false; diff --git a/forge-game/src/main/java/forge/game/spellability/SpellAbilityCondition.java b/forge-game/src/main/java/forge/game/spellability/SpellAbilityCondition.java index 72f51d79bfd..ae500c5eb0f 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellAbilityCondition.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellAbilityCondition.java @@ -186,8 +186,8 @@ public class SpellAbilityCondition extends SpellAbilityVariables { Player activator = sa.getActivatingPlayer(); if (activator == null) { - activator = sa.getSourceCard().getController(); - System.out.println(sa.getSourceCard().getName() + activator = sa.getHostCard().getController(); + System.out.println(sa.getHostCard().getName() + " Did not have activator set in SpellAbility_Condition.checkConditions()"); } final Game game = activator.getGame(); @@ -252,7 +252,7 @@ public class SpellAbilityCondition extends SpellAbilityVariables { } if (this.getColorToCheck() != null) { - if (!sa.getSourceCard().getChosenColor().contains(this.getColorToCheck())) { + if (!sa.getHostCard().getChosenColor().contains(this.getColorToCheck())) { return false; } } @@ -260,12 +260,12 @@ public class SpellAbilityCondition extends SpellAbilityVariables { if (this.getIsPresent() != null) { List list = new ArrayList(); if (this.getPresentDefined() != null) { - list.addAll(AbilityUtils.getDefinedCards(sa.getSourceCard(), this.getPresentDefined(), sa)); + list.addAll(AbilityUtils.getDefinedCards(sa.getHostCard(), this.getPresentDefined(), sa)); } else { list = game.getCardsIn(ZoneType.Battlefield); } - list = CardLists.getValidCards(list, this.getIsPresent().split(","), sa.getActivatingPlayer(), sa.getSourceCard()); + list = CardLists.getValidCards(list, this.getIsPresent().split(","), sa.getActivatingPlayer(), sa.getHostCard()); int right; final String rightString = this.getPresentCompare().substring(2); @@ -274,7 +274,7 @@ public class SpellAbilityCondition extends SpellAbilityVariables { } catch (final NumberFormatException e) { // Otherwise, grab it from // the // SVar - right = CardFactoryUtil.xCount(sa.getSourceCard(), sa.getSourceCard().getSVar(rightString)); + right = CardFactoryUtil.xCount(sa.getHostCard(), sa.getHostCard().getSVar(rightString)); } final int left = list.size(); @@ -287,9 +287,9 @@ public class SpellAbilityCondition extends SpellAbilityVariables { if (this.getPlayerContains() != null) { List list = new ArrayList(); if (this.getPlayerDefined() != null) { - list.addAll(AbilityUtils.getDefinedPlayers(sa.getSourceCard(), this.getPlayerDefined(), sa)); + list.addAll(AbilityUtils.getDefinedPlayers(sa.getHostCard(), this.getPlayerDefined(), sa)); } - List contains = AbilityUtils.getDefinedPlayers(sa.getSourceCard(), this.getPlayerContains(), sa); + List contains = AbilityUtils.getDefinedPlayers(sa.getHostCard(), this.getPlayerContains(), sa); if (!list.containsAll(contains)) { return false; } @@ -307,7 +307,7 @@ public class SpellAbilityCondition extends SpellAbilityVariables { int right = 1; final String rightString = this.getLifeAmount().substring(2); if (rightString.equals("X")) { - right = CardFactoryUtil.xCount(sa.getSourceCard(), sa.getSourceCard().getSVar("X")); + right = CardFactoryUtil.xCount(sa.getHostCard(), sa.getHostCard().getSVar("X")); } else { right = Integer.parseInt(this.getLifeAmount().substring(2)); } @@ -326,7 +326,7 @@ public class SpellAbilityCondition extends SpellAbilityVariables { boolean result = false; for (final GameObject o : matchTgt.getFirstTargetedSpell().getTargets().getTargets()) { - if (o.isValid(this.getTargetValidTargeting().split(","), sa.getActivatingPlayer(), sa.getSourceCard())) { + if (o.isValid(this.getTargetValidTargeting().split(","), sa.getActivatingPlayer(), sa.getHostCard())) { result = true; break; } @@ -347,13 +347,13 @@ public class SpellAbilityCondition extends SpellAbilityVariables { if (StringUtils.isNotEmpty(this.getManaSpent())) { byte manaSpent = MagicColor.fromName(getManaSpent()); // they always check for single color - if( 0 == (manaSpent & sa.getSourceCard().getColorsPaid())) // no match of colors + if( 0 == (manaSpent & sa.getHostCard().getColorsPaid())) // no match of colors return false; } if (this.getsVarToCheck() != null) { - final int svarValue = AbilityUtils.calculateAmount(sa.getSourceCard(), this.getsVarToCheck(), sa); - final int operandValue = AbilityUtils.calculateAmount(sa.getSourceCard(), this.getsVarOperand(), sa); + final int svarValue = AbilityUtils.calculateAmount(sa.getHostCard(), this.getsVarToCheck(), sa); + final int operandValue = AbilityUtils.calculateAmount(sa.getHostCard(), this.getsVarOperand(), sa); if (!Expressions.compare(svarValue, this.getsVarOperator(), operandValue)) { return false; diff --git a/forge-game/src/main/java/forge/game/spellability/SpellAbilityRestriction.java b/forge-game/src/main/java/forge/game/spellability/SpellAbilityRestriction.java index 9659649aca7..92f176c9458 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellAbilityRestriction.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellAbilityRestriction.java @@ -364,7 +364,7 @@ public class SpellAbilityRestriction extends SpellAbilityVariables { } if (this.getColorToCheck() != null) { - if (!sa.getSourceCard().getChosenColor().contains(this.getColorToCheck())) { + if (!sa.getHostCard().getChosenColor().contains(this.getColorToCheck())) { return false; } } @@ -423,7 +423,7 @@ public class SpellAbilityRestriction extends SpellAbilityVariables { int right = 1; final String rightString = this.getLifeAmount().substring(2); if (rightString.equals("X")) { - right = CardFactoryUtil.xCount(sa.getSourceCard(), sa.getSourceCard().getSVar("X")); + right = CardFactoryUtil.xCount(sa.getHostCard(), sa.getHostCard().getSVar("X")); } else { right = Integer.parseInt(this.getLifeAmount().substring(2)); } @@ -456,8 +456,8 @@ public class SpellAbilityRestriction extends SpellAbilityVariables { } if (this.getsVarToCheck() != null) { - final int svarValue = AbilityUtils.calculateAmount(sa.getSourceCard(), this.getsVarToCheck(), sa); - final int operandValue = AbilityUtils.calculateAmount(sa.getSourceCard(), this.getsVarOperand(), sa); + final int svarValue = AbilityUtils.calculateAmount(sa.getHostCard(), this.getsVarToCheck(), sa); + final int operandValue = AbilityUtils.calculateAmount(sa.getHostCard(), this.getsVarOperand(), sa); if (!Expressions.compare(svarValue, this.getsVarOperator(), operandValue)) { return false; diff --git a/forge-game/src/main/java/forge/game/spellability/SpellAbilityStackInstance.java b/forge-game/src/main/java/forge/game/spellability/SpellAbilityStackInstance.java index b77e7f325ff..e035a9d647f 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellAbilityStackInstance.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellAbilityStackInstance.java @@ -97,7 +97,7 @@ public class SpellAbilityStackInstance { this.splicedCards = sa.getSplicedCards(); // TODO getXManaCostPaid should be on the SA, not the Card - this.xManaPaid = sa.getSourceCard().getXManaCostPaid(); + this.xManaPaid = sa.getHostCard().getXManaCostPaid(); // Triggering info this.triggeringObjects = sa.getTriggeringObjects(); @@ -115,7 +115,7 @@ public class SpellAbilityStackInstance { this.ability.resetTargets(); } - final Card source = this.ability.getSourceCard(); + final Card source = this.ability.getHostCard(); // Store SVars and Clear for (final String store : Card.getStorableSVars()) { @@ -148,13 +148,13 @@ public class SpellAbilityStackInstance { this.ability.resetPaidHash(); this.ability.setPaidHash(this.paidHash); this.ability.setSplicedCards(splicedCards); - this.ability.getSourceCard().setXManaCostPaid(this.xManaPaid); + this.ability.getHostCard().setXManaCostPaid(this.xManaPaid); // Triggered this.ability.setAllTriggeringObjects(this.triggeringObjects); // Add SVars back in - final Card source = this.ability.getSourceCard(); + final Card source = this.ability.getHostCard(); for (final String store : this.storedSVars.keySet()) { final String value = this.storedSVars.get(store); if (value.length() > 0) { @@ -179,13 +179,13 @@ public class SpellAbilityStackInstance { /** *

- * getSourceCard. + * getHostCard. *

* * @return a {@link forge.game.card.Card} object. */ public final Card getSourceCard() { - return this.ability.getSourceCard(); + return this.ability.getHostCard(); } /** diff --git a/forge-game/src/main/java/forge/game/spellability/SpellPermanent.java b/forge-game/src/main/java/forge/game/spellability/SpellPermanent.java index 3507c1ba13e..cc79bbd0cf8 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellPermanent.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellPermanent.java @@ -78,8 +78,8 @@ public class SpellPermanent extends Spell { this.setDescription(this.getStackDescription()); - if (this.getPayCosts().getTotalMana().countX() > 0 && StringUtils.isNotBlank(getSourceCard().getSVar("X"))) { - this.setSVar("X", this.getSourceCard().getSVar("X")); + if (this.getPayCosts().getTotalMana().countX() > 0 && StringUtils.isNotBlank(getHostCard().getSVar("X"))) { + this.setSVar("X", this.getHostCard().getSVar("X")); } } // Spell_Permanent() @@ -88,7 +88,7 @@ public class SpellPermanent extends Spell { @Override public boolean canPlayAI(Player aiPlayer) { - final Card card = this.getSourceCard(); + final Card card = this.getHostCard(); ManaCost mana = this.getPayCosts().getTotalMana(); final Game game = aiPlayer.getGame(); if (mana.countX() > 0) { @@ -139,7 +139,7 @@ public class SpellPermanent extends Spell { if (mandatory) { return true; } - final Card card = this.getSourceCard(); + final Card card = this.getHostCard(); ManaCost mana = this.getPayCosts().getTotalMana(); final Cost cost = this.getPayCosts(); @@ -363,7 +363,7 @@ public class SpellPermanent extends Spell { /** {@inheritDoc} */ @Override public void resolve() { - Card c = this.getSourceCard(); + Card c = this.getHostCard(); c.setController(this.getActivatingPlayer(), 0); this.getActivatingPlayer().getGame().getAction().moveTo(ZoneType.Battlefield, c); } diff --git a/forge-game/src/main/java/forge/game/spellability/TargetRestrictions.java b/forge-game/src/main/java/forge/game/spellability/TargetRestrictions.java index 28c2dc8807a..a98434de3d6 100644 --- a/forge-game/src/main/java/forge/game/spellability/TargetRestrictions.java +++ b/forge-game/src/main/java/forge/game/spellability/TargetRestrictions.java @@ -416,14 +416,14 @@ public class TargetRestrictions { * @return a boolean. */ public final boolean hasCandidates(final SpellAbility sa, final boolean isTargeted) { - final Game game = sa.getSourceCard().getGame(); + final Game game = sa.getHostCard().getGame(); for (Player player : game.getPlayers()) { if (sa.canTarget(player)) { return true; } } - final Card srcCard = sa.getSourceCard(); // should there be OrginalHost at any moment? + final Card srcCard = sa.getHostCard(); // should there be OrginalHost at any moment? if (this.tgtZone.contains(ZoneType.Stack)) { // Stack Zone targets are considered later return true; @@ -480,7 +480,7 @@ public class TargetRestrictions { } } - final Card srcCard = sa.getSourceCard(); // should there be OrginalHost at any moment? + final Card srcCard = sa.getHostCard(); // should there be OrginalHost at any moment? if (this.tgtZone.contains(ZoneType.Stack)) { for (final Card c : game.getStackZone().getCards()) { if (c.isValid(this.validTgts, srcCard.getController(), srcCard) diff --git a/forge-game/src/main/java/forge/game/staticability/StaticAbilityCantTarget.java b/forge-game/src/main/java/forge/game/staticability/StaticAbilityCantTarget.java index 9e2ccb2497b..2b8d628fa3c 100644 --- a/forge-game/src/main/java/forge/game/staticability/StaticAbilityCantTarget.java +++ b/forge-game/src/main/java/forge/game/staticability/StaticAbilityCantTarget.java @@ -22,7 +22,6 @@ import forge.game.player.Player; import forge.game.spellability.SpellAbility; import forge.game.zone.ZoneType; -import java.util.HashMap; import java.util.Map; /** @@ -45,7 +44,7 @@ public class StaticAbilityCantTarget { final SpellAbility spellAbility) { final Map params = staticAbility.getMapParams(); final Card hostCard = staticAbility.getHostCard(); - final Card source = spellAbility.getSourceCard(); + final Card source = spellAbility.getHostCard(); final Player activator = spellAbility.getActivatingPlayer(); if (params.containsKey("AffectedZone")) { diff --git a/forge-game/src/main/java/forge/game/staticability/StaticAbilityContinuous.java b/forge-game/src/main/java/forge/game/staticability/StaticAbilityContinuous.java index 84d16d0e7ff..5d5d225af47 100644 --- a/forge-game/src/main/java/forge/game/staticability/StaticAbilityContinuous.java +++ b/forge-game/src/main/java/forge/game/staticability/StaticAbilityContinuous.java @@ -302,6 +302,7 @@ public class StaticAbilityContinuous { for (SpellAbility sa : c.getSpellAbilities()) { if (sa instanceof AbilityActivated) { SpellAbility newSA = ((AbilityActivated) sa).getCopy(); + newSA.setIntrinsic(false); newSA.setTemporary(true); CardFactoryUtil.correctAbilityChainSourceCard(newSA, hostCard); addFullAbs.add(newSA); @@ -471,6 +472,7 @@ public class StaticAbilityContinuous { if (abilty.startsWith("AB")) { // grant the ability final SpellAbility sa = AbilityFactory.getAbility(abilty, affectedCard); sa.setTemporary(true); + sa.setIntrinsic(false); sa.setOriginalHost(hostCard); affectedCard.addSpellAbility(sa); } @@ -481,6 +483,7 @@ public class StaticAbilityContinuous { if (addReplacements != null) { for (String rep : addReplacements) { final ReplacementEffect actualRep = ReplacementHandler.parseReplacement(rep, affectedCard, false); + actualRep.setIntrinsic(false); affectedCard.addReplacementEffect(actualRep).setTemporary(true);; } } @@ -501,6 +504,7 @@ public class StaticAbilityContinuous { if (addTriggers != null) { for (final String trigger : addTriggers) { final Trigger actualTrigger = TriggerHandler.parseTrigger(trigger, affectedCard, false); + actualTrigger.setIntrinsic(false); affectedCard.addTrigger(actualTrigger).setTemporary(true); } } @@ -512,7 +516,10 @@ public class StaticAbilityContinuous { final String costcmc = Integer.toString(affectedCard.getCMC()); s = s.replace("ConvertedManaCost", costcmc); } - affectedCard.addStaticAbility(s).setTemporary(true); + + StaticAbility stat = affectedCard.addStaticAbility(s); + stat.setTemporary(true); + stat.setIntrinsic(false); } } diff --git a/forge-game/src/main/java/forge/game/staticability/StaticAbilityCostChange.java b/forge-game/src/main/java/forge/game/staticability/StaticAbilityCostChange.java index f4578394d1f..2b91add4671 100644 --- a/forge-game/src/main/java/forge/game/staticability/StaticAbilityCostChange.java +++ b/forge-game/src/main/java/forge/game/staticability/StaticAbilityCostChange.java @@ -28,7 +28,6 @@ import forge.game.spellability.SpellAbility; import forge.game.spellability.TargetRestrictions; import forge.game.zone.ZoneType; -import java.util.HashMap; import java.util.List; import java.util.Map; @@ -51,7 +50,7 @@ public class StaticAbilityCostChange { final Map params = staticAbility.getMapParams(); final Card hostCard = staticAbility.getHostCard(); final Player activator = sa.getActivatingPlayer(); - final Card card = sa.getSourceCard(); + final Card card = sa.getHostCard(); final String amount = params.get("Amount"); @@ -124,7 +123,7 @@ public class StaticAbilityCostChange { } boolean targetValid = false; for (SpellAbility target : sa.getTargets().getTargetSpells()) { - Card targetCard = target.getSourceCard(); + Card targetCard = target.getHostCard(); if (targetCard.isValid(params.get("ValidSpellTarget").split(","), hostCard.getController(), hostCard)) { targetValid = true; } @@ -202,7 +201,7 @@ public class StaticAbilityCostChange { final Map params = staticAbility.getMapParams(); final Card hostCard = staticAbility.getHostCard(); final Player activator = sa.getActivatingPlayer(); - final Card card = sa.getSourceCard(); + final Card card = sa.getHostCard(); final String amount = params.get("Amount"); diff --git a/forge-game/src/main/java/forge/game/trigger/Trigger.java b/forge-game/src/main/java/forge/game/trigger/Trigger.java index 168ade73480..7c10c22896d 100644 --- a/forge-game/src/main/java/forge/game/trigger/Trigger.java +++ b/forge-game/src/main/java/forge/game/trigger/Trigger.java @@ -19,6 +19,7 @@ package forge.game.trigger; import forge.game.CardTraitBase; import forge.game.Game; +import forge.game.TriggerReplacementBase; import forge.game.card.Card; import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseType; @@ -41,7 +42,7 @@ import java.util.Map; * @author Forge * @version $Id$ */ -public abstract class Trigger extends CardTraitBase { +public abstract class Trigger extends TriggerReplacementBase { /** Constant nextID=0. */ private static int nextID = 0; diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerBecomesTarget.java b/forge-game/src/main/java/forge/game/trigger/TriggerBecomesTarget.java index d1f590d264b..636e2915ca3 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerBecomesTarget.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerBecomesTarget.java @@ -65,7 +65,7 @@ public class TriggerBecomesTarget extends Trigger { } } if (this.mapParams.containsKey("ValidSource")) { - if (!matchesValid(((SpellAbility) runParams2.get("SourceSA")).getSourceCard(), this.mapParams + if (!matchesValid(((SpellAbility) runParams2.get("SourceSA")).getHostCard(), this.mapParams .get("ValidSource").split(","), this.getHostCard())) { return false; } @@ -89,7 +89,7 @@ public class TriggerBecomesTarget extends Trigger { @Override public final void setTriggeringObjects(final SpellAbility sa) { sa.setTriggeringObject("SourceSA", this.getRunParams().get("SourceSA")); - sa.setTriggeringObject("Source", ((SpellAbility) this.getRunParams().get("SourceSA")).getSourceCard()); + sa.setTriggeringObject("Source", ((SpellAbility) this.getRunParams().get("SourceSA")).getHostCard()); sa.setTriggeringObject("Target", this.getRunParams().get("Target")); } } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java b/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java index 2b73e16a253..1bb8b336e12 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java @@ -356,7 +356,7 @@ public class TriggerHandler { } } host = game.getCardState(regtrig.getHostCard()); - sa.setSourceCard(host); + sa.setHostCard(host); sa.setTrigger(true); sa.setSourceTrigger(regtrig.getId()); regtrig.setTriggeringObjects(sa); diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerSpellAbilityCast.java b/forge-game/src/main/java/forge/game/trigger/TriggerSpellAbilityCast.java index ac00e43a190..f0a35ae84a4 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerSpellAbilityCast.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerSpellAbilityCast.java @@ -60,7 +60,7 @@ public class TriggerSpellAbilityCast extends Trigger { System.out.println("TriggerSpellAbilityCast performTest encountered spellAbility == null. runParams2 = " + runParams2); return false; } - final Card cast = spellAbility.getSourceCard(); + final Card cast = spellAbility.getHostCard(); final Game game = cast.getGame(); final SpellAbilityStackInstance si = game.getStack().getInstanceFromSpellAbility(spellAbility); @@ -185,7 +185,7 @@ public class TriggerSpellAbilityCast extends Trigger { /** {@inheritDoc} */ @Override public final void setTriggeringObjects(final SpellAbility sa) { - sa.setTriggeringObject("Card", ((SpellAbility) this.getRunParams().get("CastSA")).getSourceCard()); + sa.setTriggeringObject("Card", ((SpellAbility) this.getRunParams().get("CastSA")).getHostCard()); sa.setTriggeringObject("SpellAbility", this.getRunParams().get("CastSA")); sa.setTriggeringObject("Player", this.getRunParams().get("Player")); sa.setTriggeringObject("Activator", this.getRunParams().get("Activator")); diff --git a/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java b/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java index 102831dfd6b..88f8dc9c914 100644 --- a/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java +++ b/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java @@ -167,8 +167,8 @@ public class WrappedAbility extends Ability implements ISpellAbility { } @Override - public Card getSourceCard() { - return sa.getSourceCard(); + public Card getHostCard() { + return sa.getHostCard(); } @Override @@ -283,8 +283,8 @@ public class WrappedAbility extends Ability implements ISpellAbility { } @Override - public void setSourceCard(final Card c) { - sa.setSourceCard(c); + public void setHostCard(final Card c) { + sa.setHostCard(c); } @Override diff --git a/forge-game/src/main/java/forge/game/zone/MagicStack.java b/forge-game/src/main/java/forge/game/zone/MagicStack.java index e7608e0709e..abcf3b9e653 100644 --- a/forge-game/src/main/java/forge/game/zone/MagicStack.java +++ b/forge-game/src/main/java/forge/game/zone/MagicStack.java @@ -159,15 +159,15 @@ public class MagicStack /* extends MyObservable */ implements Iterable= ability.getRestrictions() .getActivationNumberSacrifice())) { - ability.getSourceCard().addHiddenExtrinsicKeyword("At the beginning of the end step, sacrifice CARDNAME."); + ability.getHostCard().addHiddenExtrinsicKeyword("At the beginning of the end step, sacrifice CARDNAME."); } // if the ability is a spell, but not a copied spell and its not already // on the stack zone, move there if (ability.isSpell()) { - final Card source = ability.getSourceCard(); + final Card source = ability.getHostCard(); if (!source.isCopiedSpell() && !source.isInZone(ZoneType.Stack)) { - ability.setSourceCard(game.getAction().moveToStack(source)); + ability.setHostCard(game.getAction().moveToStack(source)); } } @@ -254,7 +254,7 @@ public class MagicStack /* extends MyObservable */ implements Iterable creats = CardLists.filter(game.getCardsIn(ZoneType.Battlefield), Presets.CREATURES); final Ability haunterDiesWork = new Ability(source, ManaCost.ZERO) { @Override @@ -601,7 +601,7 @@ public class MagicStack /* extends MyObservable */ implements Iterable 0) { for (final Card c : game.getCardsIn(ZoneType.Battlefield)) { @@ -611,14 +611,14 @@ public class MagicStack /* extends MyObservable */ implements Iterable { @Override public Void visit(final GameEventSpellResolved event) { - FThreads.invokeInEdtNowOrLater(new Runnable() { @Override public void run() { CMatchUI.SINGLETON_INSTANCE.setCard(event.spell.getSourceCard()); } }); + FThreads.invokeInEdtNowOrLater(new Runnable() { @Override public void run() { CMatchUI.SINGLETON_INSTANCE.setCard(event.spell.getHostCard()); } }); pauseForEvent(resolveDelay); return null; } @@ -105,7 +105,7 @@ public class FControlGamePlayback extends IGameEventVisitor.Base { */ @Override public Void visit(final GameEventSpellAbilityCast event) { - FThreads.invokeInEdtNowOrLater(new Runnable() { @Override public void run() { CMatchUI.SINGLETON_INSTANCE.setCard(event.sa.getSourceCard()); } }); + FThreads.invokeInEdtNowOrLater(new Runnable() { @Override public void run() { CMatchUI.SINGLETON_INSTANCE.setCard(event.sa.getHostCard()); } }); pauseForEvent(castDelay); return null; } diff --git a/forge-gui/src/main/java/forge/gui/DualListBox.java b/forge-gui/src/main/java/forge/gui/DualListBox.java index b9200bacba6..7c809e21a3b 100644 --- a/forge-gui/src/main/java/forge/gui/DualListBox.java +++ b/forge-gui/src/main/java/forge/gui/DualListBox.java @@ -313,7 +313,7 @@ public class DualListBox extends FDialog { if (obj instanceof Card) { card = (Card) obj; } else if (obj instanceof SpellAbility) { - card = ((SpellAbility) obj).getSourceCard(); + card = ((SpellAbility) obj).getHostCard(); } else if (obj instanceof PaperCard) { card = Card.getCardForUi((IPaperCard) obj); } diff --git a/forge-gui/src/main/java/forge/gui/input/InputPayMana.java b/forge-gui/src/main/java/forge/gui/input/InputPayMana.java index 08559c3dd6d..d901da6a1ef 100644 --- a/forge-gui/src/main/java/forge/gui/input/InputPayMana.java +++ b/forge-gui/src/main/java/forge/gui/input/InputPayMana.java @@ -148,8 +148,8 @@ public abstract class InputPayMana extends InputSyncronizedBase { // Store some information about color costs to help with any mana choices if (colorNeeded == 0) { // only colorless left - if (saPaidFor.getSourceCard() != null && saPaidFor.getSourceCard().hasSVar("ManaNeededToAvoidNegativeEffect")) { - String[] negEffects = saPaidFor.getSourceCard().getSVar("ManaNeededToAvoidNegativeEffect").split(","); + if (saPaidFor.getHostCard() != null && saPaidFor.getHostCard().hasSVar("ManaNeededToAvoidNegativeEffect")) { + String[] negEffects = saPaidFor.getHostCard().getSVar("ManaNeededToAvoidNegativeEffect").split(","); for (String negColor : negEffects) { byte col = MagicColor.fromName(negColor); colorCanUse |= col; @@ -196,7 +196,7 @@ public abstract class InputPayMana extends InputSyncronizedBase { ColorSet colors = ColorSet.fromMask(0 == colorNeeded ? colorCanUse : colorNeeded); chosen.getManaPartRecursive().setExpressChoice(colors); - // System.out.println("Chosen sa=" + chosen + " of " + chosen.getSourceCard() + " to pay mana"); + // System.out.println("Chosen sa=" + chosen + " of " + chosen.getHostCard() + " to pay mana"); Runnable proc = new Runnable() { @Override public void run() { @@ -229,7 +229,7 @@ public abstract class InputPayMana extends InputSyncronizedBase { } // check for produce mana replacement effects - they mess this up, so just use the mana ability - final Card source = am.getSourceCard(); + final Card source = am.getHostCard(); final Player activator = am.getActivatingPlayer(); final Game g = source.getGame(); final HashMap repParams = new HashMap(); diff --git a/forge-gui/src/main/java/forge/gui/input/InputPayManaOfCostPayment.java b/forge-gui/src/main/java/forge/gui/input/InputPayManaOfCostPayment.java index e6561bf84f0..033bbbfdfa4 100644 --- a/forge-gui/src/main/java/forge/gui/input/InputPayManaOfCostPayment.java +++ b/forge-gui/src/main/java/forge/gui/input/InputPayManaOfCostPayment.java @@ -29,7 +29,7 @@ public class InputPayManaOfCostPayment extends InputPayMana { @Override protected void done() { - final Card source = saPaidFor.getSourceCard(); + final Card source = saPaidFor.getHostCard(); if (this.phyLifeToLose > 0) { player.payLife(this.phyLifeToLose, source); } diff --git a/forge-gui/src/main/java/forge/gui/input/InputPayManaSimple.java b/forge-gui/src/main/java/forge/gui/input/InputPayManaSimple.java index dd59013de64..0783d2c6ac4 100644 --- a/forge-gui/src/main/java/forge/gui/input/InputPayManaSimple.java +++ b/forge-gui/src/main/java/forge/gui/input/InputPayManaSimple.java @@ -40,9 +40,9 @@ public class InputPayManaSimple extends InputPayMana { public InputPayManaSimple(final Game game, final SpellAbility sa, final ManaCostBeingPaid manaCostToPay) { super(sa); this.originalManaCost = manaCostToPay.toManaCost(); - this.originalCard = sa.getSourceCard(); + this.originalCard = sa.getHostCard(); - if (sa.getSourceCard().isCopiedSpell() && sa.isSpell()) { + if (sa.getHostCard().isCopiedSpell() && sa.isSpell()) { this.manaCost = new ManaCostBeingPaid(ManaCost.ZERO); game.getStack().add(this.saPaidFor); } @@ -81,11 +81,11 @@ public class InputPayManaSimple extends InputPayMana { if (this.phyLifeToLose > 0) { player.payLife(this.phyLifeToLose, this.originalCard); } - if (!this.saPaidFor.getSourceCard().isCopiedSpell()) { + if (!this.saPaidFor.getHostCard().isCopiedSpell()) { player.getManaPool().clearManaPaid(this.saPaidFor, false); if (this.saPaidFor.isSpell()) { - this.saPaidFor.setSourceCard(game.getAction().moveToStack(this.originalCard)); + this.saPaidFor.setHostCard(game.getAction().moveToStack(this.originalCard)); } } } diff --git a/forge-gui/src/main/java/forge/gui/input/InputPayManaX.java b/forge-gui/src/main/java/forge/gui/input/InputPayManaX.java index c4626132367..107e3cd3b25 100644 --- a/forge-gui/src/main/java/forge/gui/input/InputPayManaX.java +++ b/forge-gui/src/main/java/forge/gui/input/InputPayManaX.java @@ -44,7 +44,7 @@ public class InputPayManaX extends InputPayMana { manaCost = new ManaCostBeingPaid(manaCostPerX); this.xCanBe0 = xCanBe0; - colorsPaid = saPaidFor.getSourceCard().getColorsPaid(); // for effects like sunburst + colorsPaid = saPaidFor.getHostCard().getColorsPaid(); // for effects like sunburst } /* (non-Javadoc) @@ -72,7 +72,7 @@ public class InputPayManaX extends InputPayMana { @Override protected String getMessage() { StringBuilder msg = new StringBuilder("Pay X Mana Cost for "); - msg.append(saPaidFor.getSourceCard().getName()).append("\n").append(this.xPaid); + msg.append(saPaidFor.getHostCard().getName()).append("\n").append(this.xPaid); msg.append(" Paid so far."); if (!xCanBe0) { msg.append(" X Can't be 0."); @@ -124,7 +124,7 @@ public class InputPayManaX extends InputPayMana { @Override protected void done() { - final Card card = saPaidFor.getSourceCard(); + final Card card = saPaidFor.getHostCard(); card.setXManaCostPaid(this.xPaid); card.setColorsPaid(this.colorsPaid); card.setSunburstValue(ColorSet.fromMask(this.colorsPaid).countColors()); diff --git a/forge-gui/src/main/java/forge/gui/input/InputSelectTargets.java b/forge-gui/src/main/java/forge/gui/input/InputSelectTargets.java index c6a6f69cc02..c67d96adfb9 100644 --- a/forge-gui/src/main/java/forge/gui/input/InputSelectTargets.java +++ b/forge-gui/src/main/java/forge/gui/input/InputSelectTargets.java @@ -62,9 +62,9 @@ public final class InputSelectTargets extends InputSyncronizedBase { sb.append("\n"); } - sb.append(sa.getSourceCard() + " - " + tgt.getVTSelection()); + sb.append(sa.getHostCard() + " - " + tgt.getVTSelection()); - int maxTargets = tgt.getMaxTargets(sa.getSourceCard(), sa); + int maxTargets = tgt.getMaxTargets(sa.getHostCard(), sa); int targeted = sa.getTargets().getNumTargeted(); if(maxTargets > 1) sb.append("\n(").append(maxTargets - targeted).append(" more can be targeted)"); @@ -72,7 +72,7 @@ public final class InputSelectTargets extends InputSyncronizedBase { showMessage(sb.toString()); // If reached Minimum targets, enable OK button - if (!tgt.isMinTargetsChosen(sa.getSourceCard(), sa) || tgt.isDividedAsYouChoose()) { + if (!tgt.isMinTargetsChosen(sa.getHostCard(), sa) || tgt.isDividedAsYouChoose()) { if (mandatory && tgt.hasCandidates(sa, true)) { // Player has to click on a target ButtonUtil.disableAll(); @@ -110,14 +110,14 @@ public final class InputSelectTargets extends InputSyncronizedBase { // leave this in temporarily, there some seriously wrong things going on here // Can be targeted doesn't check if the target is a valid type, only if a card is generally "targetable" if (!card.canBeTargetedBy(sa)) { - showMessage(sa.getSourceCard() + " - Cannot target this card (Shroud? Protection? Restrictions)."); + showMessage(sa.getHostCard() + " - Cannot target this card (Shroud? Protection? Restrictions)."); return; } if (!choices.contains(card)) { if (card.isPlaneswalker() && sa.getApi() == ApiType.DealDamage) { - showMessage(sa.getSourceCard() + " - To deal an opposing Planeswalker direct damage, target its controller and then redirect the damage on resolution."); + showMessage(sa.getHostCard() + " - To deal an opposing Planeswalker direct damage, target its controller and then redirect the damage on resolution."); } else { - showMessage(sa.getSourceCard() + " - The selected card is not a valid choice to be targeted."); + showMessage(sa.getHostCard() + " - The selected card is not a valid choice to be targeted."); } return; } @@ -126,7 +126,7 @@ public final class InputSelectTargets extends InputSyncronizedBase { final int stillToDivide = tgt.getStillToDivide(); int allocatedPortion = 0; // allow allocation only if the max targets isn't reached and there are more candidates - if ((sa.getTargets().getNumTargeted() + 1 < tgt.getMaxTargets(sa.getSourceCard(), sa)) + if ((sa.getTargets().getNumTargeted() + 1 < tgt.getMaxTargets(sa.getHostCard(), sa)) && (tgt.getNumCandidates(sa, true) - 1 > 0) && stillToDivide > 1) { final Integer[] choices = new Integer[stillToDivide]; for (int i = 1; i <= stillToDivide; i++) { @@ -164,7 +164,7 @@ public final class InputSelectTargets extends InputSyncronizedBase { } if (!sa.canTarget(player)) { - showMessage(sa.getSourceCard() + " - Cannot target this player (Hexproof? Protection? Restrictions?)."); + showMessage(sa.getHostCard() + " - Cannot target this player (Hexproof? Protection? Restrictions?)."); return; } @@ -172,7 +172,7 @@ public final class InputSelectTargets extends InputSyncronizedBase { final int stillToDivide = tgt.getStillToDivide(); int allocatedPortion = 0; // allow allocation only if the max targets isn't reached and there are more candidates - if ((sa.getTargets().getNumTargeted() + 1 < tgt.getMaxTargets(sa.getSourceCard(), sa)) && (tgt.getNumCandidates(sa, true) - 1 > 0) && stillToDivide > 1) { + if ((sa.getTargets().getNumTargeted() + 1 < tgt.getMaxTargets(sa.getHostCard(), sa)) && (tgt.getNumCandidates(sa, true) - 1 > 0) && stillToDivide > 1) { final Integer[] choices = new Integer[stillToDivide]; for (int i = 1; i <= stillToDivide; i++) { choices[i - 1] = i; @@ -225,6 +225,6 @@ public final class InputSelectTargets extends InputSyncronizedBase { } private boolean hasAllTargets() { - return tgt.isMaxTargetsChosen(sa.getSourceCard(), sa) || ( tgt.getStillToDivide() == 0 && tgt.isDividedAsYouChoose()); + return tgt.isMaxTargetsChosen(sa.getHostCard(), sa) || ( tgt.getStillToDivide() == 0 && tgt.isDividedAsYouChoose()); } } \ No newline at end of file diff --git a/forge-gui/src/main/java/forge/gui/match/views/VStack.java b/forge-gui/src/main/java/forge/gui/match/views/VStack.java index da5d4bbaf81..67c917bec94 100644 --- a/forge-gui/src/main/java/forge/gui/match/views/VStack.java +++ b/forge-gui/src/main/java/forge/gui/match/views/VStack.java @@ -192,7 +192,7 @@ public enum VStack implements IVDoc { * TODO - we should figure out how to display cards on the stack in * the Picture/Detail panel The problem not is that when a computer * casts a Morph, the real card shows because Picture/Detail checks - * isFaceDown() which will be false on for spell.getSourceCard() on + * isFaceDown() which will be false on for spell.getHostCard() on * the stack. */ @@ -201,7 +201,7 @@ public enum VStack implements IVDoc { @Override public void mouseEntered(final MouseEvent e) { if (!spell.getStackDescription().startsWith("Morph ")) { - CMatchUI.SINGLETON_INSTANCE.setCard(spell.getSpellAbility().getSourceCard()); + CMatchUI.SINGLETON_INSTANCE.setCard(spell.getSpellAbility().getHostCard()); } } }); diff --git a/forge-gui/src/main/java/forge/gui/player/HumanCostDecision.java b/forge-gui/src/main/java/forge/gui/player/HumanCostDecision.java index ef68137fd5d..9ccd9081357 100644 --- a/forge-gui/src/main/java/forge/gui/player/HumanCostDecision.java +++ b/forge-gui/src/main/java/forge/gui/player/HumanCostDecision.java @@ -315,7 +315,7 @@ public class HumanCostDecision extends CostDecisionMakerBase { for (SpellAbilityStackInstance si : game.getStack()) { final Card stC = si.getSourceCard(); final SpellAbility stSA = si.getSpellAbility().getRootAbility(); - if (stC.isValid(cost.getType().split(";"), sa.getActivatingPlayer(), sa.getSourceCard()) && stSA.isSpell()) { + if (stC.isValid(cost.getType().split(";"), sa.getActivatingPlayer(), sa.getHostCard()) && stSA.isSpell()) { saList.add(stSA); if (stC.isCopiedSpell()) { descList.add(stSA.getStackDescription() + " (Copied Spell)"); @@ -336,7 +336,7 @@ public class HumanCostDecision extends CostDecisionMakerBase { if (o != null) { final SpellAbility toExile = saList.get(descList.indexOf(o)); - final Card c = toExile.getSourceCard(); + final Card c = toExile.getHostCard(); saList.remove(toExile); descList.remove(o); @@ -631,7 +631,7 @@ public class HumanCostDecision extends CostDecisionMakerBase { } // Cards to use this branch: Scarscale Ritual, Wandering Mage - each adds only one counter - List typeList = CardLists.getValidCards(player.getCardsIn(ZoneType.Battlefield), cost.getType().split(";"), player, ability.getSourceCard()); + List typeList = CardLists.getValidCards(player.getCardsIn(ZoneType.Battlefield), cost.getType().split(";"), player, ability.getHostCard()); InputSelectCardsFromList inp = new InputSelectCardsFromList(1, 1, typeList); inp.setMessage("Put " + Lang.nounWithAmount(c, cost.getCounter().getName() + " counter") + " on " +cost.getDescriptiveType()); @@ -660,13 +660,13 @@ public class HumanCostDecision extends CostDecisionMakerBase { } } if (cost.payCostFromSource()) { - final Card card = ability.getSourceCard(); + final Card card = ability.getHostCard(); if (card.getController() == player && card.isInPlay()) { return player.getController().confirmPayment(cost, "Return " + card.getName() + " to hand?") ? PaymentDecision.card(card) : null; } } else { - List validCards = CardLists.getValidCards(ability.getActivatingPlayer().getCardsIn(ZoneType.Battlefield), cost.getType().split(";"), ability.getActivatingPlayer(), ability.getSourceCard()); + List validCards = CardLists.getValidCards(ability.getActivatingPlayer().getCardsIn(ZoneType.Battlefield), cost.getType().split(";"), ability.getActivatingPlayer(), ability.getHostCard()); InputSelectCardsFromList inp = new InputSelectCardsFromList(c, c, validCards); inp.setMessage("Return %d " + cost.getType() + " " + cost.getType() + " card(s) to hand"); @@ -726,7 +726,7 @@ public class HumanCostDecision extends CostDecisionMakerBase { Integer num = cost.convertAmount(); List handList = player.getCardsIn(ZoneType.Hand); - handList = CardLists.getValidCards(handList, cost.getType().split(";"), player, ability.getSourceCard()); + handList = CardLists.getValidCards(handList, cost.getType().split(";"), player, ability.getHostCard()); if (num == null) { final String sVar = ability.getSVar(amount); @@ -1002,7 +1002,7 @@ public class HumanCostDecision extends CostDecisionMakerBase { type = type.replace("+withTotalPowerGE" + totalP, ""); } - typeList = CardLists.getValidCards(typeList, type.split(";"), player, ability.getSourceCard()); + typeList = CardLists.getValidCards(typeList, type.split(";"), player, ability.getHostCard()); typeList = CardLists.filter(typeList, Presets.UNTAPPED); if (c == null && !amount.equals("Any")) { final String sVar = ability.getSVar(amount); @@ -1077,7 +1077,7 @@ public class HumanCostDecision extends CostDecisionMakerBase { @Override public PaymentDecision visit(CostUntapType cost) { List typeList = CardLists.getValidCards(player.getGame().getCardsIn(ZoneType.Battlefield), cost.getType().split(";"), - player, ability.getSourceCard()); + player, ability.getHostCard()); typeList = CardLists.filter(typeList, Presets.TAPPED); if (!cost.canUntapSource) { typeList.remove(source); @@ -1108,7 +1108,7 @@ public class HumanCostDecision extends CostDecisionMakerBase { @Override public PaymentDecision visit(CostUnattach cost) { - final Card source = ability.getSourceCard(); + final Card source = ability.getHostCard(); Card cardToUnattach = cost.findCardToUnattach(source, player, ability); if (cardToUnattach != null && player.getController().confirmPayment(cost, "Unattach " + cardToUnattach.getName() + "?")) { diff --git a/forge-gui/src/main/java/forge/gui/player/HumanPlay.java b/forge-gui/src/main/java/forge/gui/player/HumanPlay.java index aca2d4da56e..eb55015e33c 100644 --- a/forge-gui/src/main/java/forge/gui/player/HumanPlay.java +++ b/forge-gui/src/main/java/forge/gui/player/HumanPlay.java @@ -54,12 +54,12 @@ public class HumanPlay { FThreads.assertExecutedByEdt(false); if (sa == Ability.PLAY_LAND_SURROGATE) { - p.playLand(sa.getSourceCard(), false); + p.playLand(sa.getHostCard(), false); return; } sa.setActivatingPlayer(p); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); source.setSplitStateToPlayAbility(sa); sa = chooseOptionalAdditionalCosts(p, sa); @@ -85,7 +85,7 @@ public class HumanPlay { ability = ability.getSubAbility(); } - // System.out.println("Playing:" + sa.getDescription() + " of " + sa.getSourceCard() + " new = " + newAbility); + // System.out.println("Playing:" + sa.getDescription() + " of " + sa.getHostCard() + " new = " + newAbility); if (newAbility) { Cost abCost = sa.getPayCosts() == null ? new Cost("0", sa.isAbility()) : sa.getPayCosts(); CostPayment payment = new CostPayment(abCost, sa); @@ -95,7 +95,7 @@ public class HumanPlay { } else if (payManaCostIfNeeded(p, sa)) { if (sa.isSpell() && !source.isCopiedSpell()) { - sa.setSourceCard(p.getGame().getAction().moveToStack(source)); + sa.setHostCard(p.getGame().getAction().moveToStack(source)); } p.getGame().getStack().add(sa); } @@ -119,7 +119,7 @@ public class HumanPlay { private static boolean payManaCostIfNeeded(final Player p, final SpellAbility sa) { final ManaCostBeingPaid manaCost; - if (sa.getSourceCard().isCopiedSpell() && sa.isSpell()) { + if (sa.getHostCard().isCopiedSpell() && sa.isSpell()) { manaCost = new ManaCostBeingPaid(ManaCost.ZERO); } else { @@ -147,7 +147,7 @@ public class HumanPlay { */ public static final void playSaWithoutPayingManaCost(final Game game, final SpellAbility sa, boolean mayChooseNewTargets) { FThreads.assertExecutedByEdt(false); - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); source.setSplitStateToPlayAbility(sa); @@ -162,9 +162,9 @@ public class HumanPlay { } else { if (sa.isSpell()) { - final Card c = sa.getSourceCard(); + final Card c = sa.getHostCard(); if (!c.isCopiedSpell()) { - sa.setSourceCard(game.getAction().moveToStack(c)); + sa.setHostCard(game.getAction().moveToStack(c)); } } game.getStack().add(sa); @@ -659,7 +659,7 @@ public class HumanPlay { final Card offering = ability.getSacrificedAsOffering(); offering.setUsedToPay(false); if (done) { - ability.getSourceCard().getGame().getAction().sacrifice(offering, ability); + ability.getHostCard().getGame().getAction().sacrifice(offering, ability); } ability.resetSacrificedAsOffering(); } @@ -676,7 +676,7 @@ public class HumanPlay { } public static boolean payManaCost(final ManaCost realCost, final CostPartMana mc, final SpellAbility ability, final Player activator) { - final Card source = ability.getSourceCard(); + final Card source = ability.getHostCard(); ManaCostBeingPaid toPay = new ManaCostBeingPaid(realCost, mc.getRestiction()); boolean xWasBilled = false; @@ -688,7 +688,7 @@ public class HumanPlay { toPay.increaseShard(ManaCostShard.valueOf(xColor), xCost); xWasBilled = true; } - int timesMultikicked = ability.getSourceCard().getKickerMagnitude(); + int timesMultikicked = ability.getHostCard().getKickerMagnitude(); if ( timesMultikicked > 0 && ability.isAnnouncing("Multikicker")) { ManaCost mkCost = ability.getMultiKickerManaCost(); for(int i = 0; i < timesMultikicked; i++) diff --git a/forge-gui/src/main/java/forge/gui/player/HumanPlaySpellAbility.java b/forge-gui/src/main/java/forge/gui/player/HumanPlaySpellAbility.java index 48cf25f2555..72625505e85 100644 --- a/forge-gui/src/main/java/forge/gui/player/HumanPlaySpellAbility.java +++ b/forge-gui/src/main/java/forge/gui/player/HumanPlaySpellAbility.java @@ -61,13 +61,13 @@ public class HumanPlaySpellAbility { Zone fromZone = null; int zonePosition = 0; - final Card c = this.ability.getSourceCard(); + final Card c = this.ability.getHostCard(); if (this.ability instanceof Spell && !c.isCopiedSpell()) { fromZone = game.getZoneOf(c); if (fromZone != null) { zonePosition = fromZone.getCards().indexOf(c); } - this.ability.setSourceCard(game.getAction().moveToStack(c)); + this.ability.setHostCard(game.getAction().moveToStack(c)); } // freeze Stack. No abilities should go onto the stack while I'm filling requirements. @@ -78,7 +78,7 @@ public class HumanPlaySpellAbility { boolean prerequisitesMet = this.announceValuesLikeX() && this.announceType() && (!mayChooseTargets || setupTargets()) // if you can choose targets, then do choose them. - && (isFree || this.payment.payCost(new HumanCostDecision(human, ability, ability.getSourceCard()))); + && (isFree || this.payment.payCost(new HumanCostDecision(human, ability, ability.getHostCard()))); if (!prerequisitesMet) { if (!ability.isTrigger()) { @@ -87,8 +87,8 @@ public class HumanPlaySpellAbility { // if a player failed to play madness cost, move the card to graveyard game.getAction().moveToGraveyard(c); ability.setMadness(false); - } else if (ability.getSourceCard().isBestowed()) { - ability.getSourceCard().unanimateBestow(); + } else if (ability.getHostCard().isBestowed()) { + ability.getHostCard().unanimateBestow(); } } return; @@ -116,7 +116,7 @@ public class HumanPlaySpellAbility { // Skip to paying if parent ability doesn't target and has no subAbilities. // (or trigger case where its already targeted) SpellAbility currentAbility = ability; - final Card source = ability.getSourceCard(); + final Card source = ability.getHostCard(); do { TargetRestrictions tgt = currentAbility.getTargetRestrictions(); if (tgt != null && tgt.doesTarget()) { @@ -141,7 +141,7 @@ public class HumanPlaySpellAbility { TargetRestrictions tg = ability.getTargetRestrictions(); if (tg != null) { ability.resetTargets(); - tg.calculateStillToDivide(ability.getParam("DividedAsYouChoose"), ability.getSourceCard(), ability); + tg.calculateStillToDivide(ability.getParam("DividedAsYouChoose"), ability.getHostCard(), ability); } } @@ -151,7 +151,7 @@ public class HumanPlaySpellAbility { if (fromZone != null) { // and not a copy // add back to where it came from - game.getAction().moveTo(fromZone, ability.getSourceCard(), zonePosition >= 0 ? Integer.valueOf(zonePosition) : null); + game.getAction().moveTo(fromZone, ability.getHostCard(), zonePosition >= 0 ? Integer.valueOf(zonePosition) : null); } clearTargets(ability); @@ -180,10 +180,10 @@ public class HumanPlaySpellAbility { ability.setSVar(varName, value.toString()); if ("Multikicker".equals(varName)) { - ability.getSourceCard().setKickerMagnitude(value); + ability.getHostCard().setKickerMagnitude(value); } else { - ability.getSourceCard().setSVar(varName, value.toString()); + ability.getHostCard().setSVar(varName, value.toString()); } } } @@ -199,14 +199,14 @@ public class HumanPlaySpellAbility { String varName = aVar.trim(); if ("CreatureType".equals(varName)) { String choice = pc.chooseSomeType("Creature", ability, CardType.getCreatureTypes(), new ArrayList()); - ability.getSourceCard().setChosenType(choice); + ability.getHostCard().setChosenType(choice); } if ("ChooseNumber".equals(varName)) { int min = Integer.parseInt(ability.getParam("Min")); int max = Integer.parseInt(ability.getParam("Max")); int i = ability.getActivatingPlayer().getController().chooseNumber(ability, "Choose a number", min, max); - ability.getSourceCard().setChosenNumber(i); + ability.getHostCard().setChosenNumber(i); } } } @@ -220,7 +220,7 @@ public class HumanPlaySpellAbility { // For older abilities that don't setStackDescription set it here final StringBuilder sb = new StringBuilder(); - sb.append(ability.getSourceCard().getName()); + sb.append(ability.getHostCard().getName()); if (ability.getTargetRestrictions() != null) { final Iterable targets = ability.getTargets().getTargets(); if (!Iterables.isEmpty(targets)) { diff --git a/forge-gui/src/main/java/forge/gui/player/PlayerControllerHuman.java b/forge-gui/src/main/java/forge/gui/player/PlayerControllerHuman.java index 7148d2d3bde..d3a8e71b480 100644 --- a/forge-gui/src/main/java/forge/gui/player/PlayerControllerHuman.java +++ b/forge-gui/src/main/java/forge/gui/player/PlayerControllerHuman.java @@ -250,7 +250,7 @@ public class PlayerControllerHuman extends PlayerController { @Override public Integer announceRequirements(SpellAbility ability, String announce, boolean canChooseZero) { int min = canChooseZero ? 0 : 1; - return GuiChoose.getInteger("Choose " + announce + " for " + ability.getSourceCard().getName(), + return GuiChoose.getInteger("Choose " + announce + " for " + ability.getHostCard().getName(), min, Integer.MAX_VALUE, min + 9); } @@ -291,7 +291,7 @@ public class PlayerControllerHuman extends PlayerController { Card singleChosen = chooseSingleEntityForEffect(sourceList, sa, title, isOptional); return singleChosen == null ? Lists.newArrayList() : Lists.newArrayList(singleChosen); } - GuiUtils.setPanelSelection(sa.getSourceCard()); + GuiUtils.setPanelSelection(sa.getHostCard()); // try to use InputSelectCardsFromList when possible boolean cardsAreInMyHandOrBattlefield = true; @@ -311,7 +311,7 @@ public class PlayerControllerHuman extends PlayerController { return Lists.newArrayList(sc.getSelected()); } - return GuiChoose.many(title, "Chosen Cards", min, max, sourceList, sa.getSourceCard()); + return GuiChoose.many(title, "Chosen Cards", min, max, sourceList, sa.getHostCard()); } @Override @@ -373,7 +373,7 @@ public class PlayerControllerHuman extends PlayerController { */ @Override public boolean confirmAction(SpellAbility sa, PlayerActionConfirmMode mode, String message) { - return GuiDialog.confirm(sa.getSourceCard(), message); + return GuiDialog.confirm(sa.getHostCard(), message); } @Override @@ -721,7 +721,7 @@ public class PlayerControllerHuman extends PlayerController { public List chooseSaToActivateFromOpeningHand(List usableFromOpeningHand) { List srcCards = new ArrayList(); for (SpellAbility sa : usableFromOpeningHand) { - srcCards.add(sa.getSourceCard()); + srcCards.add(sa.getHostCard()); } List result = new ArrayList(); if (srcCards.isEmpty()) { @@ -730,7 +730,7 @@ public class PlayerControllerHuman extends PlayerController { List chosen = GuiChoose.many("Choose cards to activate from opening hand and their order", "Activate first", -1, srcCards, null); for (Card c : chosen) { for (SpellAbility sa : usableFromOpeningHand) { - if (sa.getSourceCard() == c) { + if (sa.getHostCard() == c) { result.add(sa); break; } @@ -755,7 +755,7 @@ public class PlayerControllerHuman extends PlayerController { case UntapTimeVault: labels = new String[]{"Untap (and skip this turn)", "Leave tapped"}; break; case PlayOrDraw: labels = new String[]{"Play", "Draw"}; break; } - return GuiDialog.confirm(sa.getSourceCard(), question, defaultVal == null || defaultVal.booleanValue(), labels); + return GuiDialog.confirm(sa.getHostCard(), question, defaultVal == null || defaultVal.booleanValue(), labels); } @Override @@ -765,7 +765,7 @@ public class PlayerControllerHuman extends PlayerController { for (int i = 0; i < results.length; i++) { strResults[i] = labelsSrc[results[i] ? 0 : 1]; } - return GuiChoose.one(sa.getSourceCard().getName() + " - Choose a result", strResults) == labelsSrc[0]; + return GuiChoose.one(sa.getHostCard().getName() + " - Choose a result", strResults) == labelsSrc[0]; } @Override @@ -805,14 +805,14 @@ public class PlayerControllerHuman extends PlayerController { } }; - List> chosen = GuiChoose.getChoices(saSpellskite.getSourceCard().getName(), 1, 1, allTargets, null, fnToString); + List> chosen = GuiChoose.getChoices(saSpellskite.getHostCard().getName(), 1, 1, allTargets, null, fnToString); return Iterables.getFirst(chosen, null); } @Override public void notifyOfValue(SpellAbility sa, GameObject realtedTarget, String value) { String message = formatNotificationMessage(sa, realtedTarget, value); - GuiDialog.message(message, sa.getSourceCard() == null ? "" : sa.getSourceCard().getName()); + GuiDialog.message(message, sa.getHostCard() == null ? "" : sa.getHostCard().getName()); } private String formatMessage(String message, Object related) { @@ -824,7 +824,7 @@ public class PlayerControllerHuman extends PlayerController { // These are not much related to PlayerController private String formatNotificationMessage(SpellAbility sa, GameObject target, String value) { - if (sa.getApi() == null || sa.getSourceCard() == null) { + if (sa.getApi() == null || sa.getHostCard() == null) { return ("Result: " + value); } switch(sa.getApi()) { @@ -840,7 +840,7 @@ public class PlayerControllerHuman extends PlayerController { String choser = StringUtils.capitalize(mayBeYou(target)); return String.format("%s %s protection from %s", choser, Lang.joinVerb(choser, "choose"), value); default: - return String.format("%s effect's value for %s is %s", sa.getSourceCard().getName(), mayBeYou(target), value); + return String.format("%s effect's value for %s is %s", sa.getHostCard().getName(), mayBeYou(target), value); } } @@ -856,7 +856,7 @@ public class PlayerControllerHuman extends PlayerController { @Override public List chooseModeForAbility(SpellAbility sa, int min, int num) { List choices = CharmEffect.makePossibleOptions(sa); - String modeTitle = String.format("%s activated %s - Choose a mode", sa.getActivatingPlayer(), sa.getSourceCard()); + String modeTitle = String.format("%s activated %s - Choose a mode", sa.getActivatingPlayer(), sa.getHostCard()); List chosen = new ArrayList(); for (int i = 0; i < num; i++) { AbilitySub a; @@ -887,7 +887,7 @@ public class PlayerControllerHuman extends PlayerController { switch (cntColors) { case 0: return 0; case 1: return colors.getColor(); - default: return chooseColorCommon(message, sa == null ? null : sa.getSourceCard(), colors, false); + default: return chooseColorCommon(message, sa == null ? null : sa.getHostCard(), colors, false); } } @@ -955,7 +955,7 @@ public class PlayerControllerHuman extends PlayerController { @Override public boolean payCostToPreventEffect(Cost cost, SpellAbility sa, boolean alreadyPaid, List allPayers) { // if it's paid by the AI already the human can pay, but it won't change anything - final Card source = sa.getSourceCard(); + final Card source = sa.getHostCard(); return HumanPlay.payCostDuringAbilityResolve(player, source, cost, sa, null); } @@ -1010,7 +1010,7 @@ public class PlayerControllerHuman extends PlayerController { final String p1Str = String.format("Pile 1 (%s cards)", pile1.size()); final String p2Str = String.format("Pile 2 (%s cards)", pile2.size()); final String[] possibleValues = { p1Str , p2Str }; - return GuiDialog.confirm(sa.getSourceCard(), "Choose a Pile", possibleValues); + return GuiDialog.confirm(sa.getHostCard(), "Choose a Pile", possibleValues); } else { final Card[] disp = new Card[pile1.size() + pile2.size() + 2]; disp[0] = new Card(-1); @@ -1081,9 +1081,9 @@ public class PlayerControllerHuman extends PlayerController { public String chooseCardName(SpellAbility sa, Predicate cpp, String valid, String message) { PaperCard cp = null; while(true) { - cp = chooseSinglePaperCard(sa, message, cpp, sa.getSourceCard().getName()); + cp = chooseSinglePaperCard(sa, message, cpp, sa.getHostCard().getName()); Card instanceForPlayer = Card.fromPaperCard(cp, player); // the Card instance for test needs a game to be tested - if (instanceForPlayer.isValid(valid, sa.getSourceCard().getController(), sa.getSourceCard())) + if (instanceForPlayer.isValid(valid, sa.getHostCard().getController(), sa.getHostCard())) return cp.getName(); } } diff --git a/forge-gui/src/main/java/forge/gui/player/TargetSelection.java b/forge-gui/src/main/java/forge/gui/player/TargetSelection.java index 304017350c8..0534dee7afd 100644 --- a/forge-gui/src/main/java/forge/gui/player/TargetSelection.java +++ b/forge-gui/src/main/java/forge/gui/player/TargetSelection.java @@ -72,8 +72,8 @@ public class TargetSelection { throw new RuntimeException("TargetSelection.chooseTargets called for ability that does not target - " + ability); // Number of targets is explicitly set only if spell is being redirected (ex. Swerve or Redirect) - final int minTargets = numTargets != null ? numTargets.intValue() : tgt.getMinTargets(ability.getSourceCard(), ability); - final int maxTargets = numTargets != null ? numTargets.intValue() : tgt.getMaxTargets(ability.getSourceCard(), ability); + final int minTargets = numTargets != null ? numTargets.intValue() : tgt.getMinTargets(ability.getHostCard(), ability); + final int maxTargets = numTargets != null ? numTargets.intValue() : tgt.getMaxTargets(ability.getHostCard(), ability); final int numTargeted = ability.getTargets().getNumTargeted(); boolean hasEnoughTargets = minTargets == 0 || numTargeted >= minTargets; @@ -140,14 +140,14 @@ public class TargetSelection { final List zone = tgt.getZone(); final boolean canTgtStack = zone.contains(ZoneType.Stack); - List validCards = CardLists.getValidCards(game.getCardsIn(zone), tgt.getValidTgts(), this.ability.getActivatingPlayer(), this.ability.getSourceCard()); + List validCards = CardLists.getValidCards(game.getCardsIn(zone), tgt.getValidTgts(), this.ability.getActivatingPlayer(), this.ability.getHostCard()); List choices = CardLists.getTargetableCards(validCards, this.ability); if (canTgtStack) { // Since getTargetableCards doesn't have additional checks if one of the Zones is stack // Remove the activating card from targeting itself if its on the Stack - Card activatingCard = ability.getSourceCard(); + Card activatingCard = ability.getHostCard(); if (activatingCard.isInZone(ZoneType.Stack)) { - choices.remove(ability.getSourceCard()); + choices.remove(ability.getHostCard()); } } List targetedObjects = this.ability.getUniqueTargets(); @@ -302,7 +302,7 @@ public class TargetSelection { } final String msgDone = "[FINISH TARGETING]"; - if (this.getTgt().isMinTargetsChosen(this.ability.getSourceCard(), this.ability)) { + if (this.getTgt().isMinTargetsChosen(this.ability.getHostCard(), this.ability)) { // is there a more elegant way of doing this? choicesFiltered.add(msgDone); } @@ -353,12 +353,12 @@ public class TargetSelection { } while(!bTargetingDone) { - if (tgt.isMaxTargetsChosen(this.ability.getSourceCard(), this.ability)) { + if (tgt.isMaxTargetsChosen(this.ability.getHostCard(), this.ability)) { bTargetingDone = true; return true; } - if (!selectOptions.contains("[FINISH TARGETING]") && tgt.isMinTargetsChosen(this.ability.getSourceCard(), this.ability)) { + if (!selectOptions.contains("[FINISH TARGETING]") && tgt.isMinTargetsChosen(this.ability.getHostCard(), this.ability)) { selectOptions.add("[FINISH TARGETING]"); } diff --git a/forge-gui/src/main/java/forge/sound/EventVisualizer.java b/forge-gui/src/main/java/forge/sound/EventVisualizer.java index 548e72f3c03..becb7f3d250 100644 --- a/forge-gui/src/main/java/forge/sound/EventVisualizer.java +++ b/forge-gui/src/main/java/forge/sound/EventVisualizer.java @@ -73,7 +73,7 @@ public class EventVisualizer extends IGameEventVisitor.Base imp return null; } - Card source = evt.spell.getSourceCard(); + Card source = evt.spell.getHostCard(); if (evt.spell.isSpell()) { // if there's a specific effect for this particular card, play it and // we're done. @@ -171,7 +171,7 @@ public class EventVisualizer extends IGameEventVisitor.Base imp Card c = null; if (evt instanceof GameEventSpellResolved) { - c = ((GameEventSpellResolved) evt).spell.getSourceCard(); + c = ((GameEventSpellResolved) evt).spell.getHostCard(); } else if (evt instanceof GameEventLandPlayed) { c = ((GameEventLandPlayed) evt).land; } diff --git a/forge-gui/src/test/java/forge/gamesimulationtests/util/PlayerControllerForTests.java b/forge-gui/src/test/java/forge/gamesimulationtests/util/PlayerControllerForTests.java index d3d9d682f64..e72a50377a6 100644 --- a/forge-gui/src/test/java/forge/gamesimulationtests/util/PlayerControllerForTests.java +++ b/forge-gui/src/test/java/forge/gamesimulationtests/util/PlayerControllerForTests.java @@ -95,9 +95,9 @@ public class PlayerControllerForTests extends PlayerController { return; } if ( - (effectSA.getSourceCard().getName().equals("Nefarious Lich") && effectSA.getApi().getAi() instanceof DrawAi) || - (effectSA.getSourceCard().getName().equals("Laboratory Maniac") && effectSA.getApi().getAi() instanceof GameWinAi) || - (effectSA.getSourceCard().getName().equals("Nefarious Lich") && effectSA.getApi().getAi() instanceof ChangeZoneAi) + (effectSA.getHostCard().getName().equals("Nefarious Lich") && effectSA.getApi().getAi() instanceof DrawAi) || + (effectSA.getHostCard().getName().equals("Laboratory Maniac") && effectSA.getApi().getAi() instanceof GameWinAi) || + (effectSA.getHostCard().getName().equals("Nefarious Lich") && effectSA.getApi().getAi() instanceof ChangeZoneAi) ) {//test_104_3f_if_a_player_would_win_and_lose_simultaneously_he_loses HumanPlay.playSpellAbilityNoStack(player, effectSA, !mayChoseNewTargets); return; @@ -478,7 +478,7 @@ public class PlayerControllerForTests extends PlayerController { @Override public void orderAndPlaySimultaneousSa(List activePlayerSAs) { for (final SpellAbility sa : activePlayerSAs) { - prepareSingleSa(sa.getSourceCard(),sa,true); + prepareSingleSa(sa.getHostCard(),sa,true); ComputerUtil.playStack(sa, player, game); } } diff --git a/forge-gui/src/test/java/forge/gamesimulationtests/util/playeractions/CastSpellFromHandAction.java b/forge-gui/src/test/java/forge/gamesimulationtests/util/playeractions/CastSpellFromHandAction.java index 6dad052bfc3..14f3a6e4a0f 100644 --- a/forge-gui/src/test/java/forge/gamesimulationtests/util/playeractions/CastSpellFromHandAction.java +++ b/forge-gui/src/test/java/forge/gamesimulationtests/util/playeractions/CastSpellFromHandAction.java @@ -34,7 +34,7 @@ public class CastSpellFromHandAction extends BasePlayerAction { SpellAbility spellAbility = cardToPlay.getSpells().get( 0 ); spellAbility.setActivatingPlayer( player ); - spellAbility.setSourceCard( game.getAction().moveToStack( cardToPlay ) ); + spellAbility.setHostCard(game.getAction().moveToStack(cardToPlay)); spellAbility.getTargets().add( player );//TODO game.getStack().freezeStack(); game.getStack().addAndUnfreeze( spellAbility );