mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 20:28:00 +00:00
name change of AF Reveal -> Dig; add Ancient Stirrings (from Rise of the Eldrazi); tweak a few parameters before documenting.
This commit is contained in:
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -280,6 +280,7 @@ res/cardsfolder/ancient_runes.txt -text svneol=native#text/plain
|
|||||||
res/cardsfolder/ancient_silverback.txt -text svneol=native#text/plain
|
res/cardsfolder/ancient_silverback.txt -text svneol=native#text/plain
|
||||||
res/cardsfolder/ancient_spider.txt -text svneol=native#text/plain
|
res/cardsfolder/ancient_spider.txt -text svneol=native#text/plain
|
||||||
res/cardsfolder/ancient_spring.txt -text svneol=native#text/plain
|
res/cardsfolder/ancient_spring.txt -text svneol=native#text/plain
|
||||||
|
res/cardsfolder/ancient_stirrings.txt -text svneol=native#text/plain
|
||||||
res/cardsfolder/ancient_tomb.txt -text svneol=native#text/plain
|
res/cardsfolder/ancient_tomb.txt -text svneol=native#text/plain
|
||||||
res/cardsfolder/andradite_leech.txt -text svneol=native#text/plain
|
res/cardsfolder/andradite_leech.txt -text svneol=native#text/plain
|
||||||
res/cardsfolder/angel_of_despair.txt -text svneol=native#text/plain
|
res/cardsfolder/angel_of_despair.txt -text svneol=native#text/plain
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ Name:Ancestral Memories
|
|||||||
ManaCost:2 U U U
|
ManaCost:2 U U U
|
||||||
Types:Sorcery
|
Types:Sorcery
|
||||||
Text:no text
|
Text:no text
|
||||||
A:SP$Reveal | Cost$ 2 U U U | Reveal$ 7 | ChangeNum$ 2 | DestinationZone2$ Graveyard | SpellDescription$ Look at the top seven cards of your library. Put two of them into your hand and the rest into your graveyard.
|
A:SP$Dig | Cost$ 2 U U U | DigNum$ 7 | ChangeNum$ 2 | DestinationZone2$ Graveyard | SpellDescription$ Look at the top seven cards of your library. Put two of them into your hand and the rest into your graveyard.
|
||||||
SVar:RemAIDeck:True
|
SVar:RemAIDeck:True
|
||||||
SVar:Rarity:Rare
|
SVar:Rarity:Rare
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/ancestral_memories.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/ancestral_memories.jpg
|
||||||
|
|||||||
9
res/cardsfolder/ancient_stirrings.txt
Normal file
9
res/cardsfolder/ancient_stirrings.txt
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
Name:Ancient Stirrings
|
||||||
|
ManaCost:G
|
||||||
|
Types:Sorcery
|
||||||
|
Text:no text
|
||||||
|
A:SP$Dig | Cost$ G | DigNum$ 5 | ChangeNum$ 1 | Optional$ True | ChangeValid$ Card.Colorless | SpellDescription$ Look at the top five cards of your library. You may reveal a colorless card from among them and put it into your hand. Then put the rest on the bottom of your library in any order. (Cards with no colored mana in their mana costs are colorless. Lands are also colorless.)
|
||||||
|
SVar:RemAIDeck:True
|
||||||
|
SVar:Rarity:Common
|
||||||
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/ancient_stirrings.jpg
|
||||||
|
End
|
||||||
@@ -2,7 +2,7 @@ Name:Impulse
|
|||||||
ManaCost:1 U
|
ManaCost:1 U
|
||||||
Types:Instant
|
Types:Instant
|
||||||
Text:no text
|
Text:no text
|
||||||
A:SP$Reveal | Cost$ 1 U | Reveal$ 4 | ChangeNum$ 1 | SpellDescription$ Look at the top four cards of your library. Put one of them into your hand and the rest on the bottom of your library in any order.
|
A:SP$Dig | Cost$ 1 U | DigNum$ 4 | ChangeNum$ 1 | SpellDescription$ Look at the top four cards of your library. Put one of them into your hand and the rest on the bottom of your library in any order.
|
||||||
SVar:RemAIDeck:True
|
SVar:RemAIDeck:True
|
||||||
SVar:Rarity:Common
|
SVar:Rarity:Common
|
||||||
SVar:Picture:http://resources.wizards.com/magic/cards/vi/en-us/card3641.jpg
|
SVar:Picture:http://resources.wizards.com/magic/cards/vi/en-us/card3641.jpg
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ Name:Lead the Stampede
|
|||||||
ManaCost:2 G
|
ManaCost:2 G
|
||||||
Types:Sorcery
|
Types:Sorcery
|
||||||
Text:no text
|
Text:no text
|
||||||
A:SP$Reveal | Cost$ 2 G | Reveal$ 5 | ChangeType$ Creature | AnyNumber$ True | SpellDescription$ Look at the top five cards of your library. You may reveal any number of creature cards from among them and put the revealed cards into your hand. Put the rest on the bottom of your library in any order.
|
A:SP$Dig | Cost$ 2 G | DigNum$ 5 | ChangeValid$ Creature | AnyNumber$ True | SpellDescription$ Look at the top five cards of your library. You may reveal any number of creature cards from among them and put the revealed cards into your hand. Put the rest on the bottom of your library in any order.
|
||||||
SVar:RemAIDeck:True
|
SVar:RemAIDeck:True
|
||||||
SVar:Rarity:Uncommon
|
SVar:Rarity:Uncommon
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/lead_the_stampede.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/lead_the_stampede.jpg
|
||||||
|
|||||||
@@ -605,13 +605,13 @@ public class AbilityFactory {
|
|||||||
SA = AbilityFactory_ZoneAffecting.createDrawbackRevealHand(this);
|
SA = AbilityFactory_ZoneAffecting.createDrawbackRevealHand(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (API.equals("Reveal")){
|
if (API.equals("Dig")){
|
||||||
if (isAb)
|
if (isAb)
|
||||||
SA = AbilityFactory_Reveal.createAbilityReveal(this);
|
SA = AbilityFactory_Reveal.createAbilityDig(this);
|
||||||
else if (isSp)
|
else if (isSp)
|
||||||
SA = AbilityFactory_Reveal.createSpellReveal(this);
|
SA = AbilityFactory_Reveal.createSpellDig(this);
|
||||||
else if (isDb)
|
else if (isDb)
|
||||||
SA = AbilityFactory_Reveal.createDrawbackReveal(this);
|
SA = AbilityFactory_Reveal.createDrawbackDig(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SA == null)
|
if (SA == null)
|
||||||
|
|||||||
@@ -20,71 +20,71 @@ import forge.gui.GuiUtils;
|
|||||||
public class AbilityFactory_Reveal {
|
public class AbilityFactory_Reveal {
|
||||||
|
|
||||||
// *************************************************************************
|
// *************************************************************************
|
||||||
// ************************* REVEAL ****************************************
|
// ************************* Dig *******************************************
|
||||||
// *************************************************************************
|
// *************************************************************************
|
||||||
|
|
||||||
public static SpellAbility createAbilityReveal(final AbilityFactory af) {
|
public static SpellAbility createAbilityDig(final AbilityFactory af) {
|
||||||
|
|
||||||
final SpellAbility abReveal = new Ability_Activated(af.getHostCard(), af.getAbCost(), af.getAbTgt()) {
|
final SpellAbility abDig = new Ability_Activated(af.getHostCard(), af.getAbCost(), af.getAbTgt()) {
|
||||||
private static final long serialVersionUID = 4239474096624403497L;
|
private static final long serialVersionUID = 4239474096624403497L;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getStackDescription() {
|
public String getStackDescription() {
|
||||||
return revealStackDescription(af, this);
|
return digStackDescription(af, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canPlayAI() {
|
public boolean canPlayAI() {
|
||||||
return revealCanPlayAI(af, this);
|
return digCanPlayAI(af, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void resolve() {
|
public void resolve() {
|
||||||
revealResolve(af, this);
|
digResolve(af, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean doTrigger(boolean mandatory) {
|
public boolean doTrigger(boolean mandatory) {
|
||||||
return revealTriggerAI(af, this, mandatory);
|
return digTriggerAI(af, this, mandatory);
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
return abReveal;
|
return abDig;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static SpellAbility createSpellReveal(final AbilityFactory af) {
|
public static SpellAbility createSpellDig(final AbilityFactory af) {
|
||||||
final SpellAbility spReveal = new Spell(af.getHostCard(), af.getAbCost(), af.getAbTgt()) {
|
final SpellAbility spDig = new Spell(af.getHostCard(), af.getAbCost(), af.getAbTgt()) {
|
||||||
private static final long serialVersionUID = 3389143507816474146L;
|
private static final long serialVersionUID = 3389143507816474146L;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getStackDescription() {
|
public String getStackDescription() {
|
||||||
return revealStackDescription(af, this);
|
return digStackDescription(af, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canPlayAI() {
|
public boolean canPlayAI() {
|
||||||
return revealCanPlayAI(af, this);
|
return digCanPlayAI(af, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void resolve() {
|
public void resolve() {
|
||||||
revealResolve(af, this);
|
digResolve(af, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
return spReveal;
|
return spDig;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static SpellAbility createDrawbackReveal(final AbilityFactory af) {
|
public static SpellAbility createDrawbackDig(final AbilityFactory af) {
|
||||||
final SpellAbility dbReveal = new Ability_Sub(af.getHostCard(), af.getAbTgt()) {
|
final SpellAbility dbDig = new Ability_Sub(af.getHostCard(), af.getAbTgt()) {
|
||||||
private static final long serialVersionUID = -3372788479421357024L;
|
private static final long serialVersionUID = -3372788479421357024L;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getStackDescription(){
|
public String getStackDescription(){
|
||||||
return revealStackDescription(af, this);
|
return digStackDescription(af, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void resolve() {
|
public void resolve() {
|
||||||
revealResolve(af, this);
|
digResolve(af, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -94,18 +94,18 @@ public class AbilityFactory_Reveal {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean doTrigger(boolean mandatory) {
|
public boolean doTrigger(boolean mandatory) {
|
||||||
return revealTriggerAI(af, this, mandatory);
|
return digTriggerAI(af, this, mandatory);
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
return dbReveal;
|
return dbDig;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String revealStackDescription(AbilityFactory af, SpellAbility sa) {
|
private static String digStackDescription(AbilityFactory af, SpellAbility sa) {
|
||||||
HashMap<String,String> params = af.getMapParams();
|
HashMap<String,String> params = af.getMapParams();
|
||||||
Card host = af.getHostCard();
|
Card host = af.getHostCard();
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
int numToReveal = AbilityFactory.calculateAmount(af.getHostCard(), params.get("Reveal"), sa);
|
int numToDig = AbilityFactory.calculateAmount(af.getHostCard(), params.get("DigNum"), sa);
|
||||||
|
|
||||||
if (!(sa instanceof Ability_Sub))
|
if (!(sa instanceof Ability_Sub))
|
||||||
sb.append(sa.getSourceCard()).append(" - ");
|
sb.append(sa.getSourceCard()).append(" - ");
|
||||||
@@ -124,8 +124,10 @@ public class AbilityFactory_Reveal {
|
|||||||
|
|
||||||
//TODO - need to update if human targets computer for looking
|
//TODO - need to update if human targets computer for looking
|
||||||
|
|
||||||
sb.append(host.getController()).append(" looks at the top ").append(numToReveal);
|
sb.append(host.getController()).append(" looks at the top ").append(numToDig);
|
||||||
sb.append(" card of his or her library.");
|
sb.append(" card");
|
||||||
|
if(numToDig != 1) sb.append("s");
|
||||||
|
sb.append(" of his or her library.");
|
||||||
|
|
||||||
Ability_Sub abSub = sa.getSubAbility();
|
Ability_Sub abSub = sa.getSubAbility();
|
||||||
if (abSub != null) {
|
if (abSub != null) {
|
||||||
@@ -135,7 +137,7 @@ public class AbilityFactory_Reveal {
|
|||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean revealCanPlayAI(final AbilityFactory af, final SpellAbility sa) {
|
private static boolean digCanPlayAI(final AbilityFactory af, final SpellAbility sa) {
|
||||||
return false;
|
return false;
|
||||||
/*
|
/*
|
||||||
if (!ComputerUtil.canPayCost(sa))
|
if (!ComputerUtil.canPayCost(sa))
|
||||||
@@ -158,7 +160,7 @@ public class AbilityFactory_Reveal {
|
|||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean revealTriggerAI(final AbilityFactory af, final SpellAbility sa, boolean mandatory) {
|
private static boolean digTriggerAI(final AbilityFactory af, final SpellAbility sa, boolean mandatory) {
|
||||||
if (!ComputerUtil.canPayCost(sa))
|
if (!ComputerUtil.canPayCost(sa))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@@ -178,16 +180,17 @@ public class AbilityFactory_Reveal {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void revealResolve(final AbilityFactory af, final SpellAbility sa) {
|
private static void digResolve(final AbilityFactory af, final SpellAbility sa) {
|
||||||
HashMap<String,String> params = af.getMapParams();
|
HashMap<String,String> params = af.getMapParams();
|
||||||
Card host = af.getHostCard();
|
Card host = af.getHostCard();
|
||||||
int numToReveal = AbilityFactory.calculateAmount(af.getHostCard(), params.get("Reveal"), sa);
|
int numToDig = AbilityFactory.calculateAmount(af.getHostCard(), params.get("DigNum"), sa);
|
||||||
String destZone1 = params.containsKey("DestinationZone") ? params.get("DestinationZone") : "Hand";
|
String destZone1 = params.containsKey("DestinationZone") ? params.get("DestinationZone") : "Hand";
|
||||||
int destZone1ChangeNum = params.containsKey("ChangeNum") ? Integer.parseInt(params.get("ChangeNum")) : 1;
|
int destZone1ChangeNum = params.containsKey("ChangeNum") ? Integer.parseInt(params.get("ChangeNum")) : 1;
|
||||||
String changeValid = params.containsKey("ChangeType") ? params.get("ChangeType") : "";
|
String changeValid = params.containsKey("ChangeValid") ? params.get("ChangeValid") : "";
|
||||||
boolean anyNumber = params.containsKey("AnyNumber");
|
boolean anyNumber = params.containsKey("AnyNumber");
|
||||||
String destZone2 = params.containsKey("DestinationZone2") ? params.get("DestinationZone2") : "Library";
|
String destZone2 = params.containsKey("DestinationZone2") ? params.get("DestinationZone2") : "Library";
|
||||||
int libraryPosition = params.containsKey("LibraryPosition") ? Integer.parseInt(params.get("LibraryPosition")) : -1;
|
int libraryPosition = params.containsKey("LibraryPosition") ? Integer.parseInt(params.get("LibraryPosition")) : -1;
|
||||||
|
boolean optional = params.containsKey("Optional");
|
||||||
|
|
||||||
ArrayList<Player> tgtPlayers;
|
ArrayList<Player> tgtPlayers;
|
||||||
|
|
||||||
@@ -205,14 +208,14 @@ public class AbilityFactory_Reveal {
|
|||||||
CardList rest = new CardList();
|
CardList rest = new CardList();
|
||||||
PlayerZone library = AllZone.getZone(Constant.Zone.Library, p);
|
PlayerZone library = AllZone.getZone(Constant.Zone.Library, p);
|
||||||
|
|
||||||
numToReveal = Math.min(numToReveal, library.size());
|
numToDig = Math.min(numToDig, library.size());
|
||||||
for(int i = 0; i < numToReveal; i++) {
|
for(int i = 0; i < numToDig; i++) {
|
||||||
top.add(library.get(i));
|
top.add(library.get(i));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(top.size() > 0) {
|
if(top.size() > 0) {
|
||||||
//show the user the revealed cards
|
//show the user the revealed cards
|
||||||
GuiUtils.getChoice("Revealed cards from library", top.toArray());
|
GuiUtils.getChoice("Looking at cards from library", top.toArray());
|
||||||
|
|
||||||
if(!changeValid.equals("")) {
|
if(!changeValid.equals("")) {
|
||||||
valid = top.getValidCards(changeValid.split(","), host.getController(), host);
|
valid = top.getValidCards(changeValid.split(","), host.getController(), host);
|
||||||
@@ -225,10 +228,10 @@ public class AbilityFactory_Reveal {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int j = 0;
|
int j = 0;
|
||||||
while(j < destZone1ChangeNum || (anyNumber && j < numToReveal)) {
|
while(j < destZone1ChangeNum || (anyNumber && j < numToDig)) {
|
||||||
//let user get choice
|
//let user get choice
|
||||||
Card chosen = null;
|
Card chosen = null;
|
||||||
if(anyNumber) {
|
if(anyNumber || optional) {
|
||||||
chosen = GuiUtils.getChoiceOptional("Choose a card to put into "+destZone1, valid.toArray());
|
chosen = GuiUtils.getChoiceOptional("Choose a card to put into "+destZone1, valid.toArray());
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|||||||
Reference in New Issue
Block a user