mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 19:28:01 +00:00
- AF Pump can now pump players.
- Added the player keyword "Skip your next draw step.". - Added Fatigue.
This commit is contained in:
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -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
|
||||||
|
|||||||
11
res/cardsfolder/f/fatigue.txt
Normal file
11
res/cardsfolder/f/fatigue.txt
Normal 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
|
||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user