mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 10:48:00 +00:00
- Added Conundrum Sphinx
This commit is contained in:
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -2123,6 +2123,7 @@ res/cardsfolder/c/control_magic.txt svneol=native#text/plain
|
||||
res/cardsfolder/c/control_of_the_court.txt svneol=native#text/plain
|
||||
res/cardsfolder/c/controlled_instincts.txt svneol=native#text/plain
|
||||
res/cardsfolder/c/controvert.txt svneol=native#text/plain
|
||||
res/cardsfolder/c/conundrum_sphinx.txt -text
|
||||
res/cardsfolder/c/convalescence.txt svneol=native#text/plain
|
||||
res/cardsfolder/c/convalescent_care.txt svneol=native#text/plain
|
||||
res/cardsfolder/c/conversion.txt svneol=native#text/plain
|
||||
|
||||
13
res/cardsfolder/c/conundrum_sphinx.txt
Normal file
13
res/cardsfolder/c/conundrum_sphinx.txt
Normal file
@@ -0,0 +1,13 @@
|
||||
Name:Conundrum Sphinx
|
||||
ManaCost:2 U U
|
||||
Types:Creature Sphinx
|
||||
PT:4/4
|
||||
K:Flying
|
||||
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ EachName | TriggerDescription$ Whenever CARDNAME attacks, each player names a card. Then each player reveals the top card of his or her library. If the card a player revealed is the card he or she named, that player puts it into his or her hand. If it's not, that player puts it on the bottom of his or her library.
|
||||
SVar:EachName:AB$ RepeatEach | Cost$ 0 | RepeatPlayers$ Player | RepeatSubAbility$ DBName | SubAbility$ DBDigEach
|
||||
SVar:DBName:DB$ NameCard | Defined$ Player.IsRemembered | AILogic$ RandomInComputerDeck
|
||||
SVar:DBDigEach:DB$ RepeatEach | Cost$ 0 | RepeatPlayers$ Player | RepeatSubAbility$ DBDig
|
||||
SVar:DBDig:DB$ Dig | DigNum$ 1 | Defined$ Player.IsRemembered | ChangeNum$ All | ChangeValid$ Card.NamedByRememberedPlayer | Reveal$ True
|
||||
SVar:RemRandomDeck:True
|
||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/conundrum_sphinx.jpg
|
||||
Oracle:Flying\nWhenever Conundrum Sphinx attacks, each player names a card. Then each player reveals the top card of his or her library. If the card a player revealed is the card he or she named, that player puts it into his or her hand. If it's not, that player puts it on the bottom of his or her library.
|
||||
@@ -5308,6 +5308,24 @@ public class Card extends GameEntity implements Comparable<Card> {
|
||||
if (!this.getName().equals(source.getNamedCard())) {
|
||||
return false;
|
||||
}
|
||||
} else if (property.equals("NamedByRememberedPlayer")) {
|
||||
if (source.getRemembered().isEmpty()) {
|
||||
final Card newCard = game.getCardState(source);
|
||||
for (final Object o : newCard.getRemembered()) {
|
||||
if (o instanceof Player) {
|
||||
if (!this.getName().equals(((Player) o).getNamedCard())) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for (final Object o : source.getRemembered()) {
|
||||
if (o instanceof Player) {
|
||||
if (!this.getName().equals(((Player) o).getNamedCard())) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (property.equals("ChosenCard")) {
|
||||
if (!source.getChosenCard().contains(this)) {
|
||||
return false;
|
||||
|
||||
@@ -111,6 +111,7 @@ public class ChooseCardNameEffect extends SpellAbilityEffect {
|
||||
Card instanceForPlayer = cp.toForgeCard(p); // the Card instance for test needs a game to be tested
|
||||
if (instanceForPlayer.isValid(valid, host.getController(), host)) {
|
||||
host.setNamedCard(cp.getName());
|
||||
p.setNamedCard(cp.getName());
|
||||
ok = true;
|
||||
}
|
||||
} else {
|
||||
@@ -123,6 +124,8 @@ public class ChooseCardNameEffect extends SpellAbilityEffect {
|
||||
chosen = ComputerUtilCard.getMostProminentCardName(p.getOpponent().getCardsIn(ZoneType.Library));
|
||||
} else if (logic.equals("BestCreatureInComputerDeck")) {
|
||||
chosen = ComputerUtilCard.getBestCreatureAI(p.getCardsIn(ZoneType.Library)).getName();
|
||||
} else if (logic.equals("RandomInComputerDeck")) {
|
||||
chosen = Aggregates.random(p.getCardsIn(ZoneType.Library)).getName();
|
||||
}
|
||||
} else {
|
||||
List<Card> list = CardLists.filterControlledBy(p.getGame().getCardsInGame(), p.getOpponent());
|
||||
@@ -136,6 +139,7 @@ public class ChooseCardNameEffect extends SpellAbilityEffect {
|
||||
}
|
||||
GuiChoose.one("Computer picked: ", new String[]{chosen});
|
||||
host.setNamedCard(chosen);
|
||||
p.setNamedCard(chosen);
|
||||
ok = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -130,6 +130,9 @@ public class Player extends GameEntity implements Comparable<Player> {
|
||||
/** The last drawn card. */
|
||||
private Card lastDrawnCard = null;
|
||||
|
||||
/** The named card. */
|
||||
private String namedCard = "";
|
||||
|
||||
/** The num drawn this turn. */
|
||||
private int numDrawnThisTurn = 0;
|
||||
private int numDrawnThisDrawStep = 0;
|
||||
@@ -1958,6 +1961,30 @@ public class Player extends GameEntity implements Comparable<Player> {
|
||||
return this.lastDrawnCard;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Getter for the field <code>namedCard</code>.
|
||||
* </p>
|
||||
*
|
||||
* @return a String.
|
||||
*/
|
||||
public final String getNamedCard() {
|
||||
return this.namedCard;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Setter for the field <code>namedCard</code>.
|
||||
* </p>
|
||||
*
|
||||
* @param s
|
||||
* a {@link forge.Card} object.
|
||||
* @return
|
||||
* @return a {@link forge.Card} object.
|
||||
*/
|
||||
public final void setNamedCard(final String s) {
|
||||
this.namedCard = s;
|
||||
}
|
||||
/**
|
||||
* <p>
|
||||
* getTurn.
|
||||
@@ -2378,6 +2405,11 @@ public class Player extends GameEntity implements Comparable<Player> {
|
||||
if (this.equals(sourceController) || !this.isOpponentOf(sourceController)) {
|
||||
return false;
|
||||
}
|
||||
} else if (property.equals("OpponentToActive")) {
|
||||
final Player active = game.getPhaseHandler().getPlayerTurn();
|
||||
if (this.equals(active) || !this.isOpponentOf(active)) {
|
||||
return false;
|
||||
}
|
||||
} else if (property.equals("Other")) {
|
||||
if (this.equals(sourceController)) {
|
||||
return false;
|
||||
@@ -2424,11 +2456,29 @@ public class Player extends GameEntity implements Comparable<Player> {
|
||||
}
|
||||
} else if (property.startsWith("withMore")) {
|
||||
final String cardType = property.split("sThan")[0].substring(8);
|
||||
final Player controller = "Active".equals(property.split("sThan")[1]) ? game.getPhaseHandler().getPlayerTurn() : sourceController;
|
||||
final List<Card> oppList = CardLists.filter(this.getCardsIn(ZoneType.Battlefield), CardPredicates.isType(cardType));
|
||||
final List<Card> yourList = CardLists.filter(sourceController.getCardsIn(ZoneType.Battlefield), CardPredicates.isType(cardType));
|
||||
final List<Card> yourList = CardLists.filter(controller.getCardsIn(ZoneType.Battlefield), CardPredicates.isType(cardType));
|
||||
if (oppList.size() <= yourList.size()) {
|
||||
return false;
|
||||
}
|
||||
} else if (property.startsWith("hasMore")) {
|
||||
final Player controller = "Active".equals(property.split("Than")[1]) ? game.getPhaseHandler().getPlayerTurn() : sourceController;
|
||||
if (property.substring(7).startsWith("Life") && this.getLife() <= controller.getLife()) {
|
||||
return false;
|
||||
} else if (property.substring(7).startsWith("CardsInHand")
|
||||
&& this.getCardsIn(ZoneType.Hand).size() <= controller.getCardsIn(ZoneType.Hand).size()) {
|
||||
return false;
|
||||
}
|
||||
} else if (property.startsWith("hasFewer")) {
|
||||
final Player controller = "Active".equals(property.split("Than")[1]) ? game.getPhaseHandler().getPlayerTurn() : sourceController;
|
||||
if (property.substring(8).startsWith("CreaturesInYard")) {
|
||||
final List<Card> oppList = CardLists.filter(this.getCardsIn(ZoneType.Graveyard), Presets.CREATURES);
|
||||
final List<Card> yourList = CardLists.filter(controller.getCardsIn(ZoneType.Graveyard), Presets.CREATURES);
|
||||
if (oppList.size() >= yourList.size()) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} else if (property.startsWith("withMost")) {
|
||||
if (property.substring(8).equals("Life")) {
|
||||
int highestLife = this.getLife(); // Negative base just in case a few Lich's are running around
|
||||
|
||||
Reference in New Issue
Block a user