Page 1 of 3

Forge 09/12/2010 (unofficial BETA) version

PostPosted: 12 Sep 2010, 18:32
by Chris H.
(Quest icons used created by Teekatas, from his Legendora set http://raindropmemory.deviantart.com)

4102 cards in total.

This version is based upon the revision # 1992 which is found on our SVN.

Our CardFactory class files have once again been split up into smaller chunks. It is possible that this might cause a problem with a few sorceries or instants. We found several spells that were not working and we re-added the code that was "lost" during this process.

Some minor improvements were made to the computer's AI. The computer will now cast additional cards during main phase 1 before attacking. In the past the computer would always cast these spells during main phase 2.

Several dozen bugs were fixed. Most of these were fairly simple to find and fix. These bugs did not cause the program to crash but people did notice and report these problems. We recently made the program java 5 compatible. As time passes, we may find that it becomes more difficult for us to maintain java 5 compatibility.

Note: Several card picture urls and card rarity values are mising.

I removed the ".SVN" and the /res/lib/ folders from this archive as they are not needed. The archives are now compressed using the 7z format. There are utilities for Windows, Mac OS and the various *nix's that can be used to decompress these archives.


Fixes/Features:

- Added SVar Buffedby to be used on permanents which need other cards to be
played in Main1. Added the options Card, Spell and Permanent to the BuffedBy SVar.
- Added isValidCard to Cards.java. Changed getValidCard to use isValidCard to keep everything in one place.
- Added BuffedBy SVars to the Mimics, Hatchlings, Duos, Cohorts, Blades, Vinelasher Kudzu, Fable of Wolf and Owl and the Landfall cards that need it (not all do).
- Made AI Landdrops in Main1 possible.
- Added BuffedBy SVars to some Cards with the whenever keyword and the staticeffect keyword.
- Updated the following quest mode AI decks: Napoleon 3, Rogue 3, R2D2 3 deck and Rocky 1-3.
- Removed SVar:RemAIDeck:True from Hymn To Tourach.
- Added SVar AntiBuffedby to be used on permanents the human controls to make the AI play certain cards in Main1. Added AntiBuffedby SVar to Timid Drake and other cards.
- Undiscovered Paradise will now return to computer's hand when tapped for mana.
- Added Aragorn 2, a WBRG Landfall deck. Made some changes to the Aragorn 2 deck.
- Fixed a couple bugs with calculating X in doDrawback.
- Added drawback handling to spDestroyAll.
- Facedown cards in new GUI wont show card name nor it's casting cost.
- Fixed the "Index Out Of Bounds Exception" bug.
- Fixed the Glasses of Urza bug which occurs when trying to display the cards when the target player's hand is empty.
- Merged the code for Chambered Nautilus, Saprazzan Heir and Drelnoch into a single block. The code will now display a JOptionPane.showConfirmDialog(). Drawing cards is now optional. Added some AI to this new decision.
- Added "When CARDNAME enters the battlefield, you may search your library for up to three cards named CARDNAME, reveal them, and put them into your hand. If you do, shuffle your library." keyword.
- Big update: split up sorceries and instants into separate CardFactories
(hopefully this didn't break things).
- Slight change to the code for Cinder Pyromancer. Now uses JOptionPane.showConfirmDialog(YES_NO_OPTION). Used StringBuilder.
- Slight change to the code for Kor Firewalker. Now uses JOptionPane.showConfirmDialog(YES_NO_OPTION), this now gives the human a choice to gain or not gain life.
- Fixed a bug with Lovisa Coldeyes.
- spDstryAll bugfix.
- Card will get their image refreshed every card change cycle (may lower
performance, but updates sooner.)
- Found and fixed a bug in the GameActionUtil.playCard_Enchantress_Draw() code. Added a JOptionPane.showConfirmDialog() to Verduran Enchantress and Mesa Enchantress, you are now asked if you want to draw a card for these two only. Argothian Enchantress and Enchantress's Presence forces you to draw a card. Added some AI to the computer's choice.
- Slight change to Hystrodon. Added AI and a JOptionPane.showConfirmDialog() which will allow both the human and the computer to decide to draw or not to draw a card.
- Checking 1.5 compatibility. SwingBuilder caused a couple other problems. It is also contained in ord.jdesktop, so I replaced it with that one.
Preferences also contained stringPropertyNames(), which only exists since 1.6.
- Fixed Forbidding Watchtower, it now becomes a "Soldier" rather than a "Solider" when activated.
- Added getTapState method to return a sublist of cards that are either "Tapped" or "Untapped". Added "UntapUpTo" as a drawback. Similar to Cloud of Faeries, but not limited to land.
- Fixed Lord of the Undead, it will now pump zombies on both sides of the battlefield.
- Fixed a StaticEffect keyword bug.
- Fixed Reanimate, the AI will no longer target a creature with the keyword "At the beginning of the end step, sacrifice CARDNAME.".
- Added "reveal" for Sylvan Messenger and Goblin Ringleader when the AI casts one.
- Fixed That Which Was Taken.
- Forced a checkStateEffects() after Bribery resolution.
- Kiki-Jiki, Mirror Breaker should work correctly now with Doubling Season.
- Added a "shortcut" for Earthcraft (only usable if there's an untapped basic land enchanted with Squirrel Nest).
- Added Rarity and picture url SVars to a bunch of cards.
- Modified spBounceTgt - added Drawback and fixed the target selection prompt string to take the different destinations into account.
- Fixed Painter's Servant, choices of color no longer includes null.
- Moved Ashes to Ashes from CardFactory_Instants to CardFactory_Sorceries.
- Added the missing code block for Kaervek's Spite to CardFactory_Instants.
- Added the missing code blocks for Take Possession and Fabricate to CardFactory_Sorceries.
- Moved Resuscitate from CardFactory to CardFactory_Instants.
- Fixed the keyword for Stampede Driver and Desecrated Earth.
- Converted Swords to Plowshares to keyword.
- Fixed Breath of Life; Resurrection; False Defeat; Zombify. The AI will no longer target a creature with the keyword "At the beginning of the end step, sacrifice CARDNAME."
- Fixed bug in handling drawback for spDestroyTgt.
- Added a filter to ComputerAI_General.getMain2() and this should prevent the computer from summoning Ball Lightning type creatures during main phase 2.
- Minor fix to code block for Breath of Life; False Defeat; Resurrection; Zombify.
- Fixed Karmic Guide. The AI will no longer target a creature with the keyword "At the beginning of the end step, sacrifice CARDNAME."
- Fixed Doomed Necromancer. The AI will no longer target a creature with the keyword "At the beginning of the end step, sacrifice CARDNAME." if it is main phase 2.
- Fixed Global Ruin, it now adds the non-basic type lands to the list of lands that are to be destroyed.
- Fixed Mind's Desire. The spell description used to display the card's name after the spell description in the card panel.
- Added string replacement code to Card.getText(). This will place the spellText portion for Storm spells on the next line. Works for all storm spells except Temporal Fissure. Cards with a "(NOTE: " are now separated from the rest of the spell description and are placed on a separate line. Removes the extra linefeed and new line chars at end of of spell description.
- Added a space to divide the two sentences that make up the ability description for cards using the paintap keyword. The ability description now uses StringBuilder().
- Made "CARDNAME can't be blocked except by artifact creatures and/or white creatures." a keyword.
- Added "CARDNAME can't be blocked by white creatures." keyword.
- Minor edit to spDiscardTgt, spAllPump, spDestroyTgt, spBounceTgt and spLoseLife. Added a space between buyback cost and the description. Used StringBuilder to build the spell descriptions.
- Minor edit to Card.getText(). Will now add the Storm and it's description to the spell description. Haze of Rage is the only spell that needs it at this time.
- Updated four original Buyback spells. They now use a more standard description and will match the newer keyworded buyback spells. Used StringBuilder to build the spell description where needed.
- Updated Lab Rats. It now use a more standard description and will match the newer keyworded buyback spells.
- Increased the default size of the Deck Editor's Filter window and made it resizable.
- Added etbDestroyTgt keyword.
- added "If a spell or ability an opponent controls causes you to
discard CARDNAME, put it onto the battlefield instead of putting it into your graveyard." keyword.
- Fixed Juniper Order Ranger manacost.
- Converted 13 cards from code to the etbDestroyTgt keyword.
- Added the missing period to the spell description for several cards.
- Added additional LQ pic urls to the Basic lands and to the Snow-Covered Basic lands in cards.txt.
- Edited the mana producing cards to make them consistent in the ordering of the colors: W U B R G.
- Changed some of the damage dealing code (it's much more centralized now),
there's also a difference now between dealing damage and dealing combat damage (Mirri the Cursed shouldn't get counters anymore if she damages creatures through non-combat damage). Hopefully this update didn't cause too many bugs.
- Added Infect keyword, plus a few Scars of Mirrodin cards.
- Fixed a minor spell description bug in Abomination and converted this to StringBuilder.
- Little improvements to the AI of spDestroyAll and spBounceAll.
- The AI now tries not to search for another imperial recruiter when the first enters the battlefield.
- Added getNotName to CardList.java.
- Fixed a minor spell description bug in Abomination and converted this to StringBuilder.
- Fixed Festering Wound.
- Renamed the quest opponent deck Darth Vador to Darth Vader.
- Fixed keyword of Last Breath.
- Added a medium Version of the Boromir deck.
- Small modifications to the existing decks: Aragorn 2; C3PO 3; Da Vinci 1 through 3; Darth Vader 3; Dino 2; Kojak 1 through 3; Magnum 1 through 3; Pebbles Flintstone 2 and 3; Picard 3; Sherlock Holmes 1 through 3; The Great Gazoo 3; Wilma Flintstone 1 through 3; Wyatt Earp 1 through 3.
- Fixed crash related to Nantuko Elder trying to directly pay for spells. String needed to be trimmed before converted to an Integer.
- Updated Memnite to have 0 cost instead of "no cost" which is reserved for cards like Ancestral Vision.
- Finished the work related to the Storm spell description code section located in Card.getText().
- Added Proliferate keyword.
- Added a BuffedBy SVar to Baru, Fist of Krosa.
- Fixed description of Valorous Charge.
- Added the missing triggered ability of Kemuri-Onna.
- Fixed Mana cost of Creakwood Liege.
- Fixed drawback handling for spDamageTgt - only execute drawback if target card is valid.
- Fixed drawback handling for abDamage - only execute drawback if target card is valid.
- Fixed erroneous calculation of number of cards affected by spDestroyAll.
I added a card is buggy NOTE, "SVar:RemAIDeck:True" and a "SVar:Rarity:None" to Admonition Angel; Ageless Entity; Ajani's Pridemate and Petravark.
- Added a hard BR direct damage deck called Hellboy 3.
- Added line breaks to the spellText for a number of cards. Will make the spell text more readable.
- Fixed the Swords (going to make some more fixes / additions to the damage code soon).
- Made more of a distinction between combat damage and non-combat damage dealt to players (for instance, Marsh Viper or Abyssal Specter should trigger now on non-combat damage).
- Glasses of Urza will no longer appear in a randomly constructed deck.
- Added etbCounter keyword for cards that enter the battlefield with any type of counter. (ex. etbCounter:P1P1:3)
- Added enteredBattlefieldThisTurn restriction to isValidCard.
- Fixed keyword of Vendetta, Sever Soul and Poison Arrow (nonblack to nonBlack).
- Fixes to the handling of buffedby and antibuffedby SVars.
- Added the new keyword spDamageAll. Added buyback support to spDamageAll.
- Added a canDamage Cardlist filter to Cardlist.java.
- Added Triskelion for a sample of etbCounter and SubCounter as a cost.
- Added a new keyword: spTutor.
- Fixed keyword of Shriekmaw.
- The AI now tries not to fetch another tutor with spTutor.
- Fixed bug in spDiscard for "UnlessDiscardType" clause.
- Added some code to Card.getText() to display "Changeling" at the top of Instants/Sorceries. Deleted the "Changeling" from the spellText line for Crib Swap; Nameless Inversion and Wings of Velis Vel.
- Fixed Life from the Loam and Nightmare Void. They now display the Dredge keyword + Number in the spell description.
- Added ThirdFromTopOfLibrary to possible destinations of spTutor.
- Converted these cards to keyword: Fabricate, Mystical Tutor and Enlightened Tutor.
- Added "When CARDNAME is put into a graveyard from anywhere, shuffle it into its owner's library." keyword.
- Better/more useful error reporting for cards with bad URLs in cards.txt when downloading LQ pics.
- Fix for Siren's Call destroying Walls under certain conditions.
- Input_Untap.java - rename method to something more descriptive and remove old code.
- Added "CARDNAME is {color}." to the list of keywords that get added to the spell text for Instants and Sorceries in Card.getText(). Cleaned up and consolidated the code in this section.
- Fixed Fracturing Gust giving life for non-destroyed Indestructible permanents. Converted Fracturing Gust to spDestroyAll keyword.
- Changed the keyword of Serra Avatar to the new When CARDNAME is put into a graveyard from anywhere, shuffle it into its owner's library.
- Added remAI SVars to two more cards.


Many people helped with this version. A special thank you goes out to them:

Dennis Bergkamp
Rob Cashwalker
Silly Freak
Snacko
Sloth
Hellfish
Friar Sol
Slapshot5
Chris H


Added many cards, including:

Code: Select all
Acidic Slime
Ascendant Hero
Bala Ged Scorpion
Big Game Hunter
Call to Heel
Cateran Summons
Chain Reaction
Chaosphere
Claws of Wirewood
Clutch of the Undercity
Cosi's Ravager
Cradle to Grave
Creakwood Liege
Crovax
Dakmor Lancer
Dakmor Plague
Dark Hatchling
Dark Withering
Darksteel Axe
Dauthi Horror
Death Baron
Deathbringer Thoctar
Dense Canopy
Desert Sandstorm
Dissipation Field
Dodecapod
Dragon Tyrant
Dread
Dry Spell
Eerie Procession
Elspeth Tirel
Elven Cache
Evaporate
Evincar's Justice
Famine
Farsight Mask
Faultgrinder
Fiery Temper
Fire Tempest
Fires of Yavimaya
Frantic Purification
Gale Force
Squall
Goblin Settler
Gorgon Recluse
Halo Hunter
Hammerheim Deadeye
Hellfire
Howling Wolf
Idyllic Tutor
Indrik Stomphowler
Ingot Chewer
Last Breath
Lay of the Land
Long-Term Plans
Lovisa Coldeyes
Memnite
Merchant Scroll
Multani's Decree
Murkfiend Liege
Nesting Wurm
Nikko-Onna
No Mercy
Obsessive Search
Obstinate Baloth
Ogre Arsonist
Ogre Gatecrasher
Patriarch's Bidding
Personal Tutor
Plague Stinger
Psychic Membrane
Psychotic Haze
Radiant's Judgment
Rain of Embers
Ravaging Horde
Ravenous Baboons
Ravenous Baloth
Recoil
Righteous Fury
Rustspore Ram
Safewright Quest
Seeker
Seething Pathblazer
Seismic Shudder
Serpent Assassin
Shadowstorm
Siren's Call
Skithiryx, the Blight Dragon
Skyshroud Sentinel
Snap
Sootwalkers
Squadron Hawk
Steady Progress
Steam Blast
Steelshaper's Gift
Strength of Isolation
Strength of Lunacy
Sulfurous Blast
Sutured Ghoul
Swat
Swirling Sandstorm
Sword of Body and Mind
Sylvan Scrying
Tempered Steel
Thrumming Bird
Thunder of Hooves
Time of Need
Tivadar of Thorn
Triskelion
War Priest of Thune
Wilt-Leaf Liege
Wispmare
Woodfall Primus
Yuki-Onna
`
The links to the various archives:



The Forge 09/12/2010 archive:

forge0912.7z



The opponent icons for Forge 09/12/2010:

Quest_Opponent_icons_09-12-2010.7z



The dev team is in the process of making a major change to Forge. This archive contains the last version of the run-forge.jar and cards.txt files prior to the major change that is taking place. These two files are from revision 2016 found on the SVN.

There are several new cards, a couple of bug fixes and slight changes to the way the spell text for permanents are displayed. Enjoy.

Forge Fix r2016.7z

Re: Forge 09/12/2010 (unofficial BETA) version

PostPosted: 12 Sep 2010, 20:22
by slowe
Sweet, this version is working on my Mac!
You guys are awesome, as usual. =D>

Re: Forge 09/12/2010 (unofficial BETA) version

PostPosted: 12 Sep 2010, 21:05
by Sloth
Thanks for posting the new version Chris!

I think it was a good moment to release it. I'm curious, as to whether some players will notice more main 1 action of the AI.

Re: Forge 09/12/2010 (unofficial BETA) version

PostPosted: 12 Sep 2010, 21:26
by Chris H.
slowe wrote:Sweet, this version is working on my Mac!
You guys are awesome, as usual. =D>
`
Silly Freak did all of the work to make this java 5 compatible. :D

Re: Forge 09/12/2010 (unofficial BETA) version

PostPosted: 12 Sep 2010, 21:29
by Chris H.
Sloth wrote:I think it was a good moment to release it. I'm curious, as to whether some players will notice more main 1 action of the AI.
`
I think people will notice. At first people will notice the new cards and the new bugs. :lol: Give them a while and the feature and AI improvements should be seen.

Re: Forge 09/12/2010 (unofficial BETA) version

PostPosted: 12 Sep 2010, 22:46
by DennisBergkamp
Hopefully there won't be too many bugs, there's quite a lot of new stuff, after all :)

Re: Forge 09/12/2010 (unofficial BETA) version

PostPosted: 12 Sep 2010, 23:22
by LokiUndergod
Awesome work, guys! I can't wait to try it out. I'm excited about the improvements to the AI and, as always, the new cards.

Edit: I just noticed the Scars of Mirrodin spoilers sneak into Forge. :wink:

Re: Forge 09/12/2010 (unofficial BETA) version

PostPosted: 13 Sep 2010, 00:36
by DennisBergkamp
Yup, I've been having fun adding some of them :mrgreen:

Re: Forge 09/12/2010 (unofficial BETA) version

PostPosted: 13 Sep 2010, 01:17
by Bog Wraith
And I thought the start of the NFL was my hi-light of today!

All the new cards are a real treat as always, but I too am looking forward to seeing how the AI plays it's main phase 1 turn.

Thanks to everyone who continue to develop this great game! 8)

Re: Forge 09/12/2010 (unofficial BETA) version

PostPosted: 13 Sep 2010, 09:56
by tchiseen
That's a lot of changes. It's cool to see new Scars cards coded, too. Great work.

Re: Forge 09/12/2010 (unofficial BETA) version

PostPosted: 13 Sep 2010, 16:48
by DemoneNero
thanks :D

Re: Forge 09/12/2010 (unofficial BETA) version

PostPosted: 13 Sep 2010, 17:10
by weirdingway
Chris H. wrote:
Some minor improvements were made to the computer's AI. The computer will now cast additional cards during main phase 1 before attacking. In the past the computer would always cast these spells during main phase 2.
You don't think this is a double-edged sword? A lot of times it's better to wait till main phase 2.

Re: Forge 09/12/2010 (unofficial BETA) version

PostPosted: 13 Sep 2010, 17:27
by Mizar
weirdingway wrote:You don't think this is a double-edged sword? A lot of times it's better to wait till main phase 2.
But there are also cards that are better be played during the 1st Main Phase. For example creatures with haste or cards like Windborne Charge.

Re: Forge 09/12/2010 (unofficial BETA) version

PostPosted: 13 Sep 2010, 18:28
by Chris H.
weirdingway wrote:
Chris H. wrote:
Some minor improvements were made to the computer's AI. The computer will now cast additional cards during main phase 1 before attacking. In the past the computer would always cast these spells during main phase 2.
You don't think this is a double-edged sword? A lot of times it's better to wait till main phase 2.
`
In the past the computer would only cast spells during main 2. This makes sense for many of the cards. There are some cards that the AI should cast during main 1.

The last two betas are set up so that the AI can test for certain conditions and then only cast spells during main 1 if the conditions are correct. These types of decisions are made in a fairly generalized fashion.

Re: Forge 09/12/2010 (unofficial BETA) version

PostPosted: 14 Sep 2010, 06:53
by atar
Thnx a lot for updating supporting our favourite program! Please keep it up! :D