It is currently 24 Apr 2024, 20:01
   
Text Size

multicolor control

Moderators: timmermac, Blacksmith, KrazyTheFox, Agetian, friarsol, CCGHQ Admins

multicolor control

Postby GandoTheBard » 06 Sep 2008, 18:50

This deck is a fun only Vintage legal deck (note the ancestral, moxes and time twister) that utilizes recursion to remove opponent's creatures and control the board. Instead of making this tourney quality I chose to go for tricks because they are more fun.

Hope you enjoy...btw the deck could use some tuning so feel free to make and post changes. The computer does pretty well with this deck but some cards are still not good for it.
visit my personal homepage here: http://outofthebrokensky.com

Listen to my podcast with famed AJ_Impy "Freed from the Real" on http://puremtgo.com
User avatar
GandoTheBard
Tester
 
Posts: 1043
Joined: 06 Sep 2008, 18:43
Has thanked: 0 time
Been thanked: 0 time

Re: multicolor control

Postby Mr.Chaos » 11 Sep 2008, 17:52

When I tried importing this deck, I got an empty deck.
It simply shows no cards at all. Downloaded it again, imported it again, same result.
I am using the latest beta of MTG forge and other imported decks did work.
Anybody else experience this with this deck?
](*,) = coder at work, according to a coder.It does explain some of the bugs. :wink:
Mr.Chaos
Tester
 
Posts: 625
Joined: 06 Sep 2008, 08:15
Has thanked: 0 time
Been thanked: 0 time

Re: multicolor control

Postby jpb » 11 Sep 2008, 18:45

I got some errors in stdout. One stack trace is when I did the import. The other is from when I tried to start the game with this deck.

Code: Select all
Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: CardFactory : getCard() invalid card name - Savannah
        at CardFactory.getCard2(CardFactory.java:88)
        at CardFactory.getCard(CardFactory.java:67)
        at Gui_DeckEditor_Menu.importConstructed(Gui_DeckEditor_Menu.java:240)
        at Gui_DeckEditor_Menu.access$3(Gui_DeckEditor_Menu.java:25)
        at Gui_DeckEditor_Menu$5.run(Gui_DeckEditor_Menu.java:680)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:240)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:543)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:268)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:197)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:191)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:183)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:144)
Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: CardFactory : getCard() invalid card name - Savannah
        at CardFactory.getCard2(CardFactory.java:88)
        at CardFactory.getCard(CardFactory.java:67)
        at GameAction.newGame(GameAction.java:356)
        at Gui_NewGame.startButton_actionPerformed(Gui_NewGame.java:411)
        at Gui_NewGame$7.actionPerformed(Gui_NewGame.java:276)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1879)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2199)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:450)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:288)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:264)
        at java.awt.Component.processMouseEvent(Component.java:5529)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3148)
        at java.awt.Component.processEvent(Component.java:5294)
        at java.awt.Container.processEvent(Container.java:2001)
        at java.awt.Component.dispatchEventImpl(Component.java:3996)
        at java.awt.Container.dispatchEventImpl(Container.java:2059)
        at java.awt.Component.dispatchEvent(Component.java:3844)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4249)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3929)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3859)
        at java.awt.Container.dispatchEventImpl(Container.java:2045)
        at java.awt.Window.dispatchEventImpl(Window.java:1810)
        at java.awt.Component.dispatchEvent(Component.java:3844)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:545)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:268)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:197)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:191)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:183)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:144)
jpb
 
Posts: 132
Joined: 05 Sep 2008, 13:12
Has thanked: 0 time
Been thanked: 0 time

Re: multicolor control

Postby GandoTheBard » 11 Sep 2008, 20:23

OOOhhh I forgot about the dual lands...I added them to my version of MTG Forge about 5 remakes ago and have just updated cards.txt each time. You need to impliment them in cards.txt to get this deck to work. My appologies :/
User avatar
GandoTheBard
Tester
 
Posts: 1043
Joined: 06 Sep 2008, 18:43
Has thanked: 0 time
Been thanked: 0 time

Re: multicolor control

Postby jpb » 11 Sep 2008, 23:25

works now.
jpb
 
Posts: 132
Joined: 05 Sep 2008, 13:12
Has thanked: 0 time
Been thanked: 0 time

Re: multicolor control

Postby Mr.Chaos » 12 Sep 2008, 06:34

It indeed works after I copy/pasted your dual land text into the game, Gando.
Bit naugthy of you though. the nice thing about this game is we all play with the same cards. And then you go and add some of your own. [-X :wink:

Reminds me of that old west poker game.
The lads have been playing for a while and Johnny is certain he will win this round with his 3 aces.
It comes down to revealing their hands.....
Tim has a pair of aces and a pair of queens.
Johnny smiles and reveals his 3 aces.
Steve grins and drops 4 aces on the table and reaches for the money.
"Not so fast!", says Greg, and reveals 5 aces.
That was the last time the boys played poker with that cheater, Greg.
Because, as everybody knows, you can never have 5 aces in a game of poker!

But, thanks for the dual lands, they will come in handy in my sliver deck.
](*,) = coder at work, according to a coder.It does explain some of the bugs. :wink:
Mr.Chaos
Tester
 
Posts: 625
Joined: 06 Sep 2008, 08:15
Has thanked: 0 time
Been thanked: 0 time

Re: multicolor control

Postby GandoTheBard » 12 Sep 2008, 07:09

LOL Mr Chaos. You are welcome. I added them first thing when I realized MTG Forge only added his favorite (Bayou). Been playing with them for a while now and forgot that they werent in the basic installation. I was going to add some other cards that I think rock but there was no code for some of the abilities and Im too lazy for that.

Ive got a slivers deck for MTG Forge though Imho the best slivers are missing still. And of course if they worked across the board instead of only on your own theyd be down right dangerous to play with against random decks. (scenario...you slap down a might sliver and a sinew sliver and a muscle sliver....your opponent plays some stallers then slaps down his own sliversmith. soon hes got an army of little sliver clones. Ouch... and worse then he casts Overrun on them. :)
visit my personal homepage here: http://outofthebrokensky.com

Listen to my podcast with famed AJ_Impy "Freed from the Real" on http://puremtgo.com
User avatar
GandoTheBard
Tester
 
Posts: 1043
Joined: 06 Sep 2008, 18:43
Has thanked: 0 time
Been thanked: 0 time

Re: multicolor control

Postby Mr.Chaos » 12 Sep 2008, 11:04

Yes, the best slivers are missing, so are some of the better artifacts, like Isochron Scepter, Staff of Domination and the classic Forcefield.

I have this elf deck that relies on the Staff of Domination, Priest of Titania and Hurricane for the win. Gets there by about turn 4 or 5, sometimes by turn 3 if the other guy plays elves as well.
But a lot of the cards in that deck are not in MTG Forge yet, nor will they be until V2 has been well and truly up and running.

Although... Staff of Domination might well be possible, as it has abilities already found on other cards in MTG force at the moment. But getting it to work flawlessly may be a real challenge.
(remember, I am NOT a programmer, so I have no idea about what is and is not possible behind the scenes of the current version.)
](*,) = coder at work, according to a coder.It does explain some of the bugs. :wink:
Mr.Chaos
Tester
 
Posts: 625
Joined: 06 Sep 2008, 08:15
Has thanked: 0 time
Been thanked: 0 time

Re: multicolor control

Postby jpb » 12 Sep 2008, 19:38

I tried implementing Hurricane for you. Currently there is no way to do spells which cost X mana, like Hurricane does. I tried implementing this by having an input pop up and have you select what value of X you wish to use. I did get really close, however there is a bug somewhere in my logic so the spell never gets to where you actually pay the mana. I would ask forge to look at it, but I think he is busy with Version 2, which will hopefully have a manapool and allow you to cast spells with X mana.
jpb
 
Posts: 132
Joined: 05 Sep 2008, 13:12
Has thanked: 0 time
Been thanked: 0 time

Re: multicolor control

Postby GandoTheBard » 12 Sep 2008, 21:52

jpb wrote:I tried implementing Hurricane for you. Currently there is no way to do spells which cost X mana, like Hurricane does. I tried implementing this by having an input pop up and have you select what value of X you wish to use. I did get really close, however there is a bug somewhere in my logic so the spell never gets to where you actually pay the mana. I would ask forge to look at it, but I think he is busy with Version 2, which will hopefully have a manapool and allow you to cast spells with X mana.
Post your logic...perhaps we pundits can sort it out.
visit my personal homepage here: http://outofthebrokensky.com

Listen to my podcast with famed AJ_Impy "Freed from the Real" on http://puremtgo.com
User avatar
GandoTheBard
Tester
 
Posts: 1043
Joined: 06 Sep 2008, 18:43
Has thanked: 0 time
Been thanked: 0 time

Re: multicolor control

Postby jpb » 14 Sep 2008, 17:24

It's currently in pretty bad shape. I didn't document any of this. I would just wait until V2 to get X mana costs working.

In Cards.txt
Code: Select all
Hurricane
G
Sorcery
Hurricane deals X damage to each creature with flying and each player.
In CardFactory.java
Code: Select all
      //*************** START *********** START **************************
     else if(cardName.equals("Hurricane"))
     {
        final SpellAbility spell = new Spell(card)
        {
          int damage;
          public boolean canPlayAI()
          {
           return false;
           //The AI currently is not implemented for this card.
           //The AI should check:
           //How much mana it can use for X
           //Compare how many creatures with flying the computer has vs how many creatures with flying the human has
           //Compare their costs
           //Compare the computer's life with the human's life.
           //Then make a decision on how much it can and should cast for X
          }

          CardList getAllFlyingCreatures()
          {
           //get flying creatures human controls
           CardList humanFlying = CardFactoryUtil.AI_getHumanCreature("Flying");
            
           //get flying creatures computer controls
           CardList comFlying = new CardList(AllZone.Human_Play.getCards());
           comFlying = comFlying.filter(new CardListFilter()
           {
             public boolean addCard(Card c)
             {
               return c.isCreature() && c.getKeyword().contains("Flying");
             }
           });
           
           CardList allFlying = humanFlying;
           allFlying.addAll(comFlying.toArray());
           
           return allFlying;
          }
              
          public void resolve()
          {
           //deal damage to each creature with flying
            Card c;
            CardList allFlying = getAllFlyingCreatures();
            for(int i=0;i<=allFlying.size();i++){
               c = allFlying.get(i);
               c.addDamage(damage);
            }
           
            //deal damage to each player
            AllZone.Human_Life.subtractLife(damage);
            AllZone.Computer_Life.subtractLife(damage);
          }
        };//SpellAbility

        final Input xAmount = new Input()
        {
          public void showMessage()
          {
             stopSetNext(CardFactoryUtil.input_targetAmount(spell, "Select value for X.","G",getCard()));
          }
          public void selectButtonCancel() {stop();}
        };//Input target
       
       //int damage = xAmount.getManaAmount();

        xAmount.setCard(card);
        card.clearSpellAbility();
       spell.setDescription("Hurricane does X damage to each creature with flying and each player.");
       spell.setBeforePayMana(xAmount);
        card.addSpellAbility(spell);
      }//*************** END ************ END **************************
In CardFactoryUtil.java
Code: Select all
  //used to select X amount of mana.
  public static Input input_targetAmount(final SpellAbility spell, final String message, final String plusAmount,Card card)
  {
   final Card c = card;
    Input target = new Input()
    {
      public void showMessage()
      {
        AllZone.Display.showMessage(message);
        ButtonUtil.enableOnlyCancel();
         selectManaAmount();
       c.setManaCost(getManaAmount()+" "+plusAmount);
      }
      public void selectButtonCancel() {stop();}
    };
    return target;
  }//input_targetAmount
In Input.java
Code: Select all
   int manaAmount;
   Card card;
    public void selectManaAmount()
    {
       System.out.println("start selectManaAmount()");
      int size = 12;
      Object choice[] = new Object[size];

      for(int i = 0; i < choice.length; i++)
        choice[i] = new Integer(i + 1);

       Integer manaInt = (Integer) AllZone.Display.getChoice("Select X", choice);
       System.out.println("end selectManaAmount() with "+manaInt.intValue());
       manaAmount =  manaInt.intValue();
    }
   
    public int getManaAmount()
    {
       return manaAmount;
    }
   
    public void setCard(Card c){
       this.card = c;
    }
   
    public Card getCard(){
       return card;
    }
jpb
 
Posts: 132
Joined: 05 Sep 2008, 13:12
Has thanked: 0 time
Been thanked: 0 time

Re: multicolor control

Postby Mr.Chaos » 14 Sep 2008, 19:27

jpb, thanks for the attempt at Hurricane. I honestly was not expecting that card in the current beta environment.
Like I said in the previous post, those cards are (hopefully) for V2.
As a total, nonprogrammer, I will refrain from commenting on the code.

The only code I ever tried was like 20+ years ago, as a teenager on my very first Commodore 64.
10 ?"Hello, world. ";:goto10
If memory serves me correctly, this filled the screen with "Hello, world. Hello, world. Hello, world." in an endless loop. (minus the quotation marks)
Appart from that, I never did any coding. Plenty of playing though.
Ah, the anticipation of waiting for the datatape to load my game... Psychedelic displays of colorful lines on screen, eardrum bursting screeching loading noises... the titlescreen appearing 1 line at the time, a sudden outburst of music as the titletune replaces the loadingsounds. Then... a load error and rewinding the tape to try loading it once more.
Todays youth have no idea how easy they have it.
](*,) = coder at work, according to a coder.It does explain some of the bugs. :wink:
Mr.Chaos
Tester
 
Posts: 625
Joined: 06 Sep 2008, 08:15
Has thanked: 0 time
Been thanked: 0 time

Re: multicolor control

Postby GandoTheBard » 14 Sep 2008, 23:53

@ Mr Chaos...haha! Indeed. :D
visit my personal homepage here: http://outofthebrokensky.com

Listen to my podcast with famed AJ_Impy "Freed from the Real" on http://puremtgo.com
User avatar
GandoTheBard
Tester
 
Posts: 1043
Joined: 06 Sep 2008, 18:43
Has thanked: 0 time
Been thanked: 0 time

Re: multicolor control

Postby GandoTheBard » 14 Sep 2008, 23:54

jpb wrote:It's currently in pretty bad shape. I didn't document any of this. I would just wait until V2 to get X mana costs working.

In Cards.txt
Code: Select all
Hurricane
G
Sorcery
Hurricane deals X damage to each creature with flying and each player.
In CardFactory.java
Code: Select all
      //*************** START *********** START **************************
     else if(cardName.equals("Hurricane"))
     {
        final SpellAbility spell = new Spell(card)
        {
          int damage;
          public boolean canPlayAI()
          {
           return false;
           //The AI currently is not implemented for this card.
           //The AI should check:
           //How much mana it can use for X
           //Compare how many creatures with flying the computer has vs how many creatures with flying the human has
           //Compare their costs
           //Compare the computer's life with the human's life.
           //Then make a decision on how much it can and should cast for X
          }

          CardList getAllFlyingCreatures()
          {
           //get flying creatures human controls
           CardList humanFlying = CardFactoryUtil.AI_getHumanCreature("Flying");
            
           //get flying creatures computer controls
           CardList comFlying = new CardList(AllZone.Human_Play.getCards());
           comFlying = comFlying.filter(new CardListFilter()
           {
             public boolean addCard(Card c)
             {
               return c.isCreature() && c.getKeyword().contains("Flying");
             }
           });
           
           CardList allFlying = humanFlying;
           allFlying.addAll(comFlying.toArray());
           
           return allFlying;
          }
              
          public void resolve()
          {
           //deal damage to each creature with flying
            Card c;
            CardList allFlying = getAllFlyingCreatures();
            for(int i=0;i<=allFlying.size();i++){
               c = allFlying.get(i);
               c.addDamage(damage);
            }
           
            //deal damage to each player
            AllZone.Human_Life.subtractLife(damage);
            AllZone.Computer_Life.subtractLife(damage);
          }
        };//SpellAbility

        final Input xAmount = new Input()
        {
          public void showMessage()
          {
             stopSetNext(CardFactoryUtil.input_targetAmount(spell, "Select value for X.","G",getCard()));
          }
          public void selectButtonCancel() {stop();}
        };//Input target
       
       //int damage = xAmount.getManaAmount();

        xAmount.setCard(card);
        card.clearSpellAbility();
       spell.setDescription("Hurricane does X damage to each creature with flying and each player.");
       spell.setBeforePayMana(xAmount);
        card.addSpellAbility(spell);
      }//*************** END ************ END **************************
In CardFactoryUtil.java
Code: Select all
  //used to select X amount of mana.
  public static Input input_targetAmount(final SpellAbility spell, final String message, final String plusAmount,Card card)
  {
   final Card c = card;
    Input target = new Input()
    {
      public void showMessage()
      {
        AllZone.Display.showMessage(message);
        ButtonUtil.enableOnlyCancel();
         selectManaAmount();
       c.setManaCost(getManaAmount()+" "+plusAmount);
      }
      public void selectButtonCancel() {stop();}
    };
    return target;
  }//input_targetAmount
In Input.java
Code: Select all
   int manaAmount;
   Card card;
    public void selectManaAmount()
    {
       System.out.println("start selectManaAmount()");
      int size = 12;
      Object choice[] = new Object[size];

      for(int i = 0; i < choice.length; i++)
        choice[i] = new Integer(i + 1);

       Integer manaInt = (Integer) AllZone.Display.getChoice("Select X", choice);
       System.out.println("end selectManaAmount() with "+manaInt.intValue());
       manaAmount =  manaInt.intValue();
    }
   
    public int getManaAmount()
    {
       return manaAmount;
    }
   
    public void setCard(Card c){
       this.card = c;
    }
   
    public Card getCard(){
       return card;
    }
Where are you getting the error? or does it just fizzle?
visit my personal homepage here: http://outofthebrokensky.com

Listen to my podcast with famed AJ_Impy "Freed from the Real" on http://puremtgo.com
User avatar
GandoTheBard
Tester
 
Posts: 1043
Joined: 06 Sep 2008, 18:43
Has thanked: 0 time
Been thanked: 0 time

Re: multicolor control

Postby jpb » 15 Sep 2008, 15:27

jpb wrote:I did get really close, however there is a bug somewhere in my logic so the spell never gets to where you actually pay the mana.
There is no error. You can click on Hurricane, then it will let you select the value of X and press ok. Then it asks you again for the value of X (this is a bug). and then instead of letting you pay the mana costs it loops forever waiting for gui input. This will be difficult to fix and I would suggest just waiting until there is a mana pool in MTG Forge. It will make these X mana costs very easy.
jpb
 
Posts: 132
Joined: 05 Sep 2008, 13:12
Has thanked: 0 time
Been thanked: 0 time

Next

Return to Forge Decks

Who is online

Users browsing this forum: No registered users and 30 guests


Who is online

In total there are 30 users online :: 0 registered, 0 hidden and 30 guests (based on users active over the past 10 minutes)
Most users ever online was 4143 on 23 Jan 2024, 08:21

Users browsing this forum: No registered users and 30 guests

Login Form