Forge 10/02/2010 (unofficial BETA) version
by mtgrares
Moderators: timmermac, Blacksmith, KrazyTheFox, Agetian, friarsol, CCGHQ Admins
Forge 10/02/2010 (unofficial BETA) version
by Chris H. » 02 Oct 2010, 12:47
Forge 10/02/2010 (unofficial BETA) version
(Quest icons used created by Teekatas, from his Legendora set http://raindropmemory.deviantart.com)
4543 cards in total.
This version is based upon the revision # 2481 which is found on our SVN. This version includes a major architectural change to the card data storage! We are no longer using the file cards.txt. Instead, each card is on a separate text file located under /res/cardsfolder/.
This version includes many new cards and we have a good selection of Scars of Mirrodin cards for you to use. There are over 400 new cards.
We pulled QuestData Preferences out of the code and placed it into a text file. This should allow users to tweak some Quest Options without needing to recompile the code. These values can now be found here: /res/quest/quest.preferences. Hopefully these names are descriptive enough that most of them can be figured out.
New Random Deck Generator with user selected colors. Added combo box selections for 2 color random deck. We also added a first-draft of a Random Theme Deck Generator. The sample themes are fairly limited at this time. We could use some help in creating additional theme files for the Random Theme Deck Generator.
Some combat related bugs are now fixed and the AI should now consider special circumstances (indestructible, flanking, wither and infect) when attacking and blocking.
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
Sloth
Friar Sol
Slapshot5
Zerker2000
Snacko
Hellfish
PhoenixAvenger
Chris H
Added many cards, including:
The links to the various archives:
(Quest icons used created by Teekatas, from his Legendora set http://raindropmemory.deviantart.com)
4543 cards in total.
This version is based upon the revision # 2481 which is found on our SVN. This version includes a major architectural change to the card data storage! We are no longer using the file cards.txt. Instead, each card is on a separate text file located under /res/cardsfolder/.
This version includes many new cards and we have a good selection of Scars of Mirrodin cards for you to use. There are over 400 new cards.
We pulled QuestData Preferences out of the code and placed it into a text file. This should allow users to tweak some Quest Options without needing to recompile the code. These values can now be found here: /res/quest/quest.preferences. Hopefully these names are descriptive enough that most of them can be figured out.
New Random Deck Generator with user selected colors. Added combo box selections for 2 color random deck. We also added a first-draft of a Random Theme Deck Generator. The sample themes are fairly limited at this time. We could use some help in creating additional theme files for the Random Theme Deck Generator.
Some combat related bugs are now fixed and the AI should now consider special circumstances (indestructible, flanking, wither and infect) when attacking and blocking.
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
Sloth
Friar Sol
Slapshot5
Zerker2000
Snacko
Hellfish
PhoenixAvenger
Chris H
Added many cards, including:
- Code: Select all
Accorder's Shield
Acid Web Spider
AEther Mutation
AEthersnipe
Afflict
Afterlife
Alpha Tyrannax
Altar Golem
An-Zerrin Ruins
Ancient Hydra
Angel's Feather
Angelic Voices
Angry Mob
Anurid Barkripper
Apothecary Initiate
Arcades Sabboth
Ark of Blight
Army Ants
Artifact Mutation
Assault Strobe
Attrition
Aura Fracture
Aura Mutation
Aura of Silence
Auriok Edgewright
Auriok Glaivemaster
Auriok Sunchaser
Aven Archer
Aven Fogbringer
Back to Basics
Baku Altar
Barbarian Riftcutter
Barbed Battlegear
Barl's Cage
Barrage Ogre
Battlewise Aven
Beasts of Bogardan
Bellowing Tanglewurm
Bewilder
Blackcleave Cliffs
Blackcleave Goblin
Bladed Pinions
Bladewing's Thrall
Blaster Mage
Blazethorn Scarecrow
Blight Mamba
Blind Creeper
Boar Umbra
Bog Gnarr
Bog-Strider Ash
Boggart Arsonists
Boggart Loggers
Boggart Sprite-Chaser
Bonds of Quicksilver
Boneshard Slasher
Book of Rass
Brass Secretary
Carapace Forger
Carnage Altar
Carrion Call
Centaur Archer
Cephalid Scout
Cerebral Eruption
Cerulean Sphinx
Chandler
Chastise
Childhood Horror
Chrome Steed
Cliffrunner Behemoth
Cloudpost
Cloudreach Cavalry
Cloudreach Cavalry
Cloudskate
Cockatrice
Condemn
Constricting Tendrils
Contagious Nim
Contemplation
Convincing Mirage
Copperline Gorge
Courier's Capsule
Crackdown
Crevasse
Crimson Manticore
Crossbow Infantry
Crystal Rod
Cutthroat il-Dal
Cystbearer
D'Avenant Archer
Damping Field
Daraja Griffin
Darkblast
Darkslick Drake
Darkslick Shores
Darksteel Juggernaut
Darksteel Myr
Darksteel Sentinel
Dauthi Cutthroat
Dawnray Archer
Deadfall
Death Mutation
Deathgazer
Demon's Horn
Demon's Jester
Devout Harpist
Devout Witness
Disfigure
Dispeller's Capsule
Dive Bomber
Divebomber Griffin
Divine Sacrament
Divine Verdict
Dizzy Spell
Dogged Hunter
Drag Down
Dragon's Claw
Drake Umbra
Dread Specter
Dream Prowler
Drop of Honey
Dross Hopper
Dross Scorpion
Druid Lyrist
Duergar Assailant
Dust Bowl
Dwarven Miner
Earth Surge
Earthblighter
Eastern Paladin
Ebon Drake
Eel Umbra
Eland Umbra
Elephant Graveyard
Elf Replica
Elite Archers
Elvish Handservant
Elvish Hexhunter
Elvish Lyrist
Elvish Scrapper
Elvish Skysweeper
Embargo
Ember Weaver
Energy Flux
Enlistment Officer
Ensnaring Bridge
Essence Drain
Etherium Astrolabe
Executioner's Capsule
Exile
Exorcist
Expendable Troops
Ezuri's Brigade
Feeding Frenzy
Fen Stalker
Ferrovore
Flameborn Hellion
Fledgling Osprey
Fleeting Distraction
Freyalise's Radiance
Freyalise's Winds
Frightcrawler
Fulminator Mage
Gate Hound
Gate Hound
Ghalma's Warden
Glade Gnarr
Glowing Anemone
Goblin Digging Team
Goblin Replica
Goblin Scouts
Golem Foundry
Golem's Heart
Gossamer Phantasm
Gosta Dirk
Granulate
Grasp of Darkness
Great Wall
Greed
Grotag Siege-Runner
Haazda Exonerator
Halt Order
Hand of Justice
Hand of the Praetors
Hapless Researcher
Harbor Serpent
Heart Warden
Hunting Drake
Hyena Umbra
Icatian Town
Ichor Rats
Ichorclaw Myr
Illusionary Servant
Indomitable Archangel
Infernal Medusa
Ink Dissolver
Insolence
Insurrection
Iron Star
Irradiate
Island Fish Jasconius
Island of Wak-Wak
Isleback Spawn
Ivory Cup
Ivory Guardians
Jade Statue
Jester's Cap
Joihra of the Ghitu
Joven
Judge of Currents
Juniper Order Advocate
Juniper Order Druid
Juntu Stakes
Kamahl's Desire
Kataki, War's Wage
Kavu Runner
Kemba's Skyguard
King Suleiman
Kiri-Onna
Kirtar's Desire
Kitesail Apprentice
Kithkin Greatheart
Konda's Hatamoto
Koth of the Hammer
Kraken's Eye
Kris Mage
Krosan Beast
Last Gasp
Leeches
Leonin Den-Guard
Leyline of the Meek
Leyline of the Void
Leyline of Vitality
Liege of the Pit
Lifesmith
Lodestone Myr
Looming Hoverguard
Lord Magnus
Lord of the Pit
Lose Hope
Loxodon Wayfarer
Magosi, the Waterveil
Mammoth Umbra
Maraxus of Keld
Melt Terrain
Merfolk Assassin
Merrow Grimeblotter
Mesmeric Orb
Metamorphic Wurm
Mightstone
Mind Stone
Mindwrack Liege
Minotaur Tactician
Mire Kavu
Mirozel
Mirror Universe
Moriok Reaver
Moriok Replica
Mourning
Myr Galvanizer
Mystic Crusader
Mystic Familiar
Mystic Penitent
Mystic Visionary
Mystic Zealot
Nantuko Calmer
Neck Snap
Nezumi Shadow-Watcher
Nobilis of War
Noggle Bridgebreaker
Northern Paladin
Notorious Assassin
Ogre Recluse
Oppression
Orb of Dreams
Orcish Oriflamme
Ordered Migration
Otarian Juggernaut
Oxidda Daredevil
Oxidda Scrapmelter
Palladium Myr
Pendrell Mists
Petrahydrox
Phantasmal Abomination
Phantasmal Terrain
Phantom Beast
Phyrexian Prowler
Phyrexian Vault
Plated Seastrider
Porphyry Nodes
Predator, Flagship
Pristine Angel
Pull Under
Puncturing Light
Putrefax
Quagmire
Quagmire Druid
Radiant Essence
Rain of Blades
Raksha Golden Cub
Ramses Overdark
Razorfield Thresher
Razorverge Thicket
Reckless Assault
Recurring Nightmare
Regenerate
Rejuvenation Chamber
Relic Putrescence
Reverberate
Reverence
Revoke Existence
Ring of Gix
Rock Basilisk
Root Cage
Root Maze
Royal Decree
Saberclaw Golem
Sage of Lat-Nam
Salvage
Sandstorm
Scavenger Folk
Scoria Cat
Scoria Elemental
Seachrome Coast
Seal of Doom
Seaside Haven
Second Thoughts
Seismic Mage
Seize the Initiative
Selesnya Evangel
Seton's Scout
Shivan Harvest
Silver Seraph
Singing Tree
Skinrender
Skirk Outrider
Skittish Kavu
Skulking Fugitive
Skulking Ghost
Skulking Knight
Skyhunter Cub
Skyrider Trainee
Skyshroud Behemoth
Skyshroud Elite
Skyshroud Ridgeback
Skyshroud Vampire
Slave of Bolas
Slice in Twain
Slinking Skirge
Smoke
Snake Cult Initiation
Snake Umbra
Snapsail Glider
Snow Devil
Soliton
Soltari Lancer
Sosuke's Summons
Southern Paladin
Spectral Cloak
Spectral Guardian
Spider Umbra
Spikeshot Elder
Spinal Villain
Spirit of the Night
Spontaneous Generation
Spore Burst
Springing Tiger
Spur Grappler
Stabbing Pain
Stern Proctor
Stoic Angel
Stone-Seeder Hierophant
Stormbind
Stratadon
Strider Harness
Stronghold Assassin
Sunblast Angel
Sunspear Shikari
Surrakar Banisher
Sylvok Replica
Tainted Strike
Tangle Asp
Tar Pit Warrior
Taste for Mayhem
Tek
Tel-Jilad Defiance
Tel-Jilad Fallen
Tenza, Godo's Maul
Terashi's Verdict
Thicket Basilisk
Thornwatch Scarecrow
Throne of Bone
Thundermare
Tidal Courier
Tidal Wave
Titania's Chosen
Topan Ascetic
Tower of Calamities
Tower of Murmurs
Toxic Iguanar
Trench Wurm
True Conviction
Tumble Magnet
Turn Aside
Twitch
Uktabi Faerie
Undertow
Unfulfilled Desires
Untamed Might
Ur-Drago
Urza's Chalice
Vanquish
Vault Skyward
Vector Asp
Vedalken AEthermage
Vedalken Dismisser
Venomous Dragonfly
Venser, the Sojourner
Viashino Heretic
Vintara Snapper
Violet Pall
Voice of the Woods
Vulshok Replica
Wake Thrasher
Wall of Tanglecord
Wandering Graybeard
Watchwing Scarecrow
Water Wurm
Waylay
Weakstone
Western Paladin
Whitesun's Passage
Windbrisk Raptor
Withstand Death
Wooden Sphere
Woodripper
Woolly Mammoths
Wu Admiral
Wurm's Tooth
Wurmcoil Engine
Yawgmoth Demon
The links to the various archives:
The Forge 10/02/2010 archive (requires java 5 or 6):
This new run-forge.jar file may fix the problem that Bog Wraith was having on his Mac.
.
-
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: Forge 10/02/2010 (unofficial BETA) version
by Chris H. » 02 Oct 2010, 12:48
Fixes/Features:
- Added the option Curse to spPumpTgt.
- Added PayLife as a new kind of Ability_Cost.
- Pulled targeting from Ability_Cost into it's own class.
- Added Player info to PlayerLife.
- Fixed compile errors.
- Added Curse option to Disorient.
- Add Mirror Universe (from Legends). Note: Supposed to be limited to Upkeep step, but we can't do that now. So, It's limited to Main1. Added AI for Mirror Universe.
- Edited the entry for Blistering Firecat.
- An update to the section of Card.getText dealing with permanents. I meant to finnish and merge this into the SVN prior to the last beta. Added an additional test to Card.getText().
- Replaced the decks Crocodile Dundee 1-3 with mono red decks.
- Added abTapDestroyTgt keyword. Same Options as spDestroyTgt.
- The wheneverkeyword now recognizes changelings.
- Added a hard Doran deck.
- Some fixes for possible null pointer exceptions in Requirements and Target_Selection.
- Reworked Elspeth, Knight-Errant to use an Emblem for her third ability.
- Fixed Dread and Serra Avenger crash.
- Added cardsfolder to main.properties.
- fix a batch of missing card picture URLs.
- Bug Fix: If Sower of Temptation is not in play when it's ability resolves, it's ability will not do anything.
- Bugfix for spBounceTgt: Removed Drawback$ from the Drawback$ string which caused any spBounceTgt spell to draw X cards along with it's normal Drawback ability.
- Fixed the "no text" problem in ReadCard.
- The AI is now taking damage already dealt into account when deciding to cast spDamageAll spells.
- Changed the targeting of players AI of spDamageTgt to what the comments say.
- The AI is now taking damage already dealt into account, when deciding to cast spPumpAllCurse spells.
- Added untap cost to Ability_Cost.
- Preparation for using Ability_Cost with spells as an additional cost (ex. Harrow).
- Fixed some combat related (lifelink) bugs.
- Fixed Nut Collector. It's spellText was missing the Threshold portion. Includes a linefeed.
- AI will now take Indestructible into account, when choosing blockers.
- Fixed keyword of Amrou Kithkin.
- Fix for Cost_Payment not setting payUntap, preventing most abilities from not being playable.
- Added support for tgtValid.
- Added "Kinship - " to the start of the spell text for the kinnship creatures Leaf-Crowned Elder; Nightshade Schemers; Sensation Gorger; Winnower Patrol and Wolf-Skull Shaman. You can now use the deck editor's filter window to find the cards.
- This prevents people from selecting the "Most recently added" menu option from the "Sort By" menu in the deck editor. I discovered that it was leading to an error exception due to the fact that the cards.txt file is now missing entries for the new cards added today.
- Fixing typo in indrik_stomphowler.txt so it can etbDestroy artifacts.
- Centralized all milling that could be found.
- Added the keyword: Whenever CARDNAME blocks a creature, destroy that creature at end of combat.
- Added the keyword: Whenever CARDNAME becomes blocked by a creature, destroy that creature at end of combat.
- Added hasStartOfKeyword and getKeywordPosition to Cards.java.
- Keyworded Abomination and Gorgon Recluse.
- Updated the blocking and attacking AI to consider the new keywords.
- Fixed Palladium Myr.
- Some more AI attacking/blocking updates concerning indestructible, flanking, wither and infect.
- Merrow Grimeblotter should now download a LQ pic measuring 200 x 285 pixels.
- Fixed Description of the two new keywords.
- For Painter's Servant the AI chooses the color that appears in the keywords of the most cards in its deck, hand and on the battlefield.
- Added KeywordsContain to Card.java.
- Added getKeywordsContain to CardList.java.
- Changed the deck Samantha Stephens 3 to a Painter's Servant anti-red deck. Grindstone combo is no longer the main focus.
- Added Samantha Stephens 1-2 (without Grindstone).
- Added input_targetValid in Target_Selection for expanded Requirements coverage.
- Added V as an additional target parameter for abDamageTgt.
- Added Centaur Archer as a Sample of using abDamageTgtV.
- Fixed Elspeth Tirel, it will now display a rarity value.
- Changed Spike keyword to use Ability_Cost and Target, so targeting happens before Mana Payment.
- Fixed EndOfCombat.executeUntil() never being called.
- Added a parameter to CardFactoryUtil.revertManland() for original cost.
- Fixed Poison the Well, will now destroy a land and does 2 damage to the land's controller.
- Fixed the keyword for Blinkmoth Infusion.
- Fixed Fire Tempest to deal 6 damage instead of 5.
- Additional Exception Handling for d'loading LQ pics.
- Fixed pic URLs for Lhurgoyf and Sangrophage.
- Minor edits made to Grizzly Fate. Now uses a line feed.
- Added abDestroyTgt keyword. Uses Ability_Cost and Target objects.
- Bugfix: Cost_Payment stops a second SacrificeThis activation when interacting with Whenever keyword by checking if the card is in play.
- Added a new keyword: Permanents don't untap during their controllers' untap steps.
- Converted to keyword: Meekstone and Marble Titan.
- Fixed a bug with Undiscovered Paradise and Winter Orb.
- Added Discard as an Ability_Cost
- Added Kris Mage and Stormbind as Samples.
- Fixed a rare bug with the keyword: When CARDNAME enters the battlefield, return a land you control to its owner's hand.
- Completed the Poisonous keyword.
- Changed SubCounter to be consistent with other abCosts.
- Changed Discard to be consistent with other abCosts.
- Discard second parameter is now: Hand, Random, Any, or a <ValidType>.
- Some more changes in Ability_Cost for consistency and clenaup within costs.
- Changed Sac- to Sac<> to allow for multiple sacrifices, usage of ValidCard, and consistency with other costs.
- Fixed every card that used Sac- to use the altered abCost Sac<>.
- Little AI improvements for spPumpTgtCurse targeting Indestructible creatures.
- Added a BuffedBy SVar to Harbor Serpent.
- Added Jester's Cap (from Ice Age) - not implemented for AI.
- Converted these cards to keyword: Consume the Meek, Culling Sun and Retribution of the Meek.
- Updated tht Kojak 1 and 2, Pebbles Flintstone 2 and 3, Wyatt Earp 3. AI decks.
- Converted Tradewind Rider to use Ability_Cost and Target (no real keyword yet).
- addPoison and getPoison (player) added to GameAction.
- Small tweaks to tapXType cost.
- Converted Avatar of Woe; Capashen Unicorn; Dwarven Demolition Team; Ethersworn Adjudicator; Intrepid Hero; Kami of Ancient Law; King Suleiman; Rathi Assassin; Ronom Unicorn; Royal Assassin; Qasali Pridemage; Viridian Zealot; Visara the Dreadful to the new abDestroyTgtV keyword.
- Added the keyword: stPumpAll.
- Changed the keyword of Mindwrack Liege to stPumpAll.
- Cleanup for Input_draw. Will ignore a consecutive call for the draw step
- Moved some "At the beginning of draw step" abilities to the draw step.
- Bugfix: Ancestral Vision should now draw cards as expected. Removed the note included with the spell text description for Ancestral Vision.
- Remove lastPlayerToDraw since it's a more confusing variable than playerTurn.
- Replaced lastPlayerToDraw with isPlayerTurn in appropriate places for the Whenever keyword.
- Fixed Elspeth's third ability - Fixed Stonybrook Schoolmaster.
- Added "undo"(cancel) functionality for payTapXType.
- Added remAI SVars to some cards.
- Fixed Natural Order AI bug.
- Converted and added Ramses Overdark to the new abDestroyTgtV keyword.
- Added remAI SVar to Stonecloaker.
- Added missing rarity value to Ancestral Vision and Goblin Digging Team.
- Added how many creatures left to tap text for tapXType.
- Added a line feed to some of the cards with the spCounter keyword.
- Preliminary freezeStack code. While in the process of paying a cost, any triggered abilities will be placed onto the Stack AFTER the activated ability finishes being paid. Currently, this only works with Ability_Cost abilities.
- Fixed proliferate (used to add one of Each counter type on card.)
- Fixed Skullclamp (a static effect check unequipped it before it was checked.)
- Updated the card-pictures-token.txt file. It will now download several more LQ token pictures.
- Minor edit to the WheneverKeyword keyword. Tokens created by this keyword should no longer have " Token" added to their name. This mainly affects Breeding Pit at this time.
- Update of the syntax of stPumpAll.
- Converted Gravitational Shift to stPumpAll.
- Added Ability_Cost and Target to Activated Ability to constructor.
- Changed keywords that use abCost to send in cost and target on creation instead of forcing the code to set it afterwards.
- Bugfixes: spDamageAll and Teferi Puzzle Box.
- Added Threshold and Hellbent as conditions to stPumpAll.
- Removed entry of Kemba's Skyguard from CardFactory_Creatures, since it's already keyworded.
- Added isEquipped, isEnchanted, LibraryLE and isUntapped as conditions to stPumpAll.
- Fixed keyword in unequip for Sword of Body and Mind.
- Mana Abilities should not be affected by freezeStack.
- Bugfix: This should fix the issue with paying abPump abilities and any other abilities this affected.
- Prevent cards with: "Whenever CARDNAME blocks a creature, destroy that creature at end of combat" from putting this ability on the stack if attacker has already left the battlefield.
- Converted these spells to keyword: Tremor, Needle Storm and Pyroclasm.
- Switched SVars from keyword to parsed in ReadCard.
- Pulled QuestData Preferences out of the code into a text file. This should allow users to tweak some Quest Options without needing to recompile the code.
- Minor edits to Patriarch's Bidding.
- Minor fix to input prompt for Energy Tap.
- Fix parsing of SVar lines in ReadCard (for LQ pic URLs).
- Changed the syntax of stPump and converted the stPumpAll spells.
- Added isValidCard(String Restrictions[], String Controller) and getValidCards(final String Restrictions[], final String Controller).
- Added comment parsing in ReadCard. In card text files, you can now start a line with "#", and that line will be ignored during parsing. It is only valid on per-line basis. Updated Judge of Currents with comments as an example.
- Fix starting Credits being grabbed from the pref file. Fix Difficulty Index not being set after Save Game loads causing booster packs to be won too often.
- Moved Vanishing to postFactoryKeywords. This removes the need for it to be in each CardFactory file. Removed unneeded Vanishing code blocks. Updated Aven Riftwatcher and Calciderm to use Vanishing.
- Added Fading keyword. Placed into postFactoryKeywords. Changed Blastoderm to use Fading keyword.
- Added etbBounceTgt keyword.
- Changed the syntax of YouCtrl in isValidCard.
- Adapted two stPump cards to the new syntax.
- Added SVar:RemAIDeck:True to some recently added cards.
- Fixed AI using Pongify on indestructible creatures.
- Fixed Goblin Piledriver not getting a bonus for creatures attacking planeswalkers.
- Fixed Bridge from Below to only trigger on creatures.
- Fixed exception in Drop of Honey where all creatures in play have the same power, and Compy controls Drop of Honey.
- Fixed Exception in Lich Lord of Unx when life is greater than library size.
- Fixed typo in Quest Prefs for matchRewardWinOnFirstTurn.
- Fixed Bone Shredder Echo cost.
- Added first-draft of a Random Theme Deck Generator, added to deck selection combo boxes on new game window, and a really bad sample theme. Folder location needs to be added as a property.
- Fixed Hideous End.
- Fixed YouCtrl in isValidCard.
- Some cleanup of stPump.
- Added X as a valid value in CostChange keyword.
- Added isPresent as a condition to stPump.
- Fixed Curiosity bug where two cards could be drawn.
- Converted Kobold Taskmaster to stPump.
- Added Metalcraft as condition to stPump.
- Added a new keyword: CARDNAME enters the battlefield tapped unless you control two or fewer other lands.
- Tweaked and moved similar code for "enters the battlefield tapped unless" closer.
- Changed the syntax of multiple keywords of stPump.
- Converted Thran Golem and True Conviction to stPump.
- Added Enchanted as Range to stPump. Added isNotPresent as condition to stPump.
- Fixed Dauthi Cutthroat.
- Converted Animate Dead from a Sorcery to an Enchantment Aura.
- +1/+1 and -1/-1 Counters will now remove each other when added to a card that already has the other type of Counter.
- Reanimate should work only on creatures now.
- Fixes issue 40. Added CardList.getTargetableCards. Replaced the redundant filter code for the DestroyTgt and BounceTgt effects. Added this method in the CanPlayAI and the ETB command which chooses the target.
- Updated CardFactory.main to use CARDSFOLDER (not used unless called directly.)
- Fixed another bug with YouCtrl in isValidCard.
- Fixed Cemetery Reaper.
- Fixed Tradewind Rider returning tokens.
- Fixed Metalcraft for the AI.
- Fixed changeling detection for secondary and non-Type restrictions in isValidCard.
- Made Urborg Uprising and other spRaiseDead spells with "Some" playable even when there are no creatures in the graveyard.
- Fixes issue 31. Added private toMixedCase method to CardList and Card. Forces the first character to upper case and the remaining string to lower case.
- Fixed CardFactoryUtil.input_targetType to check canTarget().
- Added spMakeToken keyword.
- Migrated Dragon Fodder; Empty the Warrens; Feral Lightning; Hunting Pack; Join the Ranks; Raise the Alarm; Reach of Branches; Skittering Invasion; Sound the Call; Spectral Procession; Storm Herd to spMakeToken keyword.
- Modified theme file format. Allows any number of groups each with their own percentages and max card counts. Basic Lands are added in proportion to the colors represented by the cards selected for the deck.
- Added Color.java and Card_Color.java.
- Added a separate monitoring of a cards color, that handles color changing
- Tokens now set Color when created. In general, tokens don't have mana costs and we'll need to remove setting of mana costs except in a few circumstances.
- Updated Painter's Servant, Disciple of Kangee, and Wild Mongrel.
- A few things are still needed overall for this to work going forward, but it seems to be at a point to get this in.
- Fixed equipment not falling off of lands that were previously animated by Lifespark Spellbomb.
- Corrected Ensnaring Bridge.
- Deleted the keyworded Aura entries in CardFactory_Auras.java.
- Changed getValidCards to use isValidCard.
- Set Mind's Desire to be immutable.
- Coverted to keyword: Reprisal, Smother, Volcanic Fallout.
- Added missing ability of Spiritmonger.
- Converted Fists of the Demigod to stPump.
- Removed getPlaneswalkerSubtype from GameAction. Wasn't needed.
- Morph cards will now display "Morph " just before the cost + " - turn this card face up." in the spell text description.
- Added and updated a Domain theme.
- Removed extra period (.) from Stalwart Shield Bearers text.
- Fixed a bug with the Whenever keyword that triggered multiple times on a creature with "Whenever CARDNAME becomes blocked, ...".
- Moved suspend and vanishing to the counter removal code.
- Added the Basics of Drawback$MakeToken. Implemented X in Drawback$MakeToken.
- Moving EOT command inside the Resolve function to "lock in" the timestamp of each activation of color changers.
- Manlands and other color changers now change color back to colorless at the end of the turn after multiple activations.
- Converted Sprout to keyword.
- Added "Totem armor" keyword.
- Changed Chaosphere; Clout of the Dominus; Dense Canopy; Hand of the Praetors to stPump.
- Added new keyword: At the beginning of the end step, exile CARDNAME. Updated Feral Lightning to use this instead of sacrifice.
- Added the "World rule".
- Added the World supertype to Concordant Crossroads.
- Converted Serra Aviary to stPump.
- Created a GainLife function instead of needing two lines everywhere life gaining happened.
- Added better support for Tokens and new Color handling.
- Bugfix: Added color into copyStats since tokens use that to multiply.
- Set color for tokens that begin in play for Quests, since they don't use MakeToken.
- Converted AEther Adept; Devout Lightcaster; Man-o'-War and Sun Ce, Young Conquerer.
- Ability Cost wasn't taking changeCost into account.
- First pass at abMakeToken keyword (same general syntax as spMakeToken but with an extra delimit for spell description.)
- Converted The Hive to abMakeToken.
- Added isCreatureType to CardUtil.
- Changed isType to use isCreatureType to check for Changelings.
- Added World, Lair, Locus and Fortification to the list of non-creature types.
- Fixed Patriarch's Bidding to only accept creature types and work with changelings.
- Updated Ability_Activated to check for a null object for Target.
- Updated abMakeToken to use Ability_Cost.
- Fixed some changeling issues with Dwarven Pony, Pallid Mycoderm, Goblin Matron, Kithkin Harbinger, Sarkhan the Mad, Siege-Gang Commander, Soulshift, Aven Brigadier, Rolling Stones and Prowess of the Fair.
- Fixed some changeling issues with "CARDNAME can't be blocked by Walls.", "CARDNAME can't be blocked except by Walls." and "CARDNAME can't be blocked except by Walls and/or creatures with flying.". Fixed a lot of changeling issues with the whenever keyword, the CostChange keyword and Protection from Dragons/Demons/Goblins.
- Added Changeling support to public static ArrayList<Card> getCardType(PlayerZone zone, String cardType), in case someone uses it in the future.
- Converted the rest of the god auras to stPump.
- Ghost-Lit Redeemer ability changed to use a keyword.
- Fixed AI decision-making for Spreading Seas, Convincing Mirage and Phantasmal Terrain. It will attempt to manascrew the human based on what lands are on the table. I was going to factor in landwalk abilities of it's own creatures but baby steps and bugfixes first.
- Fixed Hand of the Praetors.
- Initial submission of Static Abilities which resolve instead of get added to the Stack.
- Added Ability_Static.java
- Changed Morph, Totem Armor, Hatchling's etb, Multikicker's etb, Swans of Bryn Argoll, An-Zerrin Ruins to be a Static Ability.
- Fixed Morph interaction with Linvala.
- Fixed An-Zerrin Ruins to only work with creature types.
- Added attacking and blocking as restrictions to isValidCard.
- Changed setCounter to be able to skip Doubling Season's ability. This is necessary for undoing remove counter payments.
- Fixed setCounter logic for choosing to add or subtract counters.
- Change cost payment to use subtractCounter over setCounter.
- Missing check in Cost_Payment for computer remove counters.
- Gave Eye of Nowhere the Arcane subtype.
- Converted abGainLife to use abCost and Tgt.
- Added player as possible ValidTarget option in TargetSelection.
- Updated Mournful Zombie, Spike Feeder, Bottle Gnomes.
- Edited Leaf-Crowned Elder. Now uses StringBuilder and a JOptionPane.showConfirmDialog() with yes/no option buttons.
- Added notattacking as restrictions to isValidCard.
- Fixed Vanishing (turns out it wasn't a keyword.)
- Fixed Wither/Doubling Season (damage is an effect.)
- Better stack description in spGainLife.
- Converted Dragon Roost, Gargoyle Castle and Kher Keep to abMakeToken keyword.
- Converted Mobilization to abMakeToken and stPumpAll keywords.
- Converted Centaur Glade and Goblin Trenches to keyword.
- Minor improvement to Hatching Plans.
- New Random Deck Generator - user selected colors. Moved CCnt class to inside of GenerateThemeDeck class. Added combo box selections for 2 color random deck.
- Allowing abPump to work with Jitte's equipped creature pump ability.
- Fixed abGainLife's canPlay() to check for additional costs.
- Updated Umezawa's Jitte to be mostly keyworded.
- Converted Urza's Factory and Kjeldoran Outppost to abMakeToken keyword.
- Cleanup code in Input_Untap.java.
- Minor rearrange in AllZoneUtil.java.
- Convert abDrawCards to use Target and Ability_Cost.
- Merged Goblin Ringleader, Grave Defiler, Tidal Courier, Sylvan Messenger and Enlistment Officer into one code block.
- Fixed possible null pointer error for changeCost in Abilities that have 0 for mana cost.
- Fixed logic for uncastable spells. Now will only prevent spells that do not have a mana cost from being played.
- Fixed LQ pic URL for Blackcleave Goblin.
- Removed Assault Strobe's second copy of the spell text description.
- Added the missing tidal_courier.txt and enlistment_officer.txt files.
- Various minor improvements/cleanups in GameActionUtil.java.
- Added "Any" as option of controller of the CastSpell trigger of the whenever keyword.
- Fixed Auriok Edgewright, replaced em dash with a hyphon.
- Commented out unused variable in Fact or Fiction.
- Fixed spCounter cards with a Targets() parameter throwing null pointer exception when the spell to counter doesn't actually target anything.
- Converted Sliver Queen and Boris Devilboon to abMakeToken keyword.
- Improved to Spitting Spider.
- Color simplifications in GameActionUtil, CardFactory_Instants, CardFactory_Auras, CardFactoryUtil, CombatUtil, GameAction, AllZoneUtil, CardFactory_Creatures, CardFactory_Lands and CardFactory_Lands.
- Fixed Putrefax, the sac keyword now works.
- Added Count$CardCounters.<counterType> to potentially support Joraga Warcaller.
- Fixed Angelic Voices and Pristine Angel.
- Fixed the rarity value for Petrahydrox.
- Code improvement for Sower of Temptation.
- Changed the target prompt of abDamageTgtV to "Select a target: " + k[valid].
- Added the option Curse to spPumpTgt.
- Added PayLife as a new kind of Ability_Cost.
- Pulled targeting from Ability_Cost into it's own class.
- Added Player info to PlayerLife.
- Fixed compile errors.
- Added Curse option to Disorient.
- Add Mirror Universe (from Legends). Note: Supposed to be limited to Upkeep step, but we can't do that now. So, It's limited to Main1. Added AI for Mirror Universe.
- Edited the entry for Blistering Firecat.
- An update to the section of Card.getText dealing with permanents. I meant to finnish and merge this into the SVN prior to the last beta. Added an additional test to Card.getText().
- Replaced the decks Crocodile Dundee 1-3 with mono red decks.
- Added abTapDestroyTgt keyword. Same Options as spDestroyTgt.
- The wheneverkeyword now recognizes changelings.
- Added a hard Doran deck.
- Some fixes for possible null pointer exceptions in Requirements and Target_Selection.
- Reworked Elspeth, Knight-Errant to use an Emblem for her third ability.
- Fixed Dread and Serra Avenger crash.
- Added cardsfolder to main.properties.
- fix a batch of missing card picture URLs.
- Bug Fix: If Sower of Temptation is not in play when it's ability resolves, it's ability will not do anything.
- Bugfix for spBounceTgt: Removed Drawback$ from the Drawback$ string which caused any spBounceTgt spell to draw X cards along with it's normal Drawback ability.
- Fixed the "no text" problem in ReadCard.
- The AI is now taking damage already dealt into account when deciding to cast spDamageAll spells.
- Changed the targeting of players AI of spDamageTgt to what the comments say.
- The AI is now taking damage already dealt into account, when deciding to cast spPumpAllCurse spells.
- Added untap cost to Ability_Cost.
- Preparation for using Ability_Cost with spells as an additional cost (ex. Harrow).
- Fixed some combat related (lifelink) bugs.
- Fixed Nut Collector. It's spellText was missing the Threshold portion. Includes a linefeed.
- AI will now take Indestructible into account, when choosing blockers.
- Fixed keyword of Amrou Kithkin.
- Fix for Cost_Payment not setting payUntap, preventing most abilities from not being playable.
- Added support for tgtValid.
- Added "Kinship - " to the start of the spell text for the kinnship creatures Leaf-Crowned Elder; Nightshade Schemers; Sensation Gorger; Winnower Patrol and Wolf-Skull Shaman. You can now use the deck editor's filter window to find the cards.
- This prevents people from selecting the "Most recently added" menu option from the "Sort By" menu in the deck editor. I discovered that it was leading to an error exception due to the fact that the cards.txt file is now missing entries for the new cards added today.
- Fixing typo in indrik_stomphowler.txt so it can etbDestroy artifacts.
- Centralized all milling that could be found.
- Added the keyword: Whenever CARDNAME blocks a creature, destroy that creature at end of combat.
- Added the keyword: Whenever CARDNAME becomes blocked by a creature, destroy that creature at end of combat.
- Added hasStartOfKeyword and getKeywordPosition to Cards.java.
- Keyworded Abomination and Gorgon Recluse.
- Updated the blocking and attacking AI to consider the new keywords.
- Fixed Palladium Myr.
- Some more AI attacking/blocking updates concerning indestructible, flanking, wither and infect.
- Merrow Grimeblotter should now download a LQ pic measuring 200 x 285 pixels.
- Fixed Description of the two new keywords.
- For Painter's Servant the AI chooses the color that appears in the keywords of the most cards in its deck, hand and on the battlefield.
- Added KeywordsContain to Card.java.
- Added getKeywordsContain to CardList.java.
- Changed the deck Samantha Stephens 3 to a Painter's Servant anti-red deck. Grindstone combo is no longer the main focus.
- Added Samantha Stephens 1-2 (without Grindstone).
- Added input_targetValid in Target_Selection for expanded Requirements coverage.
- Added V as an additional target parameter for abDamageTgt.
- Added Centaur Archer as a Sample of using abDamageTgtV.
- Fixed Elspeth Tirel, it will now display a rarity value.
- Changed Spike keyword to use Ability_Cost and Target, so targeting happens before Mana Payment.
- Fixed EndOfCombat.executeUntil() never being called.
- Added a parameter to CardFactoryUtil.revertManland() for original cost.
- Fixed Poison the Well, will now destroy a land and does 2 damage to the land's controller.
- Fixed the keyword for Blinkmoth Infusion.
- Fixed Fire Tempest to deal 6 damage instead of 5.
- Additional Exception Handling for d'loading LQ pics.
- Fixed pic URLs for Lhurgoyf and Sangrophage.
- Minor edits made to Grizzly Fate. Now uses a line feed.
- Added abDestroyTgt keyword. Uses Ability_Cost and Target objects.
- Bugfix: Cost_Payment stops a second SacrificeThis activation when interacting with Whenever keyword by checking if the card is in play.
- Added a new keyword: Permanents don't untap during their controllers' untap steps.
- Converted to keyword: Meekstone and Marble Titan.
- Fixed a bug with Undiscovered Paradise and Winter Orb.
- Added Discard as an Ability_Cost
- Added Kris Mage and Stormbind as Samples.
- Fixed a rare bug with the keyword: When CARDNAME enters the battlefield, return a land you control to its owner's hand.
- Completed the Poisonous keyword.
- Changed SubCounter to be consistent with other abCosts.
- Changed Discard to be consistent with other abCosts.
- Discard second parameter is now: Hand, Random, Any, or a <ValidType>.
- Some more changes in Ability_Cost for consistency and clenaup within costs.
- Changed Sac- to Sac<> to allow for multiple sacrifices, usage of ValidCard, and consistency with other costs.
- Fixed every card that used Sac- to use the altered abCost Sac<>.
- Little AI improvements for spPumpTgtCurse targeting Indestructible creatures.
- Added a BuffedBy SVar to Harbor Serpent.
- Added Jester's Cap (from Ice Age) - not implemented for AI.
- Converted these cards to keyword: Consume the Meek, Culling Sun and Retribution of the Meek.
- Updated tht Kojak 1 and 2, Pebbles Flintstone 2 and 3, Wyatt Earp 3. AI decks.
- Converted Tradewind Rider to use Ability_Cost and Target (no real keyword yet).
- addPoison and getPoison (player) added to GameAction.
- Small tweaks to tapXType cost.
- Converted Avatar of Woe; Capashen Unicorn; Dwarven Demolition Team; Ethersworn Adjudicator; Intrepid Hero; Kami of Ancient Law; King Suleiman; Rathi Assassin; Ronom Unicorn; Royal Assassin; Qasali Pridemage; Viridian Zealot; Visara the Dreadful to the new abDestroyTgtV keyword.
- Added the keyword: stPumpAll.
- Changed the keyword of Mindwrack Liege to stPumpAll.
- Cleanup for Input_draw. Will ignore a consecutive call for the draw step
- Moved some "At the beginning of draw step" abilities to the draw step.
- Bugfix: Ancestral Vision should now draw cards as expected. Removed the note included with the spell text description for Ancestral Vision.
- Remove lastPlayerToDraw since it's a more confusing variable than playerTurn.
- Replaced lastPlayerToDraw with isPlayerTurn in appropriate places for the Whenever keyword.
- Fixed Elspeth's third ability - Fixed Stonybrook Schoolmaster.
- Added "undo"(cancel) functionality for payTapXType.
- Added remAI SVars to some cards.
- Fixed Natural Order AI bug.
- Converted and added Ramses Overdark to the new abDestroyTgtV keyword.
- Added remAI SVar to Stonecloaker.
- Added missing rarity value to Ancestral Vision and Goblin Digging Team.
- Added how many creatures left to tap text for tapXType.
- Added a line feed to some of the cards with the spCounter keyword.
- Preliminary freezeStack code. While in the process of paying a cost, any triggered abilities will be placed onto the Stack AFTER the activated ability finishes being paid. Currently, this only works with Ability_Cost abilities.
- Fixed proliferate (used to add one of Each counter type on card.)
- Fixed Skullclamp (a static effect check unequipped it before it was checked.)
- Updated the card-pictures-token.txt file. It will now download several more LQ token pictures.
- Minor edit to the WheneverKeyword keyword. Tokens created by this keyword should no longer have " Token" added to their name. This mainly affects Breeding Pit at this time.
- Update of the syntax of stPumpAll.
- Converted Gravitational Shift to stPumpAll.
- Added Ability_Cost and Target to Activated Ability to constructor.
- Changed keywords that use abCost to send in cost and target on creation instead of forcing the code to set it afterwards.
- Bugfixes: spDamageAll and Teferi Puzzle Box.
- Added Threshold and Hellbent as conditions to stPumpAll.
- Removed entry of Kemba's Skyguard from CardFactory_Creatures, since it's already keyworded.
- Added isEquipped, isEnchanted, LibraryLE and isUntapped as conditions to stPumpAll.
- Fixed keyword in unequip for Sword of Body and Mind.
- Mana Abilities should not be affected by freezeStack.
- Bugfix: This should fix the issue with paying abPump abilities and any other abilities this affected.
- Prevent cards with: "Whenever CARDNAME blocks a creature, destroy that creature at end of combat" from putting this ability on the stack if attacker has already left the battlefield.
- Converted these spells to keyword: Tremor, Needle Storm and Pyroclasm.
- Switched SVars from keyword to parsed in ReadCard.
- Pulled QuestData Preferences out of the code into a text file. This should allow users to tweak some Quest Options without needing to recompile the code.
- Minor edits to Patriarch's Bidding.
- Minor fix to input prompt for Energy Tap.
- Fix parsing of SVar lines in ReadCard (for LQ pic URLs).
- Changed the syntax of stPump and converted the stPumpAll spells.
- Added isValidCard(String Restrictions[], String Controller) and getValidCards(final String Restrictions[], final String Controller).
- Added comment parsing in ReadCard. In card text files, you can now start a line with "#", and that line will be ignored during parsing. It is only valid on per-line basis. Updated Judge of Currents with comments as an example.
- Fix starting Credits being grabbed from the pref file. Fix Difficulty Index not being set after Save Game loads causing booster packs to be won too often.
- Moved Vanishing to postFactoryKeywords. This removes the need for it to be in each CardFactory file. Removed unneeded Vanishing code blocks. Updated Aven Riftwatcher and Calciderm to use Vanishing.
- Added Fading keyword. Placed into postFactoryKeywords. Changed Blastoderm to use Fading keyword.
- Added etbBounceTgt keyword.
- Changed the syntax of YouCtrl in isValidCard.
- Adapted two stPump cards to the new syntax.
- Added SVar:RemAIDeck:True to some recently added cards.
- Fixed AI using Pongify on indestructible creatures.
- Fixed Goblin Piledriver not getting a bonus for creatures attacking planeswalkers.
- Fixed Bridge from Below to only trigger on creatures.
- Fixed exception in Drop of Honey where all creatures in play have the same power, and Compy controls Drop of Honey.
- Fixed Exception in Lich Lord of Unx when life is greater than library size.
- Fixed typo in Quest Prefs for matchRewardWinOnFirstTurn.
- Fixed Bone Shredder Echo cost.
- Added first-draft of a Random Theme Deck Generator, added to deck selection combo boxes on new game window, and a really bad sample theme. Folder location needs to be added as a property.
- Fixed Hideous End.
- Fixed YouCtrl in isValidCard.
- Some cleanup of stPump.
- Added X as a valid value in CostChange keyword.
- Added isPresent as a condition to stPump.
- Fixed Curiosity bug where two cards could be drawn.
- Converted Kobold Taskmaster to stPump.
- Added Metalcraft as condition to stPump.
- Added a new keyword: CARDNAME enters the battlefield tapped unless you control two or fewer other lands.
- Tweaked and moved similar code for "enters the battlefield tapped unless" closer.
- Changed the syntax of multiple keywords of stPump.
- Converted Thran Golem and True Conviction to stPump.
- Added Enchanted as Range to stPump. Added isNotPresent as condition to stPump.
- Fixed Dauthi Cutthroat.
- Converted Animate Dead from a Sorcery to an Enchantment Aura.
- +1/+1 and -1/-1 Counters will now remove each other when added to a card that already has the other type of Counter.
- Reanimate should work only on creatures now.
- Fixes issue 40. Added CardList.getTargetableCards. Replaced the redundant filter code for the DestroyTgt and BounceTgt effects. Added this method in the CanPlayAI and the ETB command which chooses the target.
- Updated CardFactory.main to use CARDSFOLDER (not used unless called directly.)
- Fixed another bug with YouCtrl in isValidCard.
- Fixed Cemetery Reaper.
- Fixed Tradewind Rider returning tokens.
- Fixed Metalcraft for the AI.
- Fixed changeling detection for secondary and non-Type restrictions in isValidCard.
- Made Urborg Uprising and other spRaiseDead spells with "Some" playable even when there are no creatures in the graveyard.
- Fixes issue 31. Added private toMixedCase method to CardList and Card. Forces the first character to upper case and the remaining string to lower case.
- Fixed CardFactoryUtil.input_targetType to check canTarget().
- Added spMakeToken keyword.
- Migrated Dragon Fodder; Empty the Warrens; Feral Lightning; Hunting Pack; Join the Ranks; Raise the Alarm; Reach of Branches; Skittering Invasion; Sound the Call; Spectral Procession; Storm Herd to spMakeToken keyword.
- Modified theme file format. Allows any number of groups each with their own percentages and max card counts. Basic Lands are added in proportion to the colors represented by the cards selected for the deck.
- Added Color.java and Card_Color.java.
- Added a separate monitoring of a cards color, that handles color changing
- Tokens now set Color when created. In general, tokens don't have mana costs and we'll need to remove setting of mana costs except in a few circumstances.
- Updated Painter's Servant, Disciple of Kangee, and Wild Mongrel.
- A few things are still needed overall for this to work going forward, but it seems to be at a point to get this in.
- Fixed equipment not falling off of lands that were previously animated by Lifespark Spellbomb.
- Corrected Ensnaring Bridge.
- Deleted the keyworded Aura entries in CardFactory_Auras.java.
- Changed getValidCards to use isValidCard.
- Set Mind's Desire to be immutable.
- Coverted to keyword: Reprisal, Smother, Volcanic Fallout.
- Added missing ability of Spiritmonger.
- Converted Fists of the Demigod to stPump.
- Removed getPlaneswalkerSubtype from GameAction. Wasn't needed.
- Morph cards will now display "Morph " just before the cost + " - turn this card face up." in the spell text description.
- Added and updated a Domain theme.
- Removed extra period (.) from Stalwart Shield Bearers text.
- Fixed a bug with the Whenever keyword that triggered multiple times on a creature with "Whenever CARDNAME becomes blocked, ...".
- Moved suspend and vanishing to the counter removal code.
- Added the Basics of Drawback$MakeToken. Implemented X in Drawback$MakeToken.
- Moving EOT command inside the Resolve function to "lock in" the timestamp of each activation of color changers.
- Manlands and other color changers now change color back to colorless at the end of the turn after multiple activations.
- Converted Sprout to keyword.
- Added "Totem armor" keyword.
- Changed Chaosphere; Clout of the Dominus; Dense Canopy; Hand of the Praetors to stPump.
- Added new keyword: At the beginning of the end step, exile CARDNAME. Updated Feral Lightning to use this instead of sacrifice.
- Added the "World rule".
- Added the World supertype to Concordant Crossroads.
- Converted Serra Aviary to stPump.
- Created a GainLife function instead of needing two lines everywhere life gaining happened.
- Added better support for Tokens and new Color handling.
- Bugfix: Added color into copyStats since tokens use that to multiply.
- Set color for tokens that begin in play for Quests, since they don't use MakeToken.
- Converted AEther Adept; Devout Lightcaster; Man-o'-War and Sun Ce, Young Conquerer.
- Ability Cost wasn't taking changeCost into account.
- First pass at abMakeToken keyword (same general syntax as spMakeToken but with an extra delimit for spell description.)
- Converted The Hive to abMakeToken.
- Added isCreatureType to CardUtil.
- Changed isType to use isCreatureType to check for Changelings.
- Added World, Lair, Locus and Fortification to the list of non-creature types.
- Fixed Patriarch's Bidding to only accept creature types and work with changelings.
- Updated Ability_Activated to check for a null object for Target.
- Updated abMakeToken to use Ability_Cost.
- Fixed some changeling issues with Dwarven Pony, Pallid Mycoderm, Goblin Matron, Kithkin Harbinger, Sarkhan the Mad, Siege-Gang Commander, Soulshift, Aven Brigadier, Rolling Stones and Prowess of the Fair.
- Fixed some changeling issues with "CARDNAME can't be blocked by Walls.", "CARDNAME can't be blocked except by Walls." and "CARDNAME can't be blocked except by Walls and/or creatures with flying.". Fixed a lot of changeling issues with the whenever keyword, the CostChange keyword and Protection from Dragons/Demons/Goblins.
- Added Changeling support to public static ArrayList<Card> getCardType(PlayerZone zone, String cardType), in case someone uses it in the future.
- Converted the rest of the god auras to stPump.
- Ghost-Lit Redeemer ability changed to use a keyword.
- Fixed AI decision-making for Spreading Seas, Convincing Mirage and Phantasmal Terrain. It will attempt to manascrew the human based on what lands are on the table. I was going to factor in landwalk abilities of it's own creatures but baby steps and bugfixes first.
- Fixed Hand of the Praetors.
- Initial submission of Static Abilities which resolve instead of get added to the Stack.
- Added Ability_Static.java
- Changed Morph, Totem Armor, Hatchling's etb, Multikicker's etb, Swans of Bryn Argoll, An-Zerrin Ruins to be a Static Ability.
- Fixed Morph interaction with Linvala.
- Fixed An-Zerrin Ruins to only work with creature types.
- Added attacking and blocking as restrictions to isValidCard.
- Changed setCounter to be able to skip Doubling Season's ability. This is necessary for undoing remove counter payments.
- Fixed setCounter logic for choosing to add or subtract counters.
- Change cost payment to use subtractCounter over setCounter.
- Missing check in Cost_Payment for computer remove counters.
- Gave Eye of Nowhere the Arcane subtype.
- Converted abGainLife to use abCost and Tgt.
- Added player as possible ValidTarget option in TargetSelection.
- Updated Mournful Zombie, Spike Feeder, Bottle Gnomes.
- Edited Leaf-Crowned Elder. Now uses StringBuilder and a JOptionPane.showConfirmDialog() with yes/no option buttons.
- Added notattacking as restrictions to isValidCard.
- Fixed Vanishing (turns out it wasn't a keyword.)
- Fixed Wither/Doubling Season (damage is an effect.)
- Better stack description in spGainLife.
- Converted Dragon Roost, Gargoyle Castle and Kher Keep to abMakeToken keyword.
- Converted Mobilization to abMakeToken and stPumpAll keywords.
- Converted Centaur Glade and Goblin Trenches to keyword.
- Minor improvement to Hatching Plans.
- New Random Deck Generator - user selected colors. Moved CCnt class to inside of GenerateThemeDeck class. Added combo box selections for 2 color random deck.
- Allowing abPump to work with Jitte's equipped creature pump ability.
- Fixed abGainLife's canPlay() to check for additional costs.
- Updated Umezawa's Jitte to be mostly keyworded.
- Converted Urza's Factory and Kjeldoran Outppost to abMakeToken keyword.
- Cleanup code in Input_Untap.java.
- Minor rearrange in AllZoneUtil.java.
- Convert abDrawCards to use Target and Ability_Cost.
- Merged Goblin Ringleader, Grave Defiler, Tidal Courier, Sylvan Messenger and Enlistment Officer into one code block.
- Fixed possible null pointer error for changeCost in Abilities that have 0 for mana cost.
- Fixed logic for uncastable spells. Now will only prevent spells that do not have a mana cost from being played.
- Fixed LQ pic URL for Blackcleave Goblin.
- Removed Assault Strobe's second copy of the spell text description.
- Added the missing tidal_courier.txt and enlistment_officer.txt files.
- Various minor improvements/cleanups in GameActionUtil.java.
- Added "Any" as option of controller of the CastSpell trigger of the whenever keyword.
- Fixed Auriok Edgewright, replaced em dash with a hyphon.
- Commented out unused variable in Fact or Fiction.
- Fixed spCounter cards with a Targets() parameter throwing null pointer exception when the spell to counter doesn't actually target anything.
- Converted Sliver Queen and Boris Devilboon to abMakeToken keyword.
- Improved to Spitting Spider.
- Color simplifications in GameActionUtil, CardFactory_Instants, CardFactory_Auras, CardFactoryUtil, CombatUtil, GameAction, AllZoneUtil, CardFactory_Creatures, CardFactory_Lands and CardFactory_Lands.
- Fixed Putrefax, the sac keyword now works.
- Added Count$CardCounters.<counterType> to potentially support Joraga Warcaller.
- Fixed Angelic Voices and Pristine Angel.
- Fixed the rarity value for Petrahydrox.
- Code improvement for Sower of Temptation.
- Changed the target prompt of abDamageTgtV to "Select a target: " + k[valid].
-
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: Forge 10/02/2010 (unofficial BETA) version
by Bog Wraith » 02 Oct 2010, 15:09
When i start the java file on my Mac, I get this error report and there are only 669 cards showing in the editor.
String index out of range: -1
Version:
Forge -- official beta: $Date: 2010-09-14 08:34:27 -0400 (Tue, 14 Sep 2010) $, SVN revision: $Revision: 2039 $
OS: Mac OS X Version: 10.6.4 Architecture: x86_64
Java Version: 1.6.0_20 Vendor: Apple Inc.
Detailed error trace:
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.AbstractStringBuilder.replace(AbstractStringBuilder.java:797)
at java.lang.StringBuilder.replace(StringBuilder.java:271)
at forge.Card.getText(Card.java:870)
at forge.SpellAbility.getStackDescription(SpellAbility.java:264)
at forge.Spell.getStackDescription(Spell.java:24)
at forge.Spell_Permanent.<init>(Spell_Permanent.java:19)
at forge.CardFactory.getCard2(CardFactory.java:260)
at forge.CardFactory.getCard(CardFactory.java:231)
at forge.CardFactory.<init>(CardFactory.java:72)
at forge.AllZone.<clinit>(AllZone.java:23)
at forge.Gui_NewGame$2.run(Gui_NewGame.java:183)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:633)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
I see the date referenced as Sept. 14th in the error so I'm not sure what that references but this error came from the 1002 release.
This release is working on my Windows 7 machine showing 4543 cards. I started Forge with both the .exe & java files and all is working.
String index out of range: -1
Version:
Forge -- official beta: $Date: 2010-09-14 08:34:27 -0400 (Tue, 14 Sep 2010) $, SVN revision: $Revision: 2039 $
OS: Mac OS X Version: 10.6.4 Architecture: x86_64
Java Version: 1.6.0_20 Vendor: Apple Inc.
Detailed error trace:
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.AbstractStringBuilder.replace(AbstractStringBuilder.java:797)
at java.lang.StringBuilder.replace(StringBuilder.java:271)
at forge.Card.getText(Card.java:870)
at forge.SpellAbility.getStackDescription(SpellAbility.java:264)
at forge.Spell.getStackDescription(Spell.java:24)
at forge.Spell_Permanent.<init>(Spell_Permanent.java:19)
at forge.CardFactory.getCard2(CardFactory.java:260)
at forge.CardFactory.getCard(CardFactory.java:231)
at forge.CardFactory.<init>(CardFactory.java:72)
at forge.AllZone.<clinit>(AllZone.java:23)
at forge.Gui_NewGame$2.run(Gui_NewGame.java:183)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:633)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
I see the date referenced as Sept. 14th in the error so I'm not sure what that references but this error came from the 1002 release.
This release is working on my Windows 7 machine showing 4543 cards. I started Forge with both the .exe & java files and all is working.
'Twas in the bogs of Cannelbrae
My mate did meet an early grave
'Twas nothing left for us to save
In the peat-filled bogs of Cannelbrae.
My mate did meet an early grave
'Twas nothing left for us to save
In the peat-filled bogs of Cannelbrae.
-
Bog Wraith - Global Mod 1 (Ret)
- Posts: 1108
- Joined: 28 May 2008, 22:40
- Location: Shandalar
- Has thanked: 425 times
- Been thanked: 153 times
Re: Forge 10/02/2010 (unofficial BETA) version
by Chris H. » 02 Oct 2010, 17:36
I remember you mentioned that the previous version also had problems on your Mac. Yet, it works on my Mac with Snow Leopard OS 10.6.4.
I recently changed the Card.getText() method and I may have made a mistake with a small portion of the code. Card.getText() now looks like this:
Starting on line 869 we find:
I think that the problem is here, I am not sure how to fix it at this moment.
I recently changed the Card.getText() method and I may have made a mistake with a small portion of the code. Card.getText() now looks like this:
- Code: Select all
public String getText() {
if(isInstant() || isSorcery()) {
String s = getSpellText();
StringBuilder sb = new StringBuilder();
// Give spellText line breaks for easier reading
sb.append(s.replaceAll("\\\\r\\\\n", "\r\n"));
// NOTE:
if (sb.toString().contains(" (NOTE: ")) {
sb.insert(sb.indexOf("(NOTE: "), "\r\n");
}
if (sb.toString().contains("(NOTE: ") && sb.toString().endsWith(".)") && !sb.toString().endsWith("\r\n")) {
sb.append("\r\n");
}
// Add SpellAbilities
SpellAbility[] sa = getSpellAbility();
for (int i = 0; i < sa.length; i++) {
sb.append(sa[i].toString() + "\r\n");
}
// Add Keywords
ArrayList<String> kw = getKeyword();
// Ripple + Dredge + Madness + CARDNAME is {color}.
for (int i = 0; i < kw.size(); i++) {
if ((kw.get(i).startsWith("Ripple") && !sb.toString().contains("Ripple"))
|| (kw.get(i).startsWith("Dredge") && !sb.toString().contains("Dredge"))
|| (kw.get(i).startsWith("Madness") && !sb.toString().contains("Madness"))
|| (kw.get(i).startsWith("CARDNAME is ") && !sb.toString().contains("CARDNAME is "))) {
sb.append(kw.get(i).replace(":", " ")).append("\r\n");
}
}
// Draw a card. + Changeling + CARDNAME can't be countered. + Cascade
for (int i = 0; i < kw.size(); i++) {
if ((kw.get(i).contains("Draw a card.") && !sb.toString().contains("Draw a card."))
|| (kw.get(i).contains("Changeling") && !sb.toString().contains("Changeling"))
|| (kw.get(i).contains("CARDNAME can't be countered.") && !sb.toString().contains("CARDNAME can't be countered."))
|| (kw.get(i).contains("Cascade") && !sb.toString().contains("Cascade"))) {
sb.append(kw.get(i)).append("\r\n");
}
}
// Storm
if (getKeyword().contains("Storm") && !sb.toString().contains("Storm (When you ")) {
if (sb.toString().endsWith("\r\n\r\n")) {
sb.delete(sb.lastIndexOf("\r\n"), sb.lastIndexOf("\r\n")+3);
}
sb.append("Storm (When you cast this spell, copy it for each spell cast before it this turn.");
if (sb.toString().contains("Target") || sb.toString().contains("target")) {
sb.append(" You may choose new targets for the copies.");
}
sb.append(")\r\n");
}
// Scry
if(!sb.toString().contains("Scry")) for(int i = 0; i < getKeyword().size(); i++) {
String k = getKeyword().get(i);
if(k.startsWith("Scry")) {
String kk[] = k.split(" ");
//sb.append("Scry " + kk[1] + " (To scry X, look at the top X cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.)\r\n");
sb.append("Scry ");
sb.append(kk[1]);
sb.append(" (To scry X, look at the top X cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.)\r\n");
}
}
while (sb.toString().endsWith("\r\n")) {
sb.delete(sb.lastIndexOf("\r\n"), sb.lastIndexOf("\r\n")+3);
}
return sb.toString().replaceAll("CARDNAME", getName());
}
StringBuilder sb = new StringBuilder();
StringBuilder sbLong = new StringBuilder();
StringBuilder sbMana = new StringBuilder();
ArrayList<String> keyword = getKeyword();
for (int i = 0; i < keyword.size(); i++) {
if (!keyword.get(i).toString().contains("CostChange")
&&
!keyword.get(i).toString().contains("Whenever CARDNAME blocks a creature, destroy that creature at end of combat")
&&
!keyword.get(i).toString().contains("Whenever CARDNAME becomes blocked by a creature, destroy that creature at end of combat")
&&
!keyword.get(i).toString().contains("Permanents don't untap during their controllers' untap steps"))
{
if (keyword.get(i).toString().contains("WheneverKeyword")) {
String k[] = keyword.get(i).split(":");
sbLong.append(k[9]).append("\r\n");
} else if (keyword.get(i).toString().contains("StaticEffect")) {
String k[] = keyword.get(i).split(":");
sbLong.append(k[5]).append("\r\n");
} else if (keyword.get(i).toString().contains("stPump")) {
String k[] = keyword.get(i).split(":");
sbLong.append(k[4]).append("\r\n");
} else if (keyword.get(i).endsWith(".")) {
sbLong.append(keyword.get(i).toString()).append("\r\n");
} else if (keyword.get(i).contains("At the beginning of your upkeep, ")
&& keyword.get(i).contains(" unless you pay:")) {
sbLong.append(keyword.get(i).toString()).append("\r\n");
} else if (keyword.get(i).toString().contains("tap: add ")) {
sbMana.append(keyword.get(i).toString()).append("\r\n");
} else {
if (i != 0 && sb.length() != 0) sb.append(", ");
sb.append(keyword.get(i).toString());
}
}
}
if (sb.length() > 0) sb.append("\r\n\r\n");
if (sbLong.length() > 0) sbLong.append("\r\n");
sb.append(sbLong);
sb.append(sbMana);
/*
for(int i = 0; i < keyword.size(); i++) {
if(!keyword.get(i).toString().contains("CostChange")) {
if(i != 0) sb.append(", ");
if(!keyword.get(i).toString().contains("WheneverKeyword")
&& !keyword.get(i).toString().contains("StaticEffect")) sb.append(keyword.get(i).toString());
else if(keyword.get(i).toString().contains("WheneverKeyword")) {
String k[] = keyword.get(i).split(":");
sb.append(k[9]);
}
else if(keyword.get(i).toString().contains("StaticEffect")) {
String k[] = keyword.get(i).split(":");
sb.append(k[5]);
}
}
}
*/
// Give spellText line breaks for easier reading
sb.append("\r\n");
sb.append(text.replaceAll("\\\\r\\\\n", "\r\n"));
sb.append("\r\n");
SpellAbility[] sa = getSpellAbility();
for(int i = 0; i < sa.length; i++) {
//presumes the first SpellAbility added to this card, is the "main" spell
//skip the first SpellAbility for creatures, since it says "Summon this creature"
//looks bad on the Gui card detail
if(isPermanent() && (isLand() || i != 0)
&& !(manaAbility.contains(sa[i]) && ((Ability_Mana) sa[i]).isBasic()))//prevent mana ability duplication
{
sb.append(sa[i].toString());
sb.append("\r\n");
}
}
// NOTE:
if (sb.toString().contains(" (NOTE: ")) {
sb.insert(sb.indexOf("(NOTE: "), "\r\n");
}
if (sb.toString().contains("(NOTE: ") && sb.toString().contains(".) ")) {
sb.insert(sb.indexOf(".) ")+3, "\r\n");
}
while (sb.toString().contains("\r\n\r\n\r\n")) {
sb.replace(sb.lastIndexOf("\r\n\r\n\r\n"), sb.lastIndexOf("\r\n\r\n\r\n")+4, "\r\n");
}
return sb.toString().replaceAll("CARDNAME", getName()).trim();
}//getText()
Starting on line 869 we find:
- Code: Select all
while (sb.toString().contains("\r\n\r\n\r\n")) {
sb.replace(sb.lastIndexOf("\r\n\r\n\r\n"), sb.lastIndexOf("\r\n\r\n\r\n")+4, "\r\n");
}
I think that the problem is here, I am not sure how to fix it at this moment.

-
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: Forge 10/02/2010 (unofficial BETA) version
by Bog Wraith » 02 Oct 2010, 18:23
That's ok Chris, I just wanted to report the bug. I can use this on my Windows machine & just like last time, it will work itself out with time. Thanks for all you & all the guys are doing! 

'Twas in the bogs of Cannelbrae
My mate did meet an early grave
'Twas nothing left for us to save
In the peat-filled bogs of Cannelbrae.
My mate did meet an early grave
'Twas nothing left for us to save
In the peat-filled bogs of Cannelbrae.
-
Bog Wraith - Global Mod 1 (Ret)
- Posts: 1108
- Joined: 28 May 2008, 22:40
- Location: Shandalar
- Has thanked: 425 times
- Been thanked: 153 times
Re: Forge 10/02/2010 (unofficial BETA) version
by Jaedayr » 02 Oct 2010, 19:25
SO many cards, SO little time. Wow, thank you to all the contributors for another extensive release! Now if you will excuse me, there are some new cards calling my name.
Re: Forge 10/02/2010 (unofficial BETA) version
by LokiUndergod » 02 Oct 2010, 21:29
What a long list of fixed and added cards! Great work as usual guys--can't wait to play.
- LokiUndergod
- Posts: 33
- Joined: 26 Mar 2010, 13:28
- Has thanked: 2 times
- Been thanked: 0 time
Re: Forge 10/02/2010 (unofficial BETA) version
by Rob Cashwalker » 02 Oct 2010, 22:06
bog wraith - what cards does it show? (ie: did it stop loading at the 650th card? or a random bunch?) One of the files might have a weird filename or something? Or Windows line breaks?
The Force will be with you, Always.
-
Rob Cashwalker - Programmer
- Posts: 2167
- Joined: 09 Sep 2008, 15:09
- Location: New York
- Has thanked: 5 times
- Been thanked: 40 times
Re: Forge 10/02/2010 (unofficial BETA) version
by DennisBergkamp » 02 Oct 2010, 22:28
It might be some funky line break thing.
There's probably a more elegant way of solving this, but what happens if you replace the while loop with:
There's probably a more elegant way of solving this, but what happens if you replace the while loop with:
- Code: Select all
int start;
String s = "\r\n\r\n\r\n";
while (sb.toString().contains(s)) {
start = sb.lastIndexOf(s);
if (start < 0 || start >= sb.length())
break;
sb.replace(start, start+4, "\r\n");
}
-
DennisBergkamp - AI Programmer
- Posts: 2602
- Joined: 09 Sep 2008, 15:46
- Has thanked: 0 time
- Been thanked: 0 time
Re: Forge 10/02/2010 (unofficial BETA) version
by Bog Wraith » 02 Oct 2010, 22:50
Rob,Rob Cashwalker wrote:bog wraith - what cards does it show? (ie: did it stop loading at the 650th card? or a random bunch?) One of the files might have a weird filename or something? Or Windows line breaks?
The cards shown go from A-Z, all 26 letters are represented. It's just that it only covers 669 total cards in the deck editor.
I'm not a programmer guys so I wouldn't know how to look for or apply any changes to any problems with the code.
'Twas in the bogs of Cannelbrae
My mate did meet an early grave
'Twas nothing left for us to save
In the peat-filled bogs of Cannelbrae.
My mate did meet an early grave
'Twas nothing left for us to save
In the peat-filled bogs of Cannelbrae.
-
Bog Wraith - Global Mod 1 (Ret)
- Posts: 1108
- Joined: 28 May 2008, 22:40
- Location: Shandalar
- Has thanked: 425 times
- Been thanked: 153 times
Re: Forge 10/02/2010 (unofficial BETA) version
by Chris H. » 02 Oct 2010, 23:56
`Bog Wraith wrote:That's ok Chris, I just wanted to report the bug. I can use this on my Windows machine & just like last time, it will work itself out with time. Thanks for all you & all the guys are doing!
Strange that we use the save computer and OS and have different results.

Go to the /Utilities/ folder and launch Java Preferences. Under Java Applications I have Java SE 6 64-bit dragged above the Java SE 6 32-bit, I doubt that this will help, but it might be worth a try.
-
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: Forge 10/02/2010 (unofficial BETA) version
by Bog Wraith » 03 Oct 2010, 00:18
Chris,
That's the way my Java settings are already, the 64 bit is the one on top.
That's the way my Java settings are already, the 64 bit is the one on top.
'Twas in the bogs of Cannelbrae
My mate did meet an early grave
'Twas nothing left for us to save
In the peat-filled bogs of Cannelbrae.
My mate did meet an early grave
'Twas nothing left for us to save
In the peat-filled bogs of Cannelbrae.
-
Bog Wraith - Global Mod 1 (Ret)
- Posts: 1108
- Joined: 28 May 2008, 22:40
- Location: Shandalar
- Has thanked: 425 times
- Been thanked: 153 times
Re: Forge 10/02/2010 (unofficial BETA) version
by Chris H. » 03 Oct 2010, 00:23
`DennisBergkamp wrote:It might be some funky line break thing.
There's probably a more elegant way of solving this, but what happens if you replace the while loop with:
- Code: Select all
int start;
String s = "\r\n\r\n\r\n";
while (sb.toString().contains(s)) {
start = sb.lastIndexOf(s);
if (start < 0 || start >= sb.length())
break;
sb.replace(start, start+4, "\r\n");
}
I just replaced the old version with your new version and It works on my computer. I am in the process of uploading the new jar to MediaFile. I will post a link when it is finished and with luck it will solve the problem that Bog Wraith is having.

-
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: Forge 10/02/2010 (unofficial BETA) version
by Chris H. » 03 Oct 2010, 00:27
`
Oh well, it will take almost an hour for the next jar to upload. I have modem dial up.

In the meanwhile have you tried the Forge Mac OS X Binary ?
-
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: Forge 10/02/2010 (unofficial BETA) version
by Bog Wraith » 03 Oct 2010, 00:59
Yes & I really like it.
It acts so much like a typical Mac application with all the package contents in one file.
Whoever made it, I'd like them to do this for all future releases!
I'm signing off for today. I'll look for your upload tomorrow & report here on it.
Thanks for everything Chris!

It acts so much like a typical Mac application with all the package contents in one file.
Whoever made it, I'd like them to do this for all future releases!
I'm signing off for today. I'll look for your upload tomorrow & report here on it.
Thanks for everything Chris!

'Twas in the bogs of Cannelbrae
My mate did meet an early grave
'Twas nothing left for us to save
In the peat-filled bogs of Cannelbrae.
My mate did meet an early grave
'Twas nothing left for us to save
In the peat-filled bogs of Cannelbrae.
-
Bog Wraith - Global Mod 1 (Ret)
- Posts: 1108
- Joined: 28 May 2008, 22:40
- Location: Shandalar
- Has thanked: 425 times
- Been thanked: 153 times
42 posts
• Page 1 of 3 • 1, 2, 3
Who is online
Users browsing this forum: No registered users and 25 guests