Forge 10/02/2010 (unofficial BETA) version
by mtgrares
	Moderators: timmermac, Agetian, friarsol, Blacksmith, KrazyTheFox, CCGHQ Admins
			42 posts
			 • Page 1 of 3 • 1, 2, 3
		
	
Forge 10/02/2010 (unofficial BETA) version
 by Chris H. » 02 Oct 2010, 12:47
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
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
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
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
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
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
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
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
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
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
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
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
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
by Chris H. » 03 Oct 2010, 00:27 
`Bog Wraith wrote:Chris,
That's the way my Java settings are already, the 64 bit is the one on top.
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
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 48 guests
