mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 12:48:00 +00:00
Added a CopySpellOntoStack Function and modified the PayManaCost code a little bit (to prevent selected targets from storm spells not showing up on the stack). Made Storm Arbitary
This commit is contained in:
@@ -170,6 +170,38 @@ public class CardFactory implements NewConstants {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final void copySpellontoStack(Card Source, Card in, boolean CopyDetails) {
|
||||||
|
Card c = AllZone.CardFactory.copyCardintoNew(in);
|
||||||
|
SpellAbility[] sa = c.getSpellAbility();
|
||||||
|
c.setController(Source.getController());
|
||||||
|
if(CopyDetails == true) {
|
||||||
|
c.addXManaCostPaid(in.getXManaCostPaid());
|
||||||
|
c.addMultiKickerMagnitude(in.getMultiKickerMagnitude());
|
||||||
|
if(in.isKicked()) c.setKicked(true);
|
||||||
|
|
||||||
|
if(c.hasChoices()) {
|
||||||
|
for(int i = 0; i < in.getChoices().size(); i++) {
|
||||||
|
c.addSpellChoice(in.getChoice(i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for(int i = 0; i < sa.length; i++) {
|
||||||
|
if(in.getAbilityUsed() == i) {
|
||||||
|
if(c.isKicked() && !sa[i].isKickerAbility()) {
|
||||||
|
} else {
|
||||||
|
if(in.getSpellAbility()[i].getTargetCard() != null)
|
||||||
|
sa[i].setTargetCard(in.getSpellAbility()[i].getTargetCard());
|
||||||
|
if(in.getSpellAbility()[i].getTargetPlayer() != null) {
|
||||||
|
if(in.getSpellAbility()[i].getTargetPlayer().equals(Constant.Player.Human)
|
||||||
|
|| (in.getSpellAbility()[i].getTargetPlayer().equals(Constant.Player.Computer)))
|
||||||
|
sa[i].setTargetPlayer(in.getSpellAbility()[i].getTargetPlayer());
|
||||||
|
}
|
||||||
|
AllZone.GameAction.playSpellAbility(sa[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
final public Card getCard(String cardName, String owner) {
|
final public Card getCard(String cardName, String owner) {
|
||||||
cardName = AllZone.NameChanger.getOriginalName(cardName);
|
cardName = AllZone.NameChanger.getOriginalName(cardName);
|
||||||
@@ -7787,36 +7819,7 @@ public class CardFactory implements NewConstants {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void resolve() {
|
public void resolve() {
|
||||||
Card c = copyCardintoNew(getTargetCard());
|
copySpellontoStack(card,getTargetCard(), true);
|
||||||
SpellAbility[] sa = c.getSpellAbility();
|
|
||||||
c.setController(card.getController());
|
|
||||||
|
|
||||||
c.addXManaCostPaid(getTargetCard().getXManaCostPaid());
|
|
||||||
c.addMultiKickerMagnitude(getTargetCard().getMultiKickerMagnitude());
|
|
||||||
if(getTargetCard().isKicked()) c.setKicked(true);
|
|
||||||
c.setCopiedSpell(true);
|
|
||||||
if(c.hasChoices()) {
|
|
||||||
for(int i = 0; i < getTargetCard().getChoices().size(); i++) {
|
|
||||||
c.addSpellChoice(getTargetCard().getChoice(i));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for(int i = 0; i < sa.length; i++) {
|
|
||||||
if(getTargetCard().getAbilityUsed() == i) {
|
|
||||||
if(c.isKicked() && !sa[i].isKickerAbility()) {
|
|
||||||
} else {
|
|
||||||
if(getTargetCard().getSpellAbility()[i].getTargetCard() != null)
|
|
||||||
sa[i].setTargetCard(getTargetCard().getSpellAbility()[i].getTargetCard());
|
|
||||||
if(getTargetCard().getSpellAbility()[i].getTargetPlayer() != null) {
|
|
||||||
if(getTargetCard().getSpellAbility()[i].getTargetPlayer().equals(Constant.Player.Human)
|
|
||||||
|| (getTargetCard().getSpellAbility()[i].getTargetPlayer().equals(Constant.Player.Computer)))
|
|
||||||
sa[i].setTargetPlayer(getTargetCard().getSpellAbility()[i].getTargetPlayer());
|
|
||||||
}
|
|
||||||
//TODO Selecting New Targets. Then Apply to storm.
|
|
||||||
AllZone.GameAction.playSpellAbility(sa[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canPlay()
|
public boolean canPlay()
|
||||||
@@ -7839,35 +7842,7 @@ public class CardFactory implements NewConstants {
|
|||||||
private static final long serialVersionUID = -131686114078716307L;
|
private static final long serialVersionUID = -131686114078716307L;
|
||||||
@Override
|
@Override
|
||||||
public void resolve() {
|
public void resolve() {
|
||||||
Card c = copyCardintoNew(getTargetCard());
|
copySpellontoStack(card,getTargetCard(), true);
|
||||||
SpellAbility[] sa = c.getSpellAbility();
|
|
||||||
c.setController(card.getController());
|
|
||||||
|
|
||||||
c.addXManaCostPaid(getTargetCard().getXManaCostPaid());
|
|
||||||
c.addMultiKickerMagnitude(getTargetCard().getMultiKickerMagnitude());
|
|
||||||
if(getTargetCard().isKicked()) c.setKicked(true);
|
|
||||||
c.setCopiedSpell(true);
|
|
||||||
if(c.hasChoices()) {
|
|
||||||
for(int i = 0; i < getTargetCard().getChoices().size(); i++) {
|
|
||||||
c.addSpellChoice(getTargetCard().getChoice(i));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for(int i = 0; i < sa.length; i++) {
|
|
||||||
if(getTargetCard().getAbilityUsed() == i) {
|
|
||||||
if(c.isKicked() && !sa[i].isKickerAbility()) {
|
|
||||||
} else {
|
|
||||||
if(getTargetCard().getSpellAbility()[i].getTargetCard() != null)
|
|
||||||
sa[i].setTargetCard(getTargetCard().getSpellAbility()[i].getTargetCard());
|
|
||||||
if(getTargetCard().getSpellAbility()[i].getTargetPlayer() != null) {
|
|
||||||
if(getTargetCard().getSpellAbility()[i].getTargetPlayer().equals(Constant.Player.Human)
|
|
||||||
|| (getTargetCard().getSpellAbility()[i].getTargetPlayer().equals(Constant.Player.Computer)))
|
|
||||||
sa[i].setTargetPlayer(getTargetCard().getSpellAbility()[i].getTargetPlayer());
|
|
||||||
}
|
|
||||||
//TODO Selecting New Targets. Then Apply to storm.
|
|
||||||
AllZone.GameAction.playSpellAbility(sa[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
done();
|
done();
|
||||||
}//resolve()
|
}//resolve()
|
||||||
|
|
||||||
@@ -7964,36 +7939,7 @@ public class CardFactory implements NewConstants {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void resolve() {
|
public void resolve() {
|
||||||
Card c = copyCardintoNew(getTargetCard());
|
copySpellontoStack(card,getTargetCard(), true);
|
||||||
SpellAbility[] sa = c.getSpellAbility();
|
|
||||||
c.setController(card.getController());
|
|
||||||
|
|
||||||
c.addXManaCostPaid(getTargetCard().getXManaCostPaid());
|
|
||||||
c.addMultiKickerMagnitude(getTargetCard().getMultiKickerMagnitude());
|
|
||||||
if(getTargetCard().isKicked()) c.setKicked(true);
|
|
||||||
c.setCopiedSpell(true);
|
|
||||||
if(c.hasChoices()) {
|
|
||||||
for(int i = 0; i < getTargetCard().getChoices().size(); i++) {
|
|
||||||
c.addSpellChoice(getTargetCard().getChoice(i));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for(int i = 0; i < sa.length; i++) {
|
|
||||||
if(getTargetCard().getAbilityUsed() == i) {
|
|
||||||
if(c.isKicked() && !sa[i].isKickerAbility()) {
|
|
||||||
} else {
|
|
||||||
if(getTargetCard().getSpellAbility()[i].getTargetCard() != null)
|
|
||||||
sa[i].setTargetCard(getTargetCard().getSpellAbility()[i].getTargetCard());
|
|
||||||
if(getTargetCard().getSpellAbility()[i].getTargetPlayer() != null) {
|
|
||||||
if(getTargetCard().getSpellAbility()[i].getTargetPlayer().equals(Constant.Player.Human)
|
|
||||||
|| (getTargetCard().getSpellAbility()[i].getTargetPlayer().equals(Constant.Player.Computer)))
|
|
||||||
sa[i].setTargetPlayer(getTargetCard().getSpellAbility()[i].getTargetPlayer());
|
|
||||||
}
|
|
||||||
//TODO Selecting New Targets. Then Apply to storm.
|
|
||||||
AllZone.GameAction.playSpellAbility(sa[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canPlay()
|
public boolean canPlay()
|
||||||
@@ -8467,24 +8413,24 @@ public class CardFactory implements NewConstants {
|
|||||||
public void execute() {
|
public void execute() {
|
||||||
String player = AllZone.Phase.getActivePlayer();
|
String player = AllZone.Phase.getActivePlayer();
|
||||||
PlayerZone Play = AllZone.getZone(Constant.Zone.Play, player);
|
PlayerZone Play = AllZone.getZone(Constant.Zone.Play, player);
|
||||||
|
Card Minds_D = card;
|
||||||
if(player == "Human") AllZone.GameAction.shuffle(card.getController());
|
if(player == "Human") AllZone.GameAction.shuffle(card.getController());
|
||||||
CardList MindsList = new CardList(Play.getCards());
|
CardList MindsList = new CardList(Play.getCards());
|
||||||
MindsList = MindsList.getName("Mind's Desire");
|
MindsList = MindsList.getName("Mind's Desire");
|
||||||
MindsList.remove(card);
|
MindsList.remove(card);
|
||||||
if(MindsList.contains(card) == true) {
|
if(MindsList.size() > 0) {
|
||||||
Play.remove(card);
|
Play.remove(card);
|
||||||
|
Minds_D = MindsList.get(0);
|
||||||
} else JOptionPane.showMessageDialog(null, "Click Mind's Desire to see the available cards to play without paying its mana cost.", "", JOptionPane.INFORMATION_MESSAGE);
|
} else JOptionPane.showMessageDialog(null, "Click Mind's Desire to see the available cards to play without paying its mana cost.", "", JOptionPane.INFORMATION_MESSAGE);
|
||||||
PlayerZone lib = AllZone.getZone(Constant.Zone.Library, player);
|
PlayerZone lib = AllZone.getZone(Constant.Zone.Library, player);
|
||||||
CardList libList = new CardList(lib.getCards());
|
CardList libList = new CardList(lib.getCards());
|
||||||
Card c = null;
|
Card c = null;
|
||||||
if(libList.size() > 0) {
|
if(libList.size() > 0) {
|
||||||
c = libList.get(0);
|
c = libList.get(0);
|
||||||
}
|
|
||||||
if(c != null) {
|
|
||||||
PlayerZone RFG = AllZone.getZone(Constant.Zone.Removed_From_Play, player);
|
PlayerZone RFG = AllZone.getZone(Constant.Zone.Removed_From_Play, player);
|
||||||
AllZone.GameAction.moveTo(RFG, c);
|
AllZone.GameAction.moveTo(RFG, c);
|
||||||
card.attachCard(c);
|
Minds_D.attachCard(c);
|
||||||
}
|
}
|
||||||
final Card Minds = card;
|
final Card Minds = card;
|
||||||
// AllZone.GameAction.exile(Minds);
|
// AllZone.GameAction.exile(Minds);
|
||||||
Command untilEOT = new Command() {
|
Command untilEOT = new Command() {
|
||||||
@@ -8513,7 +8459,7 @@ public class CardFactory implements NewConstants {
|
|||||||
card.addSpellAbility(spell);
|
card.addSpellAbility(spell);
|
||||||
card.addSpellAbility(freeCast);
|
card.addSpellAbility(freeCast);
|
||||||
}
|
}
|
||||||
//*************** END ************ END **************************
|
//*************** END ************ END **************************
|
||||||
|
|
||||||
//*************** START *********** START **************************
|
//*************** START *********** START **************************
|
||||||
else if(cardName.equals("Doomsday")) {
|
else if(cardName.equals("Doomsday")) {
|
||||||
|
|||||||
@@ -642,6 +642,24 @@ public class GameActionUtil {
|
|||||||
Ripple.execute();
|
Ripple.execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void playCard_Storm(Card c) {
|
||||||
|
if(c.getKeyword().contains("Storm") && !c.isCopiedSpell())
|
||||||
|
{
|
||||||
|
final Card StormCard = c;
|
||||||
|
StormCard.removeIntrinsicKeyword("Storm");
|
||||||
|
final int StormNumber = Phase.StormCount - 1;
|
||||||
|
final Ability Storm = new Ability(c, "0") {
|
||||||
|
public void resolve() {
|
||||||
|
for(int i = 0; i < (StormNumber); i++) {
|
||||||
|
AllZone.CardFactory.copySpellontoStack(StormCard,StormCard,true);
|
||||||
|
}; // For
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Storm.setStackDescription(c + " - Storm.");
|
||||||
|
AllZone.Stack.add(Storm);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/**
|
||||||
public static void playCard_Storm(Card c) {
|
public static void playCard_Storm(Card c) {
|
||||||
if(c.getKeyword().contains("Storm"))
|
if(c.getKeyword().contains("Storm"))
|
||||||
{
|
{
|
||||||
@@ -1035,7 +1053,7 @@ public class GameActionUtil {
|
|||||||
AllZone.Stack.add(Storm);
|
AllZone.Stack.add(Storm);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
**/
|
||||||
public static void playCard_Vengevine(Card c) {
|
public static void playCard_Vengevine(Card c) {
|
||||||
if (c.isCreature() == true && (Phase.PlayerCreatureSpellCount == 2 || Phase.ComputerCreatureSpellCount == 2))
|
if (c.isCreature() == true && (Phase.PlayerCreatureSpellCount == 2 || Phase.ComputerCreatureSpellCount == 2))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -19,17 +19,20 @@ public class Input_PayManaCost extends Input {
|
|||||||
private final SpellAbility spell;
|
private final SpellAbility spell;
|
||||||
|
|
||||||
public Input_PayManaCost(SpellAbility sa) {
|
public Input_PayManaCost(SpellAbility sa) {
|
||||||
originalManaCost = sa.getManaCost();
|
originalManaCost = sa.getManaCost(); // Change
|
||||||
originalCard = sa.getSourceCard();
|
originalCard = sa.getSourceCard();
|
||||||
|
|
||||||
spell = sa;
|
spell = sa;
|
||||||
|
|
||||||
manaCost = new ManaCost(sa.getManaCost());
|
|
||||||
if(Phase.GameBegins == 1) {
|
if(Phase.GameBegins == 1) {
|
||||||
if(sa.getSourceCard().isCopiedSpell() && sa.isSpell()) {
|
if(sa.getSourceCard().isCopiedSpell() && sa.isSpell()) {
|
||||||
manaCost = new ManaCost("0");
|
if(spell.getAfterPayMana() != null) stopSetNext(spell.getAfterPayMana());
|
||||||
|
else {
|
||||||
|
manaCost = new ManaCost("0");
|
||||||
|
AllZone.Stack.add(spell);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
manaCost = AllZone.GameAction.GetSpellCostChange(sa);
|
manaCost = AllZone.GameAction.GetSpellCostChange(sa);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -57,6 +60,11 @@ public class Input_PayManaCost extends Input {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void done() {
|
private void done() {
|
||||||
|
if(spell.getSourceCard().isCopiedSpell()) {
|
||||||
|
if(spell.getAfterPayMana() != null) {
|
||||||
|
stopSetNext(spell.getAfterPayMana());
|
||||||
|
} else stopSetNext(new ComputerAI_StackNotEmpty());
|
||||||
|
} else {
|
||||||
AllZone.ManaPool.paid();
|
AllZone.ManaPool.paid();
|
||||||
resetManaCost();
|
resetManaCost();
|
||||||
|
|
||||||
@@ -74,6 +82,7 @@ public class Input_PayManaCost extends Input {
|
|||||||
stopSetNext(new ComputerAI_StackNotEmpty());
|
stopSetNext(new ComputerAI_StackNotEmpty());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void selectButtonCancel() {
|
public void selectButtonCancel() {
|
||||||
|
|||||||
Reference in New Issue
Block a user