Target refactoring. Fixed Issue 273.

This commit is contained in:
magenoxx 2011-10-08 12:46:34 +04:00
parent c3a5910976
commit 82dcb53cb9
52 changed files with 63 additions and 55 deletions

View file

@ -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);

View file

@ -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);

View file

@ -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) {

View file

@ -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++) {

View file

@ -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);

View file

@ -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);

View file

@ -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) {

View file

@ -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);

View file

@ -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);

View file

@ -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++) {

View file

@ -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) {

View file

@ -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 ) {

View file

@ -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

View file

@ -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 ) {

View file

@ -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);

View file

@ -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>();

View file

@ -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);

View file

@ -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);
}

View file

@ -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);