- AF Pump can now pump players.

- Added the player keyword "Skip your next draw step.".
- Added Fatigue.
This commit is contained in:
Sloth
2012-02-06 09:28:32 +00:00
parent ba7515e8f5
commit 5fa38a1017
4 changed files with 72 additions and 6 deletions

1
.gitattributes vendored
View File

@@ -2847,6 +2847,7 @@ res/cardsfolder/f/fatal_frenzy.txt svneol=native#text/plain
res/cardsfolder/f/fatal_mutation.txt svneol=native#text/plain res/cardsfolder/f/fatal_mutation.txt svneol=native#text/plain
res/cardsfolder/f/fatestitcher.txt svneol=native#text/plain res/cardsfolder/f/fatestitcher.txt svneol=native#text/plain
res/cardsfolder/f/fathom_seer.txt svneol=native#text/plain res/cardsfolder/f/fathom_seer.txt svneol=native#text/plain
res/cardsfolder/f/fatigue.txt -text
res/cardsfolder/f/fault_line.txt svneol=native#text/plain res/cardsfolder/f/fault_line.txt svneol=native#text/plain
res/cardsfolder/f/fault_riders.txt svneol=native#text/plain res/cardsfolder/f/fault_riders.txt svneol=native#text/plain
res/cardsfolder/f/faultgrinder.txt svneol=native#text/plain res/cardsfolder/f/faultgrinder.txt svneol=native#text/plain

View File

@@ -0,0 +1,11 @@
Name:Fatigue
ManaCost:1 U
Types:Instant
Text:no text
A:SP$ Pump | Cost$ 1 U | ValidTgts$ Player | TgtPrompt$ Select target player | KW$ Skip your next draw step. | Permanent$ True | SpellDescription$ Target player skips his or her next draw step.
SVar:RemAIDeck:True
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/fatigue.jpg
SetInfo:UDS|Common|http://magiccards.info/scans/en/ud/32.jpg
Oracle:Target player skips his or her next draw step.
End

View File

@@ -178,6 +178,11 @@ public class PhaseUtil {
return true; return true;
} }
if (player.hasKeyword("Skip your next draw step.")) {
player.removeKeyword("Skip your next draw step.");
return true;
}
if (player.hasKeyword("Skip your draw step.")) { if (player.hasKeyword("Skip your draw step.")) {
return true; return true;
} }

View File

@@ -32,6 +32,7 @@ import forge.Command;
import forge.ComputerUtil; import forge.ComputerUtil;
import forge.Constant; import forge.Constant;
import forge.Constant.Zone; import forge.Constant.Zone;
import forge.GameEntity;
import forge.Player; import forge.Player;
import forge.card.cardfactory.CardFactoryUtil; import forge.card.cardfactory.CardFactoryUtil;
import forge.card.cost.Cost; import forge.card.cost.Cost;
@@ -837,16 +838,18 @@ public class AbilityFactoryPump {
// happening // happening
final StringBuilder sb = new StringBuilder(); final StringBuilder sb = new StringBuilder();
final String name = af.getHostCard().getName(); final String name = af.getHostCard().getName();
ArrayList<GameEntity> tgts = new ArrayList<GameEntity>();
ArrayList<Card> tgtCards;
final Target tgt = sa.getTarget(); final Target tgt = sa.getTarget();
if (tgt != null) { if (tgt != null) {
tgtCards = tgt.getTargetCards(); tgts.addAll(tgt.getTargetCards());
tgts.addAll(tgt.getTargetPlayers());
} else { } else {
tgtCards = AbilityFactory.getDefinedCards(sa.getSourceCard(), this.params.get("Defined"), sa); tgts.addAll(AbilityFactory.getDefinedCards(this.hostCard, this.params.get("Defined"), sa));
tgts.addAll(AbilityFactory.getDefinedPlayers(this.hostCard, this.params.get("Defined"), sa));
} }
if (tgtCards.size() > 0) { if (tgts.size() > 0) {
if (sa instanceof AbilitySub) { if (sa instanceof AbilitySub) {
sb.append(" "); sb.append(" ");
@@ -854,14 +857,14 @@ public class AbilityFactoryPump {
sb.append(name).append(" - "); sb.append(name).append(" - ");
} }
for (final Card c : tgtCards) { for (final GameEntity c : tgts) {
sb.append(c.getName()).append(" "); sb.append(c.getName()).append(" ");
} }
if (af.getMapParams().containsKey("Radiance")) { if (af.getMapParams().containsKey("Radiance")) {
sb.append(" and each other ").append(af.getMapParams().get("ValidTgts")) sb.append(" and each other ").append(af.getMapParams().get("ValidTgts"))
.append(" that shares a color with "); .append(" that shares a color with ");
if (tgtCards.size() > 1) { if (tgts.size() > 1) {
sb.append("them "); sb.append("them ");
} else { } else {
sb.append("it "); sb.append("it ");
@@ -916,10 +919,13 @@ public class AbilityFactoryPump {
ArrayList<Card> tgtCards; ArrayList<Card> tgtCards;
final ArrayList<Card> untargetedCards = new ArrayList<Card>(); final ArrayList<Card> untargetedCards = new ArrayList<Card>();
final Target tgt = sa.getTarget(); final Target tgt = sa.getTarget();
ArrayList<Player> tgtPlayers = new ArrayList<Player>();
if (tgt != null) { if (tgt != null) {
tgtCards = tgt.getTargetCards(); tgtCards = tgt.getTargetCards();
tgtPlayers = tgt.getTargetPlayers();
} else { } else {
tgtCards = AbilityFactory.getDefinedCards(this.hostCard, this.params.get("Defined"), sa); tgtCards = AbilityFactory.getDefinedCards(this.hostCard, this.params.get("Defined"), sa);
tgtPlayers = AbilityFactory.getDefinedPlayers(this.hostCard, this.params.get("Defined"), sa);
} }
if (this.params.containsKey("Radiance")) { if (this.params.containsKey("Radiance")) {
@@ -958,6 +964,14 @@ public class AbilityFactoryPump {
this.applyPump(sa, tgtC); this.applyPump(sa, tgtC);
} }
for (Player p : tgtPlayers) {
if (!p.canBeTargetedBy(sa)) {
continue;
}
this.applyPump(sa, p);
}
} // pumpResolve() } // pumpResolve()
private void applyPump(final SpellAbility sa, final Card applyTo) { private void applyPump(final SpellAbility sa, final Card applyTo) {
@@ -1002,6 +1016,41 @@ public class AbilityFactoryPump {
} }
} }
private void applyPump(final SpellAbility sa, final Player p) {
for (int i = 0; i < this.keywords.size(); i++) {
if (!this.keywords.get(i).equals("none")) {
p.addKeyword(this.keywords.get(i));
}
}
if (!this.params.containsKey("Permanent")) {
// If not Permanent, remove Pumped at EOT
final Command untilEOT = new Command() {
private static final long serialVersionUID = -32453460L;
@Override
public void execute() {
if (AbilityFactoryPump.this.keywords.size() > 0) {
for (int i = 0; i < AbilityFactoryPump.this.keywords.size(); i++) {
if (!AbilityFactoryPump.this.keywords.get(i).equals("none")) {
p.removeKeyword(AbilityFactoryPump.this.keywords.get(i));
}
}
}
}
};
if (this.params.containsKey("UntilEndOfCombat")) {
AllZone.getEndOfCombat().addUntil(untilEOT);
} else if (this.params.containsKey("UntilYourNextUpkeep")) {
AllZone.getUpkeep().addUntil(sa.getActivatingPlayer(), untilEOT);
} else {
AllZone.getEndOfTurn().addUntil(untilEOT);
}
}
}
// /////////////////////////////////// // ///////////////////////////////////
// //
// PumpAll // PumpAll