Page 1 of 4

Forge 10/19/2010 (unofficial BETA) version

PostPosted: 19 Oct 2010, 14:49
by Chris H.
Forge 10/19/2010 (unofficial BETA) version

(Quest icons used created by Teekatas, from his Legendora set http://raindropmemory.deviantart.com)

4890 cards in total.

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

This beta release is meant to keep the user base busy while the dev team makes substantial changes to the code base. We can not predict at this time when these future changes will be finished and stable enough for the following beta release.

This version includes many new cards and bug fixes. Some of these new cards may have new bugs for you to find and to report. :)

I found a utility to remove the hidden Mac-related files. 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.

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

Dennis Bergkamp
Rob Cashwalker
Friar Sol
Slapshot5
Sloth
Zerker2000
Gofishus
Hellfish
Nerzahd
PhoenixAvenger
Chris H


Added many cards, including:

Code: Select all
Aboshan, Cephalid Emporer
About Face
Acceptable Losses
Adamaro, First to Desire
Aerie Ouphes
Air Servant
Ali Baba
Altar of Bone
Amok
Amugaba
Ancestor's Prophet
Ankh of Mishra
Aphetto Alchemist
Aphetto Grifter
Arbor Elf
Arcbound Ravager
Architects of Will
Argivian Find
Argivian Restoration
Armed Response
Armillary Sphere
Artificer's Intuition
Ashen Firebeast
Attunement
Auriok Transfixer
Aysen Bureaucrats
Backfire
Bad River
Barrin, Master Wizard
Beast of Burden
Ben-Ben, Akki Hermit
Benthic Djinn
Bile Urchin
Black Mana Battery
Blessed Reversal
Blinking Spirit
Blinkmoth Well
Bloodfire Colossus
Bloodshot Cyclops
Blue Mana Battery
Bone Flute
Bosh Iron Golem
Braidwood Sextant
Brittle Effigy
Bubble Matrix
Burr Grafter
Burst of Energy
Cabal Archon
Call to Mind
Call to the Netherworld
Catapult Master
Catapult Squad
Cephalid Retainer
Cinder Shade
City of Shadows
Civic Wayfinder
Claws of Gix
Clock of Omens
Cloudthresher
Coastal Drake
Combust
Compulsion
Coral Helm
Coretapper
Corpse Cur
Cowardice
Crashing Centaur
Crater Hellion
Crookclaw Elder
Crop Rotation
Darien, King of Kjeldor
Dark Heart of the Wood
Dawn Elemental
Dawnstrider
Death Ward
Deepwood Drummer
Demonic Torment
Diabolic Intent
Disturbed Burial
Diversionary Tactics
Dogpile
Dolmen Gate
Dreamscape Artist
Dust to Dust
Dwarven Bloodboiler
Elder Druid
Emperor Crocodile
Empty-Shrine Kannushi
Enemy of the Guildpact
Ephemeron
Errant Doomsayers
Etched Champion
Evil Presence
Extruder
Faith Healer
Feedback
Fend Off
Feral Hydra
Fevered Convulsions
Fiery Conclusion
Flame Elemental
Fling
Flood
Flood Plain
Floodbringer
Flowstone Sculpture
Fog Bank
Footbottom Feast
Forge Armor
Fork
Fortune Thief
Fume Spitter
Fungal Bloom
Fyndhorn Brownie
Gaea's Bounty
Gaea's Revenge
Galvanic Key
Gaseous Form
General's Kabuto
Ghitu Fire-Eater
Glare of Subdual
Gnarled Effigy
Goblin Gaveleer
Golgari Rotwurm
Grapeshot Catapult
Grasslands
Gravel Slinger
Great Whale
Green Mana Battery
Greenseeker
Grim Poppet
Grove of the Burnwillows
Guard Gomazoa
Guardian of the Guildpact
Gutless Ghoul
Harbinger of Spring
Harpoon Sniper
Hateflayer
Heart of Light
Heavy Ballista
Hokori, Dust Drinker
Holy Light
Homarid Shaman
Horizon Drake
Horn of Deafening
Hornet Cannon
Horobi Death's Wail
Hyperion Blacksmith
Icatian Crier
Innocence Kami
Inside Out
Inviolability
Jolting Merfolk
Journeyer's Kite
Kavu Titan
King Crab
Kitsune Diviner
Kitsune Riftwalker
Kjeldoran Javelineer
Kor Spiritdancer
Kuldotha Forgemaster
Kyren Negotiations
Lady Evangela
Last Stand
Lava Hounds
Lawbringer
Leonin Abunas
Leonin Battlemage
Lieutenant Kirtar
Lifespinner
Lighning Crafter
Lightbringer
Lingering Mirage
Llanowar Druid
Luminous Angel
Lux Cannon
Macabre Waltz
Mage il-Vec
Magma Giant
Magma Rift
Magnigoth Treefolk
Magus of the Abyss
Marsh Gas
Masumaro, First to Live
Mental Discipline
Merfolk Seastalkers
Merrow Wavebreakers
Meteor Storm
Minamo, School at Water's Edge
Mind Games
Mind Over Matter
Mindless Automaton
Minotaur Illusionist
Miren, the Moaning Well
Mistform Ultimus
Mistmeadow Skulk
Mobilize
Moggcatcher
Molten Hydra
Mongrel Pack
Mortal Combat
Mountain Valley
Mungha Wurm
Myr Matrix
Nameless Race
Narcissism
Nath's Buffoon
Nature's Spiral
Necrogen Censer
Niall Silvain
Nightscape Master
Oboro Breezecaller
Ogre Shaman
Ondu Giant
Opposition
Overwhelming Stampede
Palinchron
Pentavus
Pilgrim's Eye
Planar Portal
Primalcrux
Puppet Strings
Pyromania
Quagnoth
Quirion Trailblazer
Reborn Hope
Reckless Abandon
Recollect
Red Mana Battery
Relearn
Revive
Relic Barrier
Reset
Revelsong Horn
Revive
Ridged Kusite
Riptide Biologist
Rishadan Pawnshop
Rishadan Port
Rocky Tar Pit
Ronom Hulk
Sacellum Archers
Safehold Sentry
Sanctum Gargoyle
Sandskin
Sandsower
Sanity Grinding
Scepter of Dominance
Scourge of Kher Ridges
Sea's Claim
Seahunter
Search for Tomorrow
Seed the Land
Seedborn Muse
Seek the Horizon
Seeker of Skybreak
Seismic Assault
Selenia Dark Angel
Serum Tank
Shard Volley
Sharuum the Hegemon
Shauku's Minion
Shield of Kaldra
Shoreline Raider
Shrapnel Blast
Silent specter
Silkbind Faerie
Skeleton Ship
Skyshroud Claim
Skyshroud Poacher
Slingshot Goblin
Sliptide Serpent
Soldier Replica
Sonic Burst
Sonic Seizure
Soratami Cloudskater
Soul Bleed
Souldrinker
Spellbane Centaur
Spincrusher
Spiteful Visions
Spitting Hydra
Spoils of Victory
Spurred Wolverine
Staff of the Ages
Stalking Bloodsucker
Statecraft
Steelshaper Apprentice
Sterling Grove
Stonybrook Angler
Storm Front
Storm World
Strafe
Subterranean Spirit
Sunscape
Sustaining Spirit
Tainted Well
Teardrop Kami
Tectonic Instability
Temporal Adept
Test of Endurance
Thalakos Drifters
The Abyss
Thopter Squadron
Thorn Thallid
Thrashing Wumpus
Thunder Dragon
Timbermare
To Arms!
Touchstone
Tower of Coireall
Transmutation
Trickster Mage
Trigon of Corruption
Trigon of Infestation
Trigon of Mending
Trigon of Rage
Trigon of Thought
Trip Noose
Triskevalus
Tsabo Tavoc
Twisted Image
Typhoon
Umbra Stalker
Unearth
Untamed Wilds
Urbog Phantom
Vampire Hounds
Vampiric Dragon
Venomspout Brackus
Venser's Journal
Vent Sentinel
Verdant Force
Vitalize
Voltaic Construct
Vulshok Heartstoker
Wall of Blood
Wanderer's Twig
War-Torch Goblin
Warp Artifact
Waterfront Bouncer
White Mana Battery
Windreaver
Winds of Change
Witch Hunter
Workhorse
Worship
Yavimaya Granger
`
The links to the various archives:

The Forge 10/19/2010 archive (requires java 5 or 6):

forge1019.7z

Re: Forge 10/19/2010 (unofficial BETA) version

PostPosted: 19 Oct 2010, 14:49
by Chris H.
Fixes/Features:

- More color simplifications.
- I made a minor edit to Wurmcoil Engine. This card will now create tokens with the image name "c_3_3_wurm_deathtouch.jpg" and "c_3_3_wurm_lifelink.jpg". We have a few other icons that required us to use this image name system.
- Fixed the four new Metalcraft cards that were recently added: Auriok Sunchaser, Chrome Steed, Ezuri's Brigade and Ghalma's Warden.
- Added etbMakeToken keyword (same syntax as spMakeToken, but with an additional parameter for stack description.)
- Converted Ambassador Oak, Captain of the Watch, the 5 Hunted creatures, Springjack Shepherd to etbMakeToken keyword.
- Converted both of Guardian of Cloverdell's abilities to keyword.
- Converted Ant Queen and Sengir Autocrat to xxMakeToken keyword.
- Added Dennis' potential fix to Card.getText() in response to the problem that Bog Wraith was having.
- Converted an additional dozen or so cards to xxMakeToken keyword.
- Fixed the etbBounceTgtMay keyword for Surrakar Banisher.
- Fixed a changeling bug in xCount.
- Converted Selesnya Evangel to abMakeToken keyword. Hopefully this fixes the Game Error reported on the forums. I could not repro it.
- Converted Wolfbriar Elemental to keyword (xCount now accepts Count$TimesKicked.)
- Converted Goblin Offensive to spMakeToken keyword.
- Added Dual Lands to 2-color generator. Changed mana counting to count each mana character, (theme and 2-color.) Moved individual deck generators to a list choice dialog. (Gui_NewGame)
- Added property setting to enable/disable display of the random 2-color deck list.
- Fixed AI targeting for Cathartic Adept.
- Converted Patrol Signaler to abMakeToken keyword.
- Converted Lich Lord of Unx and Jund Battlemage to keyword.
- New keyword: At the beginning of the end step, destroy CARDNAME.
- Converted Khalni Garden to etbMakeToken keyword.
- Converted Vitu-Ghazi, the City-Tree to abMakeToken keyword.
- Improved the AI of Quicksilver Amulet.
- Converted abLoseLife to use Ability Cost and Target.
- Cleanup in PlayerLife.
- Fix for abMakeToken that caused non-Creatures to be affected by summoning sickness. (Mobilization couldn't be activated on same turn it was cast.)
- Fixed poor interaction with "Freezing Abilities" and Canceling out of Abilities that causes a game crash.
- Reset the Freeze Stack when the normal Stack is Reset to allow the next game to progress as normal.
- Simplified Saproling token creation.
- Deleted the "1, Sacrifice CARDNAME: Draw a card." code from CardFactory.java and CardFactoryUtil.java. Converted the cards using this keyword to abDrawCards 1 Sac<1/CARDNAME>:1:Draw a card. Impacts the 5 Spellbombs and Grave-Shell Scarab.
- Fixed Stormscape Master's non-functional keywords.
- Added "Prevent all damage that would be dealt to CARDNAME." keyword. Converted Cho-Manno, Revolutionary to use this keyword.
- Clear Frozen Stack if an Ability is canceled during targeting.
- SpellAbility_Requirement ready to handle Spells and Copied Spells.
- Changed Reanimate to use AI_getBestCreature.
- Added Goblin Gaveleer. Added code to StaticEffects and GameActionUtil and tested Goblin Gaveleer. It will pump correctly, still need to add Goblin Gaveleer to the equipMagnetList located in CardFactory_Equipments and CardFactoryUtil.
- Added "Prevent all combat damage that would be dealt to and dealt by CARDNAME." and "Prevent all combat damage that would be dealt to CARDNAME." keywords.
- AI takes into account the prevent damage keywords now when attacking/blocking.
- Fixed freyalises_radiance.txt casting cost from 3 U to 1 G.
- GameAction.addCombatDamage now calls addDamage(player, source, damage) instead of PlayerLife.subtractLife(). Ali from Cairo check moved to addDamage(...) so things like milling or abLoseLife will still cause a loss.
- Added evaluateCreature and used it in AI_getBestCreature and AI_getWorstCreature.
- Fixeded Inkfathom Divers etb ability.
- Minor edit to CardFactoryUtil.eqPump_Equip. The equipMagnetList will now add Goblin Gaveleer and Loxodon Punisher to this list. Updated the equipments located in CardFactory_Equipments to include Goblin Gaveleer in the equipMagnetList.
- Updated evaluateCreature.
- Added getAmountOfKeyword and getKeywordMagnitute to Card.java.
- Fixed Icatian Crier P/T.
- Fixed Stone-Seeder Hierophant ability description.
- Fixed Ghost-Lit Redeemer abGainLife amount.
- Fixed possible NullPointerException in Elvish Fury buyback for AI. May require a more generalized solution.
- Prevented a possible NullPointerException in SpellAbility.setTargetCard().
- Updated the following to their appropriate keyword: Putrid Leech, Pyrite Spellbomb, Ravenous Baloth, Sunbeam Spellbomb, Zuran Orb.
- Updated Ability_Activated to only accept abCost constructor.
- Updated the following cards to use the newer consructor: AEther Spellbomb, Lifespark Spellbomb, Necrogen Bomb, Bottle of Suleiman, Barl's Cage, Sakura-Tribe Elder, Tradewind Rider, Kargan Dragonlord, Singing Tree, Elephant Graveyard.
- Updated Sakura-Tribe to be able to activate even if there are no basics left in library.
- Updated logic in canPlay() of Activated_Ability.
- Fixed exception when Scry with lib.size() < scry num.
- Added two keywords, abTapTgt and abTapAll.
- Converted a number of cards to the abTapTgt keyword.
- Fixed Fading keyword for Jolting Merfolk.
- Fixed the miss-spelling for the card Aboshan, Cephalid Emperor.
- Fixed Convincing Mirage's spell text.
- Added SVar:RemAIDeck:True to some of the new abTapTgt cards and small fixes.
- Added the text "Activate this ability only once each turn." to Putrid Leech and updated the other cards with it to the new oracle wording.
- Added abUntapTgt keyword.
- Converted Ley Druid, Deserted Temple, Earthcraft, Filigree Sages and Juniper Order Druid to new abUntapTgt keyword.
- Fixed pic URL for Errant Doomsayers.
- Changed Fading and Vanishing so they aren't removed as keywords.
- Updated subtractCounter to use Vanishing as a keyword.
- Bugfix: Liege of the Pit does not have an upkeep cost while Morphed.
- Converted Jandor's Saddlebags to keyword.
- Updated SVar for recently added cards.
- Converted Puppeteer and Stone-Seeder Hierophant to keyword.
- Changed Cost_Payment.canPayAdditionalCosts() to be a Static function.
- Changed "spike" keyword to be an Activated_Ability.
- Removed isSick() from abMakeToken as this is taken care of by canPayAdditionalCosts().
- Added Remove<> as an new kind of Ability_Cost.
- Added Attunement to use Return<1/CARDNAME>.
- Changed meloku_the_clouded_mirror to use Return<1/Type>.
- Both cards are RemAIDecks until AI updated to handle these abilities.
- Fix for Minamo, School at Water's Edge file name.
- Converted Voltaic Key and Wirewood Lodge to keyword.
- Initial development of AbilityFactory. Only implemented "DealDamage" ability. Prodigal Pyromancer is first card to get the makeover.
- Removed Lifelink and Guilty Conscience effects from executeCombatDamageEffects. They are also in addDamage and triggered twice.
- Tweaked Ashnod's Transmogrant, Time Vault, Stuffy Doll, Tradewind Rider, Elephant Graveyard, use of AbCost and Target.
- Changed Stuffy Doll's damage interaction to use AllZone.GameAction.addDamage.
- Fixed AbilityFactory use of canPayAdditionalCost.
- Replaced the Magnet lists for auras and equipments with checks for the SVars EnchantMe and EquipMe.
- First draft of an overdue keyword, spReturnTgt. This will replace the spRaiseDead keyword. It should also handle Resurrect type spells as it can be set to return a card from graveyard to hand or battlefield.
- This keyword required two new methods to be added to SpellAbility.java. The new methods getTargetList() and setTargetList() is needed for the spReturnTgt input. Some of the spReturnTgt cards return more than just a single card and I needed something similar to getTargetCard() and setTargetCard().
- Converted 11 cards from spRaiseDead to spReturnTgt. Includes Boggart Birth Rite; Death's Duet; Deja Vu; Disentomb; Raise Dead; Reconstruction; Recover; Return to Battle; Ritual of Restoration; Sage's Knowledge and Urborg Uprising.
- Deleted the old spRaiseDead keyword code.
- Re-structured AbilityFactory. AbilityFactory actually provides interfaces to reference universal parameters. Moved DealDamage ability code to dedicated class, DealDamage. Picked apart DealDamage Ability_Activated code into helper methods common to both the Spell version and Ability version.
- Small fix to getEquipMagnets.
- Modified spReturnTgt to handle the four Resurrection type spells that are included in forge. Converted these cards to spReturnTgt: Breath of Life; False Defeat; Resurrection and Zombify. Deleted the unneeded code block.
- Converted Elven Cache and Regrowth to spReturnTgt keyword and deleted the code block.
- Converted Reclaim to the spReturnTgt keyword and deleted the unneeded code block. Modified the spReturnTgt code to handle to top of library.
- Fixed Koth AI.
- Removing Static from Member Variables of AbilityFactory so they are not shared between cards.
- Create a new AbilityFactory for each time AF is used to prevent issues with Factory not being fresh.
- Added AbilityFactory_Counters.java for AFs that deal with putting or removing counters from cards.
- Added createAbilityPutCounters for Abilities that put Counters on cards.
- Added Amok, Fume Spitter, and Trigon of Corruption as Samples of using PutCounter.
- Converted False Mourning and Salvage to the spReturnTgt keyword and deleted the unneeded code block.
- Fixed Elven Cache; Reclaim; Recollect and Regrowth.
- Changed "Return Up To" to "UpTo" in both Urborg Uprising and to spReturnTgt.
- Added Unearth and changed spReturnTgt code to include a spell description parameter which in turn allowed a cycling card to be added.
- Third draft of AbilityFactory. Overwrites changes in AbilityFactory from r2620. Renamed DealDamage to AbilityFactory_DealDamage. Now supports the spell version. (Shock) All static modifiers removed. Added support for Buyback in the CardFactory handler for AbilityFactory cards.
- Fixing merge issues for AbilityFactory.
- Replaced String.isEmpty() with String.length()==0 for Java < 1.6 compat.
- Shortened the keywords of some spReturnTgt spells by using "Card" as Type.
- Removed executePlayerDamageEffects from addCombatDamage, since it gets also called in addDamage.
- Added keyword at endstep shuffle CARDNAME into owner's library.
- Fixed +n pump issue. The "fixes"(remove '+') were seriously bugging me: if your cards don't parse correctly, don't change the cards, change the Parser.
- Added the destination battlefield to spTutor.
- Fixed Creature type for Blistering Firecat.
- Fixed Duress so Artifact Lands (like Darksteel Citadel) cannot be targeted.
- Fixed Goblin Grenade to addDamage instead of subtractLife.
- Updated Bloodfire Colossus.
- Fixed many instances of subtractLife when it should be addDamage.
- Converted Mogg Fanatic to keyword.
- Fixed Search for Tomorrow.
- Shortened the keyword of Duress by using "Card" as Type.
- Fixed instances of setLife and subtractLife that should have been using addDamage.
- Implemented a more extensive language tranlation system.
- Fixed pic URLs for Argivian Restoration, Call to Mind and Call to the Netherworld.
- Converted Luminous Angel to keyword.
- Fixed Archon of Redemption.
- Fixed a little bug in the wheneverkeyword.
- Added a first draft of the use of getValidCard in xCount.
- Added Exile to Ability_Cost code (e.g. |Cost$Exile<1/Creature>|).
- The generic "tap: add ?" keyword for mana now accepts X (read from SVar:X:<calculation>).
- Replace isCurse parsing with a simple isCurse() function in AbilityFactory.
- Tweaked AbilityCost toString function for Spells.
- Additional costs now displayed for Spells using AbilityFactory.
- Buyback spells now alter the abCost value for Abilities generated by AbilityFactory.
- AbCost should return an Empty String for Spells that don't have additional costs.
- Fixed spReturnTgt and it will no longer give a null when using Urborg Uprising.
- Converted Reckless Abandon and Goblin Grenade to use DealDamage Ability Factory.
- Delete unused DealDamage.java class that was already renamed.
- Converted these cards to keyword: Tor Wauki, Lady Caleria, Femeref Archers, Tetsuo Umezawa and Nimble Mongoose.
- Fixes to Exile Ability_Cost.
- Fixed the types for Steel Leaf Paladin, Badlands, Tropical Island, Savannah and Volcanic Island.
- Added AbilityFactory_Fetch. Primarily for Fetching Lands, but can also work for cards like Tinker or Tutors.
- AbilityFactory abilities without targets will have the Card Name as their Stack description.
- Converted Harrow to use AbilityFactory_Fetch. Sacrifice will now happen after cost is paid.
- Added some support functions for Fetchland abilities.
- Converted new Fetchlands (Pay 1 life, Sac this) to use AF_Fetch.
- AI can now use the Fetchlands, attemps to balance available mana based on what basics he has in play and in hand.
- Removed Niall Silvain from random decks.
- Added hidden keywords.
- Converted Bubble Matrix to hidden keyword.
- Updated Muraganda Petroglyphs to ignore hidden keywords.
- Converted more cards to hidden keywords.
- Updated Target_Selection.input_targetValid() to call getValidCards(Tgts, controller).
- Added generated serials to the new Input functions in Cost_Payment.
- Fixed AI bugs in AbilityFactory_Fetch if Destination is not battlefield and added revealing.
- Fixed Crowd Favorite keyword.
- AF_Counters was using the wrong canTarget function.
- Removed GameAction.canTarget so it's not accidentally used again.
- Apparently the two canTarget functions had inverted parameters,. Now swapped.
- Fixed the name for Contagious Nim.
- Added basic fizzling functionality.
- Added isTargetStillValid which checks the Target class, Auras, and canTarget().
- Added check for TgtZone in Ability_Factory. This will be necessary for targeting cards not on the battlefield.
- Removed unused GameAction.canTarget(player).
- Fixed the destination Library in AbilityFactory_Fetch by moving the shuffling effect and improved the prompt.
- AI improvements of fetch ability if destination is battlefield.
- Added several new themes to the "Semi-Random Theme Deck" generator.
- Fixed Diamond Valley to not check canTarget() since it's a sacrifice. The stack still says targeting. This can probably be converted to abGainLife keyword.
- Bugfix for fixing deck size. Basic lands weren't put into the CardCounts hashmap.
- Added a Random color option to the new 2 color deck generator.
- Fixed Herd Gnarr casting cost.
- Fixed a bug in the isPresent condition of stPump.
- Fixed a bug in setTargetList().
- Added a Treefolk theme.
- Updated the Domain theme.
- Fixed color of tokens made by Ordered Migration.
- Several fixes to "Prevent all combat damage that would be dealt to and dealt by CARDNAME.".
- Added Prevent all combat damage that would be dealt dealt by CARDNAME.
- Fixed the typo in "Prevent all combat damage that would be dealt by CARDNAME."
- Updated Gravedigger's text to current oracle terms.
- Updated combat AI to use the new keyword.
- Made use of the canDamage function in two classes to centralize some code.
- Fixed rarity for Ashes to Ashes.
- Centralized all "Protection from" checks to the hasProtectionFrom function.
- AF_Counters and AF_DealDamage can now use information about cards Sacrificed as part of the Payment through xCount.
- Updated current AF Spells to use abCost and Target in their constructor.
- Cleanup in Spell.java.
- Added the keyword Protection with ValidCard syntax.
- Moved the input for spReturnTgt to CardFactoryUtil and added Buyback code to the spReturnTgt keyword.
- Fixed Arashi, Sky Asunder.
- Added a mono black theme.
- Fixed Text for Ankh of Mishra.
- Fixed Type and Name problems with Selenia, Dark Angel.
- Added doDrawBack() to spReturnTgt.
- Cleanup in the code of Sovereigns of Lost Alara.
- Removed About Face,Inside Out,Transmutation & Twisted Image from AI decks. I think they are too situational (except possibly as very crude removal) to code a decent AI function for. Prove me wrong, though, by all means.
- Added GainLife into AbilityFactory.
- Converted Diamond Valley to GainLife AbilityFactory.
- Improved ManaPool's getText() to list total amounts of each mana instead of a wall of letters.
- Added a white equipment theme.
- Fixed the keyword for Elven Cache, False Mourning, Recollect and Regrowth.
- Improved Mana Pool paying system. Choices will now group mana by color/snow instead of a big wall of letters.
- Fixed image for Lightning Crafter.
- Added AF_Combat for Fog. The first iteration of the Fog ability is for Preventing All of Combat Damage. The Fog ability is used in many different circumstances, so we can add each one as we go.
- Converted Spike Weaver to keyword.
- Changed the dealdamage ability_factory to work without the Tgt parameter (to support ValidTgt only).
- Added AbilityFactory_Bounce.
- Converted Karakas to keyword.
- Added missing Class.
- Updated Thalakos Drifters.
- Modified spReturnTgt to handle cards which return "any number" of cards form graveyard.
- Added 3 color random deck generator.
- Changed declaration of private classes in Generate2ColorDeck.
- Fixed the nullpointer bug with Tithe. (Realized that the card is in no way properly implemented.)
- Converted to keyword: Sunlance and Nameless Inversion.
- Converted Legacy Weapon to keyword.
- Converted Sunlance and Strafe to keyword.
- Fixed Gaea's Cradle etc. bug if zero mana is generated.
- Fixed text of Strafe and Sunlance.
- Keyworded Mindless Automaton.
- Fixed type of Workhorse and keyworded the etbcounter ability.
- Converted Life from the Loam and Reinforcements to keyword.
- Fixed Card.isValidCard(String[], String). It was looping on a new array of length 1 instead of the passed in array, so things like "Artifact,Creature,Land" would only be recognized as "Artifact".
- Reworked Burst Lightning. Creature targeting should be better and the NullPointerExceptions reported in the forums should be fixed.
- Comment updates for abUntapTarget keyword code.
- It's bad enough that we use Strings for everything all over the place. Switching instances of "Human" to Constant.Player.Human and "Computer" to Constant.Player.Computer.
- Fixed the rarities for Urborg Uprising and Voltaic Construct.
- Added spTapTgt, spUntapAll, spUntapTgt and abUntapAll keywords.
- Converted 3 spTutor spells to SPFetch (because the AI is better).
- Fixed the YouCtrl issue with abTap and abUntap.
- Consolidated abilties of Ali from Cairo, Worship, Fortune Thief and Sustaining Spirit.
- Deleted code for keyworded Sorcery and Creature cards.
- Fixed the HQ pic URL for To Arms!.
- Adding updated Python script that will update each cards data file with the three letter abbreviation of each set the card appears in.
- Added the Flashback code to the end of the spMakeToken keyword.
- Converted Call of the Herd to keyword.
- Minor fix to Jace, the Mind Sculptor.
- Converted 3 cards from spTutor to SP$Fetch.
- Converted Terramorphic Expanse and Evolving Wilds to keyword.
- Converted Elephant Ambush to keyword.
- Added rarity and LQ pic url to Combust.

Re: Forge 10/19/2010 (unofficial BETA) version

PostPosted: 19 Oct 2010, 15:20
by DemoneNero
Thanks for letting us know :D

Re: Forge 10/19/2010 (unofficial BETA) version

PostPosted: 19 Oct 2010, 16:17
by mtgrares
Almost 400 new cards in less than a month, great! This is a ton of code.

Forge finally has Arcbound Ravager. Arcbound Ravager + Disciple of the Vault = some very fast wins. :D

Re: Forge 10/19/2010 (unofficial BETA) version

PostPosted: 19 Oct 2010, 18:12
by DemoneNero
thanks a lot guys :D

Re: Forge 10/19/2010 (unofficial BETA) version

PostPosted: 19 Oct 2010, 18:16
by timmermac
I can't wait to start playing with it! As soon as I accept the half a billion Facebook requests that seem to have piled up on me. #-o

Re: Forge 10/19/2010 (unofficial BETA) version

PostPosted: 19 Oct 2010, 18:40
by SoulStorm
Thanks for all the hard work that has gone into yet another amazing release!

Re: Forge 10/19/2010 (unofficial BETA) version

PostPosted: 19 Oct 2010, 20:05
by CatzPaw164
You guys are awesome! I always get so excited when I see a new release. Keep up the great work!

Re: Forge 10/19/2010 (unofficial BETA) version

PostPosted: 19 Oct 2010, 20:58
by rjp14
Great work however Terramorphic Expanse and Evolving Wilds no longer work correctly. As the land that is taken out of your library is put in your hand instead of onto the battlefield tapped.

Re: Forge 10/19/2010 (unofficial BETA) version

PostPosted: 19 Oct 2010, 21:03
by timmermac
Oh my stars. Magnigoth Treefolk is an absolute beast in the "deck" that I've been playing the past month or so. I play with all of the cards, which means I have all 5 basic land types involved. Bwahahahahahaha :twisted:

Re: Forge 10/19/2010 (unofficial BETA) version

PostPosted: 20 Oct 2010, 05:33
by Sloth
rjp14 wrote:Great work however Terramorphic Expanse and Evolving Wilds no longer work correctly. As the land that is taken out of your library is put in your hand instead of onto the battlefield tapped.
Ups, sorry. I will correct this.

Re: Forge 10/19/2010 (unofficial BETA) version

PostPosted: 20 Oct 2010, 05:45
by gestalt
While activating stalking stones to make it a creature i got the following exception:
Code: Select all
An error has occured. You can copy/paste this message or save it to a file.
Please report this, plus what you tried to do, to:
    http://www.slightlymagic.net/forum/viewforum.php?f=26
If you don't want to register an account, you can mail it directly to
    mtgerror@yahoo.com


Index: 0, Size: 0


Version:
Forge -- official beta: $Date: 2010-09-14 08:34:27 -0400 (Tue, 14 Sep 2010) $, SVN revision: $Revision: 2039 $

OS: Windows Vista Version: 6.0 Architecture: x86

Java Version: 1.6.0_22 Vendor: Sun Microsystems Inc.

Detailed error trace:
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
    at java.util.ArrayList.RangeCheck(Unknown Source)
    at java.util.ArrayList.get(Unknown Source)
    at forge.ManaCost.split(ManaCost.java:169)
    at forge.ManaCost.<init>(ManaCost.java:24)
    at forge.Card.addColor(Card.java:537)
    at forge.CardFactoryUtil.activateManland(CardFactoryUtil.java:4553)
    at forge.CardFactory_Lands$96.resolve(CardFactory_Lands.java:3062)
    at forge.Input_StackNotEmpty.selectButtonOK(Input_StackNotEmpty.java:46)
    at forge.GuiInput.selectButtonOK(GuiInput.java:36)
    at forge.GuiDisplay4.okButtonActionPerformed(GuiDisplay4.java:985)
    at forge.GuiDisplay4.access$3(GuiDisplay4.java:984)
    at forge.GuiDisplay4$25.actionPerformed(GuiDisplay4.java:771)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

Re: Forge 10/19/2010 (unofficial BETA) version

PostPosted: 20 Oct 2010, 07:27
by gestalt
computer tried to cast Tenza, Godo's Maul and i got the following exception:

Code: Select all
An error has occured. You can copy/paste this message or save it to a file.
Please report this, plus what you tried to do, to:
    http://www.slightlymagic.net/forum/viewforum.php?f=26
If you don't want to register an account, you can mail it directly to
    mtgerror@yahoo.com


3


Version:
Forge -- official beta: $Date: 2010-09-14 08:34:27 -0400 (Tue, 14 Sep 2010) $, SVN revision: $Revision: 2039 $

OS: Windows Vista Version: 6.0 Architecture: x86

Java Version: 1.6.0_22 Vendor: Sun Microsystems Inc.

Detailed error trace:
java.lang.ArrayIndexOutOfBoundsException: 3
    at forge.GameActionUtil$23.removeKeyword(GameActionUtil.java:10918)
    at forge.GameActionUtil$23.execute(GameActionUtil.java:10698)
    at forge.GameAction.checkStateEffects(GameAction.java:664)
    at forge.GameAction.CheckWheneverKeyword(GameAction.java:914)
    at forge.PlayerZone_ComesIntoPlay.add(PlayerZone_ComesIntoPlay.java:69)
    at forge.Spell_Permanent.resolve(Spell_Permanent.java:61)
    at forge.Input_StackNotEmpty.selectButtonOK(Input_StackNotEmpty.java:46)
    at forge.GuiInput.selectButtonOK(GuiInput.java:36)
    at forge.GuiDisplay4.okButtonActionPerformed(GuiDisplay4.java:985)
    at forge.GuiDisplay4.access$3(GuiDisplay4.java:984)
    at forge.GuiDisplay4$25.actionPerformed(GuiDisplay4.java:771)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

Re: Forge 10/19/2010 (unofficial BETA) version

PostPosted: 20 Oct 2010, 16:03
by SoulStorm
I cast Iona, Shield of Emeria, chose blue, yet the computer played Paralyzing Grasp.

Thanks

Re: Forge 10/19/2010 (unofficial BETA) version

PostPosted: 21 Oct 2010, 03:54
by gestalt
I got another exception when computer was trying to cast Llanowar Mentor

Code: Select all
An error has occured. You can copy/paste this message or save it to a file.
Please report this, plus what you tried to do, to:
   http://www.slightlymagic.net/forum/viewforum.php?f=26
If you don't want to register an account, you can mail it directly to
   mtgerror@yahoo.com


There is an error in the card code for Llanowar Mentor:



Version:
Forge -- official beta: $Date: 2010-09-14 08:34:27 -0400 (Tue, 14 Sep 2010) $, SVN revision: $Revision: 2039 $

OS: Windows Vista Version: 6.0 Architecture: x86

Java Version: 1.6.0_22 Vendor: Sun Microsystems Inc.

Detailed error trace:
java.lang.RuntimeException: Mana_Part : checkMana() error, argument mana is invalid mana, mana - a
   at forge.Mana_Part.checkSingleMana(Mana_Part.java:32)
   at forge.Mana_PartColor.<init>(Mana_PartColor.java:15)
   at forge.ManaCost.getManaPart(ManaCost.java:195)
   at forge.ManaCost.split(ManaCost.java:165)
   at forge.ManaCost.<init>(ManaCost.java:24)
   at forge.GameAction.GetSpellCostChange(GameAction.java:3229)
   at forge.ComputerUtil.canPayCost(ComputerUtil.java:191)
   at forge.ComputerAI_General.getPlayable(ComputerAI_General.java:256)
   at forge.ComputerAI_General.getMain2(ComputerAI_General.java:244)
   at forge.ComputerAI_General.playCards(ComputerAI_General.java:35)
   at forge.ComputerAI_General.main2(ComputerAI_General.java:31)
   at forge.ComputerAI_Input.think(ComputerAI_Input.java:57)
   at forge.ComputerAI_Input.showMessage(ComputerAI_Input.java:29)
   at forge.GuiInput.setInput(GuiInput.java:27)
   at forge.GuiInput.update(GuiInput.java:21)
   at java.util.Observable.notifyObservers(Unknown Source)
   at java.util.Observable.notifyObservers(Unknown Source)
   at forge.MyObservable.updateObservers(MyObservable.java:10)
   at forge.Phase.nextPhase(Phase.java:309)
   at forge.Phase.nextPhase(Phase.java:313)
   at forge.Phase.nextPhase(Phase.java:313)
   at forge.Phase.nextPhase(Phase.java:313)
   at forge.Phase.nextPhase(Phase.java:313)
   at forge.Phase.nextPhase(Phase.java:313)
   at forge.Phase.nextPhase(Phase.java:313)
   at forge.Phase.nextPhase(Phase.java:313)
   at forge.Phase.nextPhase(Phase.java:313)
   at forge.Phase.nextPhase(Phase.java:313)
   at forge.Phase.nextPhase(Phase.java:313)
   at forge.GuiDisplay4$25.actionPerformed(GuiDisplay4.java:776)
   at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
   at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
   at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
   at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
   at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
   at java.awt.Component.processMouseEvent(Unknown Source)
   at javax.swing.JComponent.processMouseEvent(Unknown Source)
   at java.awt.Component.processEvent(Unknown Source)
   at java.awt.Container.processEvent(Unknown Source)
   at java.awt.Component.dispatchEventImpl(Unknown Source)
   at java.awt.Container.dispatchEventImpl(Unknown Source)
   at java.awt.Component.dispatchEvent(Unknown Source)
   at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
   at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
   at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
   at java.awt.Container.dispatchEventImpl(Unknown Source)
   at java.awt.Window.dispatchEventImpl(Unknown Source)
   at java.awt.Component.dispatchEvent(Unknown Source)
   at java.awt.EventQueue.dispatchEvent(Unknown Source)
   at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
   at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
   at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
   at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
   at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
   at java.awt.EventDispatchThread.run(Unknown Source)