mirror of
https://github.com/magefree/mage.git
synced 2026-01-25 04:39:18 -08:00
Target refactoring. Fixed Issue 273.
This commit is contained in:
parent
c3a5910976
commit
82dcb53cb9
52 changed files with 63 additions and 55 deletions
|
|
@ -127,7 +127,7 @@ class BackFromTheBrinkCost extends CostImpl<BackFromTheBrinkCost> {
|
|||
|
||||
@Override
|
||||
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) {
|
||||
if (targets.choose(Outcome.Exile, controllerId, game)) {
|
||||
if (targets.choose(Outcome.Exile, controllerId, sourceId, game)) {
|
||||
Player player = game.getPlayer(controllerId);
|
||||
if (player != null) {
|
||||
Card card = player.getGraveyard().get(targets.getFirstTarget(), game);
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ class CivilizedScholarEffect extends OneShotEffect<CivilizedScholarEffect> {
|
|||
if (player != null) {
|
||||
player.drawCards(1, game);
|
||||
TargetDiscard target = new TargetDiscard(player.getId());
|
||||
player.choose(Constants.Outcome.Discard, target, game);
|
||||
player.choose(Constants.Outcome.Discard, target, source.getSourceId(), game);
|
||||
Card card = player.getHand().get(target.getFirstTarget(), game);
|
||||
if (card != null) {
|
||||
player.discard(card, source, game);
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ class DivineReckoningEffect extends OneShotEffect<DivineReckoningEffect> {
|
|||
Target target = new TargetControlledPermanent(1, 1, filter, false);
|
||||
if (target.canChoose(player.getId(), game)) {
|
||||
while (!target.isChosen() && target.canChoose(player.getId(), game)) {
|
||||
player.choose(Constants.Outcome.Benefit, target, game);
|
||||
player.choose(Constants.Outcome.Benefit, target, source.getSourceId(), game);
|
||||
}
|
||||
Permanent permanent = game.getPermanent(target.getFirstTarget());
|
||||
if (permanent != null) {
|
||||
|
|
|
|||
|
|
@ -163,7 +163,7 @@ class GarrukTheVeilCursedEffect extends OneShotEffect<GarrukTheVeilCursedEffect>
|
|||
boolean sacrificed = false;
|
||||
if (target.canChoose(player.getId(), game)) {
|
||||
while (!target.isChosen() && target.canChoose(player.getId(), game)) {
|
||||
player.choose(Constants.Outcome.Sacrifice, target, game);
|
||||
player.choose(Constants.Outcome.Sacrifice, target, source.getSourceId(), game);
|
||||
}
|
||||
|
||||
for (int idx = 0; idx < target.getTargets().size(); idx++) {
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ class HarvestPyreCost extends CostImpl<HarvestPyreCost> implements VariableCost
|
|||
Player player = game.getPlayer(controllerId);
|
||||
while (true) {
|
||||
target.clearChosen();
|
||||
if (target.choose(Outcome.Exile, controllerId, game)) {
|
||||
if (target.choose(Outcome.Exile, controllerId, sourceId, game)) {
|
||||
Card card = player.getGraveyard().get(target.getFirstTarget(), game);
|
||||
if (card != null) {
|
||||
player.getGraveyard().remove(card);
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ class StitchersApprenticeEffect extends OneShotEffect<StitchersApprenticeEffect>
|
|||
if (player != null) {
|
||||
Target target = new TargetControlledPermanent(new FilterControlledCreaturePermanent());
|
||||
|
||||
if (target.canChoose(player.getId(), game) && player.choose(Outcome.Sacrifice, target, game)) {
|
||||
if (target.canChoose(player.getId(), game) && player.choose(Outcome.Sacrifice, target, source.getSourceId(), game)) {
|
||||
Permanent permanent = game.getPermanent(target.getFirstTarget());
|
||||
if (permanent != null) {
|
||||
return permanent.sacrifice(source.getSourceId(), game);
|
||||
|
|
|
|||
|
|
@ -96,7 +96,7 @@ class TributeToHungerEffect extends OneShotEffect<TributeToHungerEffect> {
|
|||
TargetControlledPermanent target = new TargetControlledPermanent(1, 1, filter, false);
|
||||
|
||||
if (target.canChoose(player.getId(), game)) {
|
||||
player.choose(Outcome.Sacrifice, target, game);
|
||||
player.choose(Outcome.Sacrifice, target, source.getSourceId(), game);
|
||||
|
||||
Permanent permanent = game.getPermanent(target.getFirstTarget());
|
||||
if (permanent != null) {
|
||||
|
|
|
|||
|
|
@ -136,7 +136,7 @@ class PhylacteryLichEffect extends OneShotEffect<PhylacteryLichEffect> {
|
|||
TargetControlledPermanent target = new TargetControlledPermanent(filter);
|
||||
if (target.canChoose(source.getControllerId(), game)) {
|
||||
target.setRequired(true);
|
||||
if (player.choose(Outcome.Neutral, target, game)) {
|
||||
if (player.choose(Outcome.Neutral, target, source.getSourceId(), game)) {
|
||||
Permanent permanent = game.getPermanent(target.getFirstTarget());
|
||||
if (permanent != null) {
|
||||
permanent.addCounters(new Counter("phylactery"), game);
|
||||
|
|
|
|||
|
|
@ -98,7 +98,7 @@ class PutCreatureOnBattlefieldEffect extends OneShotEffect<PutCreatureOnBattlefi
|
|||
}
|
||||
|
||||
TargetCardInHand target = new TargetCardInHand(new FilterCreatureCard());
|
||||
if (player.choose(Outcome.PutCreatureInPlay, target, game)) {
|
||||
if (player.choose(Outcome.PutCreatureInPlay, target, source.getSourceId(), game)) {
|
||||
Card card = game.getCard(target.getFirstTarget());
|
||||
if (card != null) {
|
||||
player.removeFromHand(card, game);
|
||||
|
|
|
|||
|
|
@ -136,7 +136,7 @@ class SmallpoxEffect extends OneShotEffect<SmallpoxEffect> {
|
|||
Target target = new TargetControlledPermanent(1, 1, filter, false);
|
||||
if (target.canChoose(player.getId(), game)) {
|
||||
while (!target.isChosen() && target.canChoose(player.getId(), game)) {
|
||||
player.choose(Constants.Outcome.Sacrifice, target, game);
|
||||
player.choose(Constants.Outcome.Sacrifice, target, source.getSourceId(), game);
|
||||
}
|
||||
|
||||
for ( int idx = 0; idx < target.getTargets().size(); idx++) {
|
||||
|
|
|
|||
|
|
@ -96,7 +96,7 @@ class PreeminentCaptainEffect extends OneShotEffect<PreeminentCaptainEffect> {
|
|||
public boolean apply(Game game, Ability source) {
|
||||
Player player = game.getPlayer(source.getControllerId());
|
||||
TargetCardInHand target = new TargetCardInHand(new FilterSoldierCard());
|
||||
if (target.choose(getOutcome(), player.getId(), game)) {
|
||||
if (target.choose(getOutcome(), player.getId(), source.getSourceId(), game)) {
|
||||
if (target.getTargets().size() > 0) {
|
||||
UUID cardId = target.getFirstTarget();
|
||||
Card card = player.getHand().get(cardId, game);
|
||||
|
|
@ -108,7 +108,7 @@ class PreeminentCaptainEffect extends OneShotEffect<PreeminentCaptainEffect> {
|
|||
permanent.setTapped(true);
|
||||
TargetDefender def = new TargetDefender(game
|
||||
.getCombat().getDefenders(), player.getId());
|
||||
if (def.choose(getOutcome(), player.getId(), game)) {
|
||||
if (def.choose(getOutcome(), player.getId(), source.getSourceId(), game)) {
|
||||
// TODO -> If only one option, don't ask, as for
|
||||
// normal attacking.
|
||||
if (def.getTargets().size() > 0) {
|
||||
|
|
|
|||
|
|
@ -95,7 +95,7 @@ class ConsumingVaporsEffect extends OneShotEffect<ConsumingVaporsEffect> {
|
|||
//A spell or ability could have removed the only legal target this player
|
||||
//had, if thats the case this ability should fizzle.
|
||||
if (target.canChoose(player.getId(), game)) {
|
||||
player.choose(Outcome.Sacrifice, target, game);
|
||||
player.choose(Outcome.Sacrifice, target, source.getSourceId(), game);
|
||||
|
||||
Permanent permanent = game.getPermanent(target.getFirstTarget());
|
||||
if ( permanent != null ) {
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ class AuriokReplicaEffect extends PreventionEffectImpl<AuriokReplicaEffect> {
|
|||
|
||||
@Override
|
||||
public void init(Ability source, Game game) {
|
||||
this.target.choose(Outcome.PreventDamage, source.getControllerId(), game);
|
||||
this.target.choose(Outcome.PreventDamage, source.getControllerId(), source.getSourceId(), game);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ class GlintHawkEffect extends OneShotEffect<GlintHawkEffect> {
|
|||
TargetPermanent target = new TargetPermanent(1, 1, filter, false);
|
||||
|
||||
if (target.canChoose(player.getId(), game)) {
|
||||
player.choose(Outcome.Sacrifice, target, game);
|
||||
player.choose(Outcome.Sacrifice, target, source.getSourceId(), game);
|
||||
Permanent permanent = game.getPermanent(target.getFirstTarget());
|
||||
|
||||
if ( permanent != null ) {
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ class PsychicMiasmaEffect1 extends OneShotEffect<PsychicMiasmaEffect1> {
|
|||
Player player = game.getPlayer(targetPointer.getFirst(source));
|
||||
if (player != null) {
|
||||
TargetDiscard target = new TargetDiscard(player.getId());
|
||||
player.choose(Outcome.Discard, target, game);
|
||||
player.choose(Outcome.Discard, target, source.getSourceId(), game);
|
||||
Card card = player.getHand().get(target.getFirstTarget(), game);
|
||||
if (card != null) {
|
||||
player.discard(card, source, game);
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ class ClarionUltimatumEffect extends OneShotEffect<ClarionUltimatumEffect> {
|
|||
|
||||
TargetControlledPermanent permanentsTarget = new TargetControlledPermanent(Math.min(permanentsCount, 5));
|
||||
permanentsTarget.setRequired(true);
|
||||
player.choose(Outcome.Benefit, permanentsTarget, game);
|
||||
player.choose(Outcome.Benefit, permanentsTarget, source.getSourceId(), game);
|
||||
|
||||
List<Card> chosenCards = new ArrayList<Card>();
|
||||
List<String> namesFiltered = new ArrayList<String>();
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ class EldraziMonumentEffect extends OneShotEffect<EldraziMonumentEffect> {
|
|||
target.setRequired(true);
|
||||
Player player = game.getPlayer(source.getControllerId());
|
||||
if (target.canChoose(source.getControllerId(), game)) {
|
||||
player.choose(this.outcome, target, game);
|
||||
player.choose(this.outcome, target, source.getSourceId(), game);
|
||||
Permanent permanent = game.getPermanent(target.getFirstTarget());
|
||||
if (permanent != null) {
|
||||
return permanent.sacrifice(source.getSourceId(), game);
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ class QuestForTheHolyRelicEffect extends OneShotEffect<QuestForTheHolyRelicEffec
|
|||
Permanent equipment = game.getPermanent(card.getId());
|
||||
|
||||
Target targetCreature = new TargetControlledCreaturePermanent();
|
||||
if (equipment != null && player.choose(Outcome.BoostCreature, targetCreature, game)) {
|
||||
if (equipment != null && player.choose(Outcome.BoostCreature, targetCreature, source.getSourceId(), game)) {
|
||||
Permanent permanent = game.getPermanent(targetCreature.getFirstTarget());
|
||||
permanent.addAttachment(equipment.getId(), game);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -131,7 +131,7 @@ class WarrenInstigatorEffect extends OneShotEffect<WarrenInstigatorEffect> {
|
|||
FilterCreatureCard filter = new FilterCreatureCard("Goblin creature card from your hand");
|
||||
filter.getSubtype().add("Goblin");
|
||||
TargetCardInHand target = new TargetCardInHand(filter);
|
||||
if (player.choose(Outcome.PutCreatureInPlay, target, game)) {
|
||||
if (player.choose(Outcome.PutCreatureInPlay, target, source.getSourceId(), game)) {
|
||||
Card card = game.getCard(target.getFirstTarget());
|
||||
if (card != null) {
|
||||
player.removeFromHand(card, game);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue