It is currently 28 Oct 2025, 00:14
   
Text Size

A few similar cards

Post MTG Forge Related Programming Questions Here

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

A few similar cards

Postby Sloth » 04 Jul 2010, 17:56

Here are some cards I found, that are very similar to existing cards or even functional reprints.

1. Kami of the Crescent Moon

cards.txt:
Code: Select all
Kami of the Crescent Moon
U U
Legndray Creature Spirit
At the beginning of each player's draw step, that player draws an additional card.
1/3
before upkeep_Font_of_Mythos(); in GameActionUtil.java add:
Code: Select all
upkeep_Kami_Crescent_Moon();
and later:
Code: Select all
private static void upkeep_Kami_Crescent_Moon() {
      final String player = AllZone.Phase.getActivePlayer();

      CardList list = new CardList();
      list.addAll(AllZone.Human_Play.getCards());
      list.addAll(AllZone.Computer_Play.getCards());
      list = list.getName("Kami of the Crescent Moon");

      for(int i = 0; i < list.size(); i++){
            AllZone.GameAction.drawCard(player);
      }
   }// upkeep_Kami_Crescent_Moon()
2. Ancient Runes

cards.txt:
Code: Select all
Ancient Runes
2 R
Enchantment
At the beginning of each player's upkeep, Ancient Runes deals damage to that player equal to the number of artifacts he or she controls.
before upkeep_Karma(); in GameActionUtil.java add:
Code: Select all
upkeep_Ancient_Runes();
and later:
Code: Select all
private static void upkeep_Ancient_Runes() {
      final String player = AllZone.Phase.getActivePlayer();
      String opponent = AllZone.GameAction.getOpponent(player);

      PlayerZone opponentPlayZone = AllZone.getZone(Constant.Zone.Play, opponent);

      CardList ancient_runes = new CardList(opponentPlayZone.getCards());
      ancient_runes = ancient_runes.getName("Ancient Runes");

      PlayerZone activePlayZone = AllZone.getZone(Constant.Zone.Play, player);
      CardList artifacts = new CardList(activePlayZone.getCards());
      artifacts = artifacts.getType("Artifact");

      // determine how much damage to deal the current player
      final int damage = artifacts.size();

      // if there are 1 or more Ancient Runes owned by the opponent of the
      // current player have each of them deal damage.
      if(0 < ancient_runes.size()) {
         for(int i = 0; i < ancient_runes.size(); i++) {
            Ability ability = new Ability(ancient_runes.get(0), "0") {
               @Override
               public void resolve() {
                  if(damage>0){
                     PlayerLife life = AllZone.GameAction.getPlayerLife(player);
                     life.setLife(life.getLife() - damage);
                  }
               }
            };// Ability
            if(damage>0){
               ability.setStackDescription("Ancient Runes deals " + damage + " damage to " + player);
               AllZone.Stack.add(ability);
            }
         }
      }// if
   }// upkeep_Ancient_Runes()
3. Three Visits

cards.txt:
Code: Select all
Three Visits
1 G
Sorcery
no text
replace in CardFactory.java:
Code: Select all
else if(cardName.equals("Nature's Lore"))
with
Code: Select all
else if(cardName.equals("Nature's Lore") || cardName.equals("Assert Authority"))
4. The code for Auramancer and Monk Idealist can be merged
User avatar
Sloth
Programmer
 
Posts: 3498
Joined: 23 Jun 2009, 19:40
Has thanked: 125 times
Been thanked: 507 times

Re: A few similar cards

Postby friarsol » 05 Jul 2010, 03:06

Sloth wrote:Here are some cards I found, that are very similar to existing cards or even functional reprints.
I can take care of 3 and 4. I missed a bunch of sets in between when I stopped playing and now, so some of the older cards that I wanted to get in for a deck I didn't realize there was functional reprints for.
friarsol
Global Moderator
 
Posts: 7593
Joined: 15 May 2010, 04:20
Has thanked: 243 times
Been thanked: 965 times

Re: A few similar cards

Postby Chris H. » 05 Jul 2010, 10:34

I merged 1 and 3 into the SVN last night. We still have numbers 2 and 4 left. Number 2 might be tricky, not sure yet.
User avatar
Chris H.
Forge Moderator
 
Posts: 6320
Joined: 04 Nov 2008, 12:11
Location: Mac OS X Yosemite
Has thanked: 644 times
Been thanked: 643 times

Re: A few similar cards

Postby Chris H. » 05 Jul 2010, 17:28

OK, I added the code for Ancient Runes and ran a test. I put one Ancient Runes into play and both I and the computer have artifacts in play.

Only the computer is taking damage on it's turn. I believe that I should also take damage during my turn dependent on the number of artifacts that I have in play.

It looks like we may then have a similar situation with the Karma enchantment. These two cards are only effecting the opponent of the card's controller.
User avatar
Chris H.
Forge Moderator
 
Posts: 6320
Joined: 04 Nov 2008, 12:11
Location: Mac OS X Yosemite
Has thanked: 644 times
Been thanked: 643 times

Re: A few similar cards

Postby Chris H. » 05 Jul 2010, 19:57

I modified the Karma code and it's cousin Ancient Runes. I think that both of these cards are now working correctly. I will merge the code below sometime tonight or tomorrow.


Code: Select all
   private static void upkeep_Ancient_Runes() {
      final String player = AllZone.Phase.getActivePlayer();
      
      CardList ancient_runes = new CardList();
      ancient_runes.addAll(AllZone.Human_Play.getCards());
      ancient_runes.addAll(AllZone.Computer_Play.getCards());
      ancient_runes = ancient_runes.getName("Ancient Runes");
      
      PlayerZone activePlayZone = AllZone.getZone(Constant.Zone.Play, player);
      CardList artifacts = new CardList(activePlayZone.getCards());
      artifacts = artifacts.getType("Artifact");
      
      // determine how much damage to deal the current player
      final int damage = artifacts.size();
      
      // if there are 1 or more Ancient Runes on the
      // battlefield have each of them deal damage.
      if(0 < ancient_runes.size()) {
         for(int i = 0; i < ancient_runes.size(); i++) {
            Ability ability = new Ability(ancient_runes.get(0), "0") {
               @Override
               public void resolve() {
                  if(damage>0){
                     PlayerLife life = AllZone.GameAction.getPlayerLife(player);
                     life.setLife(life.getLife() - damage);
                  }
               }
            };// Ability
            if(damage>0){
               ability.setStackDescription("Ancient Runes deals " + damage + " damage to " + player);
               AllZone.Stack.add(ability);
            }
         }
      }// if
   }// upkeep_Ancient_Runes()


   private static void upkeep_Karma() {
      final String player = AllZone.Phase.getActivePlayer();
      
      CardList karma = new CardList();
      karma.addAll(AllZone.Human_Play.getCards());
      karma.addAll(AllZone.Computer_Play.getCards());
      karma = karma.getName("Karma");
      
      PlayerZone activePlayZone = AllZone.getZone(Constant.Zone.Play, player);
      CardList swamps = new CardList(activePlayZone.getCards());
      swamps = swamps.getType("Swamp");
      
      // determine how much damage to deal the current player
      final int damage = swamps.size();
      
      // if there are 1 or more Karmas on the 
      // battlefield have each of them deal damage.
      if(0 < karma.size()) {
         for(int i = 0; i < karma.size(); i++) {
            Ability ability = new Ability(karma.get(0), "0") {
               @Override
               public void resolve() {
                  if(damage>0){
                     PlayerLife life = AllZone.GameAction.getPlayerLife(player);
                     life.setLife(life.getLife() - damage);
                  }
               }
            };// Ability
            if(damage>0){
               ability.setStackDescription("Karma deals " + damage + " damage to " + player);
               AllZone.Stack.add(ability);
            }
         }
      }// if
   }// upkeep_Karma()
User avatar
Chris H.
Forge Moderator
 
Posts: 6320
Joined: 04 Nov 2008, 12:11
Location: Mac OS X Yosemite
Has thanked: 644 times
Been thanked: 643 times

Re: A few similar cards

Postby Sloth » 05 Jul 2010, 20:41

Thanks, Chris.

I thought the code for Karma was correct and just copied it.
User avatar
Sloth
Programmer
 
Posts: 3498
Joined: 23 Jun 2009, 19:40
Has thanked: 125 times
Been thanked: 507 times


Return to Developer's Corner

Who is online

Users browsing this forum: No registered users and 12 guests

Main Menu

User Menu

Our Partners


Who is online

In total there are 12 users online :: 0 registered, 0 hidden and 12 guests (based on users active over the past 10 minutes)
Most users ever online was 9298 on 10 Oct 2025, 12:54

Users browsing this forum: No registered users and 12 guests

Login Form