thrown away get/setUpdate methods
battlefield.getCards(false) will return R/O list of cards - might lead to exceptions if callers attempt to modify the method's result.
removed keyword 'CARDNAME is (color)' because this data is already contained in a mandatory field named 'color'
renamed postFactoryKeywords to setupKeywordedAbilities
generally 'setup' means 'make all changes to card yourself' and 'make' intends only creation of spellability, at least 'make'-methods always return one.
Card: dropped imageName field (which was commonly mixed up with imageFileName)
Starting cards for quest and challenges no longer use functions (CardToken helps a lot)
Quest challenges code: Token parsing remake (to produce CardRules instance and wrap it into CardToken)
some utility functions were moved closer to usage points
You may use SpellAiLogic.chkAIDrawback to test drawbacks of given ability only, or chkDrawbackWithSubs to do so for the whole list of ability and its subs
* (fixes for 19720 & 19724) CheckAiDrawback was already recursivelly checking every subability, so no special methods were required
* numerous fixes to make ApiType comparisons null-safe
* CommonXXX classes do not take SpellEffect and AILogic as separate parameters. These are obtained from ApiType instead
- no existing behavior is changed -- callers have to make the explicit choice to sort
- allow left-right arrow keys to switch lists when choosing order
- sort sideboard
- correctly manage current deck tab title so the '*' appears only when truly dirty
- ensure table selection color is correct even before the table has gained focus for the first time
- autoupdate shown tooltip when tables scroll
- fix NPE when starting draft mode game against a single opponent with a previously-drafted deck
- fix labels getting stuck with hovered highlight after their associated commands prevent them from getting the mouseExited event
- Initial commit of "TargetsWithSameController" (check the parent targets, might be used in Bioshift and Simic Guildmage in future)
- Added two Avatars: Sisters of Stone Death Avatar and Viridian Zealot Avatar
- Added some cards
- Added DiscardMeByOpp param and applied to relevant cards (I've prioritised from 1 - 3, 3 being most dangerous to discard, but priority checking isn't actually applied yet. Plan to expand when I have more free time).
adjustChangeZoneTarget moved back to ability/AbilityFactory.java (since called by Common[Spell|Ability|Drawback] classes' ctors)
resolve method and its auxiliary methods groupped in bottom part of AbilityUtils file
- unbreak ctrl/cmd+enter as text search filter shortcut
- add card to deck before removing from catalog to ensure selected card details show up properly
- prepare for editable restrictions
Unless syntax enriched: added UnlessResolveSubs parameter to indicate if subAbilities are resolved for paid and unpaid branches
SpellDesciptions from card scripts now may include variables
- can tab focus
- space/enter to select
- brighten on hover
- use previous "hover" border for focus indicator
- fix various layout and style bugs (e.g. too-short widths and missing hoverable properties)
- allow tab key to set focus to next component (e.g. prevent tables from swallowing tab and shift-tab)
- flicker-free reinstatement of current selection when table model data changes
setPaidList, beforePayManaAI, setAllReplacingObjects, hasReplacingObject, wasCancelled were never used (removed)
reduced visibility of setManaPart,
finalized setReplicateManaCost, setXManaCost, setIsMultiKicker, setIsReplicate, setIsCycling, setConditions, (set/add)OptionalAdditionalCosts since they were called by CardFactoryUtil only => all removed from WrappedAbility.java
- make color of listbox selection depend on listbox focus, not cell focus
- avoid NPE when attempting to start a challenge when there isn't one to start
this works around a quirky interaction between WrapLayout and MigLayout that was causing interior cells to be properly resized but the cells surrounding them would not be, resulting in widgets that would be too large or too small for their unupdated containing cells
CommonDrawback: wrote in a single line the complicated chkAIDrawback method
removed unused imports
CardUtil.getRandom replaced with Aggregates.random
getReflectableMana uses Set as collection, so it does not have to check for duplicates before adding new items.
united two CMC calculation methods (one was getCMC from card that read characteristics while other took more factors into account)
Some notes:
- Special rewards for normal duels should be extremely rare, mostly for very hard opponents, 1 special reward per opponent, and always a percentage chance of getting the special reward (preferably less than 50%) rather getting a guaranteed reward.
- In the interests of downward compatibility, it is possible to define the Card Reward either in the [quest] portion (like before) or the [metadata] portion of the dck file. (Duels do not have the [quest] portion but if the definition were simply moved from [quest] to [metadata], all current challenge files would have stopped working properly.)
GameActionUtil - uses common GuiDialog.confirm
CardFactoryLands - converted inlined class to nested
ChangeZoneEffect - removed stringbuilder wrapper (as it was not used anyway)
replaced isComputer/isHuman where it was clear and possible
- set focus on the catalog table when the deck editor opens so the arrow keys work immediately without having to click the mouse
- if multiple cards are selected, apply the add/remove operation to all of them, not just the first one
- hide the non-functional 'remove' buttons in draft mode
- protect against NPE when the cursor is hovering above a row that disappears just as swing is trying to get the tooltip
- add note to add button tooltip that the spacebar can be used as a shortcut
- added forge-specific spinner widget (FSpinner)
- allowed labels to have their toggle state read externally and added configuration to set whether the onClick command is executed on mouse button down or mouse button up (FLabel)
- added builder pattern to FTextField and autoset properties to common values
- fixed header comments in WrapLayout
- renamed DialogCustomFormat to the more generic DialogChooseSets since I use it now from the filters too; extended its functionality to run a specified command on ok button click
- removed Filters dockable panel
- added old filters functionality to the stats buttons above the catalog table (stats can no longer be removed via a preference setting)
- combined scattered metadata about the filters (e.g. icon, label, filter predicate) into a single enum
- rewrote filter utility functions to not have any side effects (they now use no global data/singletons)
- added "Owned" column to spell shop catalog, indicating number of cards already owned by player (can remove column with preference)
- don't count the "click" as a sort command when resizing a column
- exposed top-level main world custom format in QuestController -- other format-retrieving methods would be masked by the current world selection
- added utility fn to TextUtils to create a (locale-independent) Title out of an ENUM
- added a templated Pair<T, V> utility class for ad-hoc two-value parameter returning
- prevented invalid enum values in editor_preferred.xml from causing errors
* in abilityFactory target parsing code extracted as a single method
* due to getDefinedCards return type generalization, a lot of classes had to declare variables as List (not arraylist)
- saved quest data when pet settings are modified
- moved the selectedPets map from QuestController to QuestData (since it now gets persisted); also renamed it petSlots for clarity
- incremented the quest file format version
- added code to bring older file formats up to date
- finally, while researching how the data is saved, I noticed that saveData() can be called from multiple threads. I made the method synchronized to prevent file corruption
- adds tooltips for the filter checkboxes (issue 657)
- ensures the filter checkboxes are always in the same order
- puts all labels and checkboxes in "official" order from the mtg rules book:
color order: WHITE, BLUE, BLACK, RED, GREEN, COLORLESS, MULTICOLOR
type order: LAND, ARTIFACT, CREATURE, ENCHANTMENT, PLANESWALKER, INSTANT, SORCERY
* Costs: joined all CostGainLife implementations. Syntax is: GainLife<LifeAmount/Player.Selector/[cntPlayers|*]> asterisk in last parameter means "all players".
* Changed a lot of methods to pass GameState as a parameter rather than get it from Singletons.*
*Added Planes
Academy at Tolaria West
Fields of Summer
Goldmeadow
Krosa
Lethe Lake
Llanowar
Panopticon
Raven's Run
The Fourth Sphere
The Great Forest
The Hippodrome
*Added phenomenon Mutual Epiphany
* sideboard checked independently of maximum amount of same cards in deck
* schemes and planes generation code in GameNew.java now demands a player.
- toForgeCardList method removed
* Decks have no extra sections for variants (sideboard works in most cases)
* Deck Format restrictions are in a separate class not related to GameType
+ DeckSection has its own toString overload
+ DualListBox operates CardPrinted properly (sideboarding dialog uses cardprinted instances)
+ ItemPool.remove method returns true if any elements were removed.
Added ForgetChosen parameter to ChooseCardEffect to remove chosen card from host card remembered object list.
Added Mandatory parameter to ChooseCardEffect.
Added The Mimeoplasm.
- Vanguard:Added Sakashima the Impostor Avatar
- Added Mandatory$ True to Parallax Nexus
- Made Borrowing 100000 Arrows and Theft of Dreams ready for multiplayer
- Added TargetsWithDifferentControllers param for targeting with different controllers (should supercede TargetsFromDifferentZone in most cases as it works with player lists instead of using getOpponent)
- Reverted LocalCount in favor of RepeatPlayer in RepeatEach (Molten Psyche and Netherborn Phalanx)
- Converted Myojin of Night's Reach and Imprison This Insolent Wretch to multiplayer scripts
* Added Eye of the Storm, Neurok Transmuter, Overwhelming Instinct and Total War
* Vanguard: Added Phage the Untouchable Avatar and Prodigal Sorcerer Avatar
* Scheme: Added My Undead Horde Awakens
World-specific format enforcing and starting world selection will be added in later stages. Also, something has to be done about locked (non-repeatabled) challenges so they do not end up locking other challenges in different worlds.
- Added LocalCount to resolve of DamageDealEffect and DrawEffect which allows calculated variables to be calculated per player (should allow a few more cards to be made multiplayer compatible)
- Fixed ChangeZoneAll so that it works correctly when Defined returns more than one player
- Small tweak to Triggers to allow them to refire Statics when they finish resolving (useful for Conving Mirage to actually grant its ability immediately upon resolving)
Realms Befitting My Majesty
Roots of All Evil
The Iron Guardian Stirs
The Very Soil Shall Shake
Which of You Burns Brightest?
So now we have enough schemes to create legal scheme decks :D (Two of each we have,but still)
*Made exiting the scheme editor dump you at the archenemy home screen.
*Made scheme deck editor save correctly.
(Quest icons used created by Teekatas, from his Legendora set http://raindropmemory.deviantart.com)
(Thanks to the MAGE team for permission to use their targeting arrows.)
(Thanks to http://www.freesound.org/browse/ for providing some sound files.)
11623 cards in total.
Forge Beta: 03-15-2013 ver 1.3.10
All sounds use the event bus model now and are not called directly. Two new sounds to the list of sounds supported by Forge, Blocker Assigned and Token Created. We could use some help in finding interesting sounds that we can add to forge.
12247 cards in total.
The sound files need to be in wav or au format, wav appears to be more wide spread but the code can handle either format. The sound files need to be copy right free and they should be in the public domain.
You can either record your own sounds if you have the necessary equipment or you may be able to find an appropriate sound on a web site such as this site:
Release Notes:
http://www.freesound.org/browse/
A new quest world by Serrasmurf based on Ravinca has been added.
You should note that sound files can be large sized and we would like to avoid this if possible. A good size to shoot for would be 50 K or less. There is a freeware sound editor that may have versions for all operating systems. This app is named Audacity.
An effort is being made to implement the split cards (e.g. Fire/Ice) in Forge. The initial effort to add support for split cards may be considered complete and therelevant branch has reen reintegratedto trunk. Expect some rough edges and incompatibilities along the way.
We now have a Vanguard mode implemented. This is a work in progress. The older match layout files are incompatible with the new Vanguard mode. The original match_default.xml, match_preferred.xml and the match_preferred.xml saved to a different name files need to be deleted and can no longer be used. You can keep your editor_preferred.xml file. But you will have to setup your match view panels using the new match_default.xml file.
The fat packs should now be available for purchase in the quest mode card shop.
The visuals for targeting arrows has been improved and looks better, with an adaptation of the arrow drawing code from MAGE. Thanks to the MAGE team for permission for the adaptation.
Information for non-card items in spell shop are now shown in the card details panel.
There were reports that special challenge decks would cause a co-modification error in quest mode. This bug is likely fixed at this time.
Multiple problems with Convoke have been fixed.
--
Forge should now be the Magic rules enforcing program with the most supported cards! That means we finally beat MtGO! MtGO is missing 828 cards. Even subtracting the Power Nine, which were available in the MtGO cube for some time, that's more than we are missing (805) at the time this was written.
New Cards:
Ashling the Pilgrim
Assault // Battery
Balancing Act
Boom // Bust
Bound // Determined
Carpet of Flowers
Chain Lightning
Chain of Vapor
Crime // Punishment
Dead // Gone
Death by Dragons
Delaying Shield
Dimensional Breach
Eureka
Fatal Lore
Fire // Ice
Goblin Assassin
Goblin Welder
Hide // Seek
Hit // Run
Hypergenesis
Illusion // Reality
Inner-Flame Igniter
Library of Lat-Nam
Life // Death
Lim-Dul's Vault
Mana Clash
Mercadian Atlas
Misfortune
Natural Balance
Night // Day
Novijen Sages
Odds // Ends
Ooze Flux
Order // Chaos
Pain // Suffering
Pure // Simple
Rise // Fall
Rough // Tumble
Simic Manipulator
Spite // Malice
Stand // Deliver
Supply // Demand
Taniwha
Trial // Error
Trickbind
Vision Charm
Wax // Wane
Yare
New Planes:
Feeding Grounds
Horizon Boughs
New Schemes:
All in Good Time
Known Issues:
A small number of cards including Wall of Corpses, Abu Ja'far and others with a similar ability are not functional. The common issue here is actually that they check the blocker/attacker after being removed from the battlefield. Probably need to use LKI. Regular destroy/destroy all effects work just fine. The problem cards are caring about battlefield specific properties, that no longer apply when the base card is no longer on the battlefield.
On several occasions people have noticed that the forge deck editor and/or quest mode card shop would not open or display. We have also received reports that some of the tabs/panels in the deck editor are missing. Try deleting the file named "editor_preferred.xml" which is found in the "res/layouts" folder. This should force forge to then use the "editor_default.xml" file instead.
Several people have noticed that the cards displayed on the battlefield will fail to be displayed when the number of cards on the battlefield increases. Maximizing the human panel can help to re-display the cards.
Some time was spent turning the static ETB triggers into the proper ETB replacement effects they should be, mainly to interact correctly with eachother. This work is not yet finished. As a result there is currently some inconsistencies with "Enters the battlefield with counters" (Not incredibly noticeable).
It seems like the front face of double faced cards aren't triggering properly, but the back face and single faced cards are.
Some time was spent turning the static ETB triggers into the proper ETB replacement effects they should be, mainly to interact correctly with eachother. This work is not yet finished. As a result there is currently some inconsistencies with "Enters the battlefield with counters" (Not incredibly noticeable).
A recent contribution to the code base should fix some of the bugs that people noticed with cloning type abilities. At this time there are two remaining issues that we hope will be addressed in the near future.
1. Leave play triggers don't work correct for clones.
2. Copies of cards that setup Zone Change triggers via addComesIntoPlayCommand and addLeavesPlayCommand will not function correctly.
We are now using a different system for our snapshot and beta releases. Unfortunately, this new system builds a jar file which does not accurately display the SVN revision number.
There is currently a known issue with some of the cards that have effects triggering after the card goes to graveyard (e.g. Wall of Corpses, Abu Ja'Far) not working correctly.
Forge is likely to be compatible with Java 7 at this time. Some people have used forge with Java 7 and have not reported any problems that are related to Java 7. If you would like to upgrade to Java 7 and have held off because of Forge then you may upgrade as we do not think that it will cause an incompatibility type of problem at this time. We will continue to try to maintain compatibility with Java 6 for the foreseeable future.
--
Forge is likely to be compatible with Java 7 at this time. Some people have used forge with Java 7 and have not reported any problems that are related to Java 7. If you would like to upgrade to Java 7 and have held off because of Forge then you may upgrade as we do not think that it will cause an incompatibility type of problem. We will continue to try to maintain compatibility with Java 6 for the foreseeable future.
The Forge archive includes a readme.txt file and we ask that you spend a few minutes reading this file as it contains some information that may prove useful. We do tend to update this file at times and you should quickly read this file and look for new information for each and every new release. Thank you.
@@ -51,396 +109,25 @@ The archive format used for the Forge distribution is ".tar.bz2". There are util
Some people use the Windows application 7zip. This utility can be found at http://www.7-zip.org/download.html. Mac users can double click on the archive and the application Archive Utility will launch and extract the archive. Mac users do not need to download a separate utility.
Fixes/Features:
- Cleared out the changes.txt file, now ready for new material.
- CheckStyle.
- Tweaked doTriggerAINoCost of AF DamageAll.
- Tweaked shouldPumpCard.
- CheckStyle.
- Fixed Squandered Resources.
- Fixed optional Replacement effects not firing again after "No" is chosen once (experimental).
- Little script updates.
- When a game is restarted, set lands played back to 0.
- remove unused imports
- InputSelectManyCards uses only overloads syntax. made abstract
- Fixed AF Mana used on subabilities.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- CheckStyle.
- More Improvements of AI for Auras with "AILogic$ Curse".
- Fixing accidental submission of potential Sideboard code
- Changed the "spend only <color> mana on X" mechanism from using a SVar to using an ability parameter (first step towards implementing e.g. Soul Burn).
- Fixed AI code meddling with damage replacements.
- Fixed ConcurrentModificationException in InputMulligan.
- Fixed InputSelectMany.
- Improved ChooseSource AI.
- Fixed a shouldPumpCard call switching P/T.
- fixed NPE bug in initialize of colorX in InputPayManaX class
- added code to allow AI to make Charm choice
- modified inputUntapUpToNType so same card cannot be chosen more than once
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Sound System: improved the performance of the sound system by synchronizing certain sounds that tend to occur multiple times in rapid succession (damage, life loss, bury a creature) so that only one can play at a time.
- CheckStyle.
- Added some LQ pic URLs.
- added ability to loop over defined cards to RepeatEachEffect. added InGraveyard to Card.hasProperty.
- Added a LQ pic URL.
- Fixed Steel Hellkite.
- ChangeZoneAll with destination Library will now let you choose the order.
- Fixed spell description for Hypnotic Cloud
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- CheckStyle
- CheckStyle
- small script tweaks
- Fixed Enlightened Tutor not shuffling the library.
- Added the global rule change: "Each creature assigns combat damage equal to its toughness rather than its power.".
- Converted Doran, the Siege Tower.
- Converted Shifting Sliver to script.
- Cleanup.
- Created Variants branch.
- Variants: Created command zone view.
- Variants: Moved effects and emblems to command zone.
- Variants: Added a bunch of Vanguard cards (Thanks, Marc!)
- Variants: Added a Vanguard home screen.
- Variants: Created command zone view.
- Variants:2 files weren't added correctly.
- You no longer have to choose the order of cards for Elixir of Immortality.
- Fixed payment of phyrexian mana.
- Fixed Shocklands not using canPayLife(2).
- The AI will now better react to Platinum Emperion.
- Added a Java 7 compatibility fluff piece to the changes.txt file.
- If lethal damage has already been assigned just treat is as 0 in VAssignDamage
- Minor text change
- CheckStyle.
- Vanguard: added AffectedZone parameter to Birds of Paradise Avatar
- ChangeZone can now remember cards moved from the stack
- CheckStyle
- The AI can now use Icy Prison.
- Cleanup AF can now be used to clear individual defined cards from remembered lists
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Variants: Fixed CardRules parser choking on "+" characters.
- Fixed the wrong player gaining life when GainLife has a targetPlayer and a defined player. Defined player takes preference again as it used to. This fixes Divine Congregation, Gerrard Capashen and Spoils of Evil
- setinfo and oracle data for Chaotic Backlash
- Fixed Nomad Mythmaker targeting.
- CheckStyle.
- Another fix for Nomad Mythmaker.
- Fixed Exotic Curse.
- Reverted Nomad Mythmaker.
- Cleanup of getLKICopy functions.
- Fixed Starlit Sanctum.
- Hopefully the final fix for Nomad Mythmaker
- More fixing for Nomad Mythmaker.
- The AI will no longer choose non-Pump Auras with Nomad Mythmaker.
- The AI will no longer choose non-Pump Auras with Nomad Mythmaker.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- CheckStyle.
- Added an AI SVar to Zombie Mob.
- Booster Draft: added four more choices to block booster draft set order selection (e.g. so that MRD/DST/5DN is possible in addition to only 5DN/DST/MRD, etc.)
- corrected static ability name in effect script for Ember Gale
- Variants - Added Ertai (vanguard avatar)
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Made the SVar granted by Tower Above unique.
- Variants - Added the following avatars: Gerrard, Gix and Greven il-Vec
- Variants - Hand and life modifiers will now be displayed in the card info panel
- Variants - Added the following avatars: Grinning Demon Avatar, Hanna and Karn
- Variants - Added the missing EffectZone param to Hanna and Karn
- Variants - Added the following avatars: Lyna, Maraxus, Mishra, and Multani
- CheckStyle.
- Variants - Added the following avatars: Oracle, Orim, Rofellos, Selenia, and Serra
- Variants - Fixed TriggerZones for Rofellos
- Temporary fix for quest challenges.
- Variants - Added the following avatars: Volrath and Xantcha
- SoundEffectType holds only filename, unable to reproduce sounds by itself,
- EventBus added to GameState to properly route the ingame events to Sound system, game log and remote players (when time comes)
- AudioClips are cached at first request, this may lead to slowdowns (will precache if this is an issue)
- Most calls to sound system are still preformed directly, with a few only converted to events
- Variants: Removed avatars with RemAiDeck:True from AI's avatar list.
- Variants: Made AI aware of the avatar.
- Merged changes from trunk to Variants: r18254-r18318
- fix typo for sound
- setupPlayZone will now call doLayout directly and only once (hopefully fixes the ConcurrentModificationException).
- Convert Erg Raiders to script
- Variants - Added the following avatars: Sidar Kondo, Sisay, Squee, Urza, and Sliver Queen, Brood Mother
- Merged changes from trunk to Variants: r18319-r18323
- removed '3' from addpoison event
- the correct parameter is num
- Variants - Added the following avatars: Starke, Tahngarth, Takara, and Tawnos
- Changed AdjustLandPlays to a player keyword
- Converted Explore and Summer Bloom to script
- More preparations for quest worlds.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Sound System: converted counter sounds to the event bus system, NPE fix when making an audio clip, various minor fixes and typo corrections in sound system and event classes.
- CheckStyle.
- Removed some unnecessary updateObservers calls in startRound.
- Sound System: converted tap/untap sound playback to an event, preliminary support for synced sounds using the event model.
- Sound System: both synced and non-synced sounds are supported now using the event model (the type of the sound is declared in SoundEffectType constructors).
- Sound System: converted shuffle and flipcoin sounds to events, some minor stylistic changes.
- Sound System: converted more sounds to events.
- Sound System: done converting sounds to events.
- Sound System: last of the direct sound calls converted to an event.
- Moved most of the stuff happening in startGame outside of the swingWorker (to fix the ConcurrentModificationException error).
- Added Arcbound Fiend and Matsu-Tribe Decoy by swordshine.
- Fixed the global rule change "No more than one creature can attack each combat".
- Fixed Sleeper Agent.
- move questWorld out of QuestData package (because only things being serialized should be kept there)
- remove unused imports (soundeffecttype mostly)
- Fixed MustBlockCards not being checked for still attacking.
- Counter class renamed to CounterType
- CheckStyle.
- Convert Lighthouse Chronologist to script
- counters: united calls using multipliers and ignoring them,
- removed useless setCounter wrapper
- Variants: WIP new Vanguard Home screen for multiplayer shenanigans (Does not work yet)
- CheckStyle.
- Merged changes from trunk to Variants: r18323-r18354
- Converted Spirit of Resistance to script.
- Variants - Added the following avatars: Titania
- Reorganized Conditions of static abilities (WIP).
- Variants:Fixed the UI side of the new Vanguard home screen. (Now to make the match actually start!)
- Variants:Added some apparently unadded scripts from trunk.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Reorganized Conditions of static abilities (WIP).
- Fixed Alpha Status.
- CheckStyle.
- Unblocked missed script folder revisions.
- Sound System: added two new sounds (Block and Token), fixed a bug that caused the destroy sound to be continuously played at every phase when a planeswalker was on the field.
- Check for null arrays before assigning in SDisplayUtil
- Re-Merged 18323-18354 and merged 18357-18366 into Variants. *crosses fingers*
- Variants - Added setinfo to avatars and uploaded images to cardforge (they should download like any other card now)
- Variants - Reverted setinfo to avatars (caused crash on set image downloads)
- Variants:Added VAN set.
- Variants:Added SetInfo to avatars, courtesy of Marc.
- Variants:Replaced CardDb.getAllCards() with CardDb.getTraditionalCards() where appropriate.
- Variants:Reverted preferences.
- Updated some SVars.
- Added a fluff piece to the changes.txt file.
- Cleanup of CloneEffect.
- Bundled inZone property of cards.
- Targeting Overlay: much prettier targeting arrows (thanks to the MAGE team for permission for adaptation), some initial work for the "mouseover-only" mode fix (not enabled yet).
- Variants: Keep separate lists of traditional/nontraditional CardPrinted's in CardDb.
- Variants: Fixed crash when only playing against 1 opponent on vanguard.
- Variants: Fixed vanguard match not starting when selecting non-random avatar.
- Targeting Overlay: Card mouseover mode fixed and enabled, should work fine and should show only the targeting arrows (both combat and non-combat) for the card the mouse is hovering over.
- Converted the property "SameNameAsImprinted" to the "SharesNameWith" group.
- Variants - Added the following avatars: Erhnam Djinn Avatar, Etched Oracle Avatar, and Fallen Angel Avatar
- Targeting Overlay: Fixed a bug with the combat targeting arrows shown both ways in card mouseover mode.
- Added a fluff piece to the changes.txt file.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Variants: Added error handling for managing not to select deck/avatar in vanguard mode.
- Variants: Prevented user from selecting multiple avatars.
- Removed unused imports.
- Organized imports a little bit better.
- Cleanup.
- CheckStyle.
- renamed CounterAdd/Remove events
- removed impropper use of CardPrinted getType method
- commander stored as a single card in deck/Deck.java
- removed inpropper use of getType of InventoryItem objects
- check 4 traditionality of card
- Small renaming in GameAction
- Reorganized Conditions of static abilities (WIP).
- Slightly increased the size of the stats panel to better display long winning streaks.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- CheckStyle.
- Fixed Haunting Echoes.
- Variant: Fixed non-Random Vanguard selected.
- Fixed Karn Avatar.
- Cleanup of xCount.
- More cleanup of xCount.
- Removing unnecessary "HIDDEN" strings (WIP).
- Removing unnecessary "HIDDEN" strings (WIP).
- Convert Sylvan Library to Script
- Fixed sharesNameWith Imprinted
- Converted Haunting Echoes to Script
- Small cleanup in files
- Added PermanentNoncreature AF
- Converted Standstill and Bridge from Below to script
- Targeting Overlay: in the "card mouseover" mode, during the order of blockers declaration, the targeting overlay will first show all the blockers for the card for which the order of blockers is declared, and will also show individual arrows for each blocker when the blocker is selected in the blocker order list.
- Fixed Erg Raiders
- Removing unnecessary "HIDDEN" strings (WIP).
- Removing unnecessary "HIDDEN" strings (WIP).
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Variants:Fixed exile origins for some effects
- CheckStyle.
- Fixed MaxhandSize < 0 case in InputCleanup.
- Fixed Oath of Druids.
- Sound System: Added a previously missed link for the "Life Loss" sound event (now the sound will play during certain damage dealing effect resolutions which were previously missed).
- Sound System: TODO point removed.
- Targeting Overlay: minor stylistic fix in the code.
- Moved generatedMana from ManaEffect to GameActionUtil to use it for the AI to predict what a mana ability will produce (it seems to be the only function that is actually up to date).
- Removed getProducedMana from AbilityManaPart (it wasn't really functional anyway).
- Merged r18371-r18427 from trunk into Variants
- Merged Variants into trunk. You may need to delete match_preferred.xml
- Convert Lich to Script
- Convert Phylactery Lich to script
- Converted Noviken Heart of Progress to script
- Rechanged ValidGrave to Valid<AnyZone> count method that was lost in the merge.
- Fixed description for Titania's Song
- Updated cardTemplateScript.py for variants
- Updated CHANGES.txt
- Fixed Jace, Architect of Thought's first ability
- Added some AI code for casting Bonfire of the Damned via Miracle.
- Changed Gather Specimens to a replacement instead of triggered effect
- Fixed some triggers for use from command zone (WIP)
- Fixed some triggers for use from command zone (Done)
- Minor script changes
- Made player tabs in Vanguard setup more descriptive
- Updated tooltip text for hand icon so that it indicates the player's maximum hand size.
- Fixed Vanguard player tab names when re-adding players in setup
- Fixed doTriggerAINoCost in CounterAI when the stack is empty.
- Added a fluff piece to the changes.txt file.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Fixed max hand size.
- Removed a debug line from ChangeZone (related to Nafs Asp).
- Made the effect names for Nafs Asp and Glass Asp more descriptive.
- Somebody had overwritten worlds.txt in the SVN with an obsolete (incorrect) version, restored.
- Fix for Squeaking Pie Grubfellows.
- Removing unnecessary "HIDDEN" strings (WIP).
- Removing unnecessary "HIDDEN" strings (WIP).
- Made static effects reset hand size correctly for Vanguard.
- Added a LQ pic URL.
- CheckStyle.
- AI fix for Karn Liberated.
- Removing unnecessary "HIDDEN" strings (WIP).
- Fixed freeze whenever AI cast a creature with Tahngarth avatar
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- changed "getParentTargeting" methods to skip checking the "child" SpellAbility first
- consolidated code to find the fighters into one common method
- CheckStyle.
- reverting earlier changes until better solution is found
- After a draft finishes, properly reset buttons used in the Deck Editor
- Updated LQ pic urls for vanguard avatars to replace the cruddy ones from Gatherer
- Made Vanguard tab panel conform (a little) better to skin theme. Unfortunately, due to *clenches fist* Swing some out of place code had to be added because you can't specify colors for certain parts of the JTabbedPane component in it's actual class because that would make too much sense.
- Cleanup: Removed duplicate instances of TriggerZones param
- Vanguard avatar selection will now remove cards with RemRandomDeck flag from the list when choosing Random. Useful for cards like Diamond Queen Avatar that are still great in the right deck.
- Updated some avatar flags
- Added the recent commit logs to changes.txt. Preparing for the beta build and release.
- Preparing the changes.txt file for the next beta build and release.
Many people helped with this version. A special thank you goes out to them. (Attempted to list names alphabetically):
Contributors to This Release:
Agetian
ArsenalNut
bigapple90
AlexV
Gos
Hellfish
Marc
Max
Myk
RumbleBBU
Sloth
Sol
Serrasmurf
Swordshine
Zirbert
Chris H
Added the following Vanguard Avatars:
Arcbound Overseer Avatar
Ashling the Pilgrim Avatar
Ashnod
Barrin
Birds of Paradise Avatar
Chronatog Avatar
Crovax
Dauntless Escort Avatar
Diamond Faerie Avatar
Eladamri
Eladamri, Lord of Leaves Avatar
Erhnam Djinn Avatar
Ertai
Etched Oracle Avatar
Fallen Angel Avatar
Gerrard
Gix
Goblin Warchief Avatar
Greven il-Vec
Grinning Demon Avatar
Hanna
Hell's Caretaker Avatar
Karn
Lyna
Lyzolda, the Blood Witch Avatar
Maraxus
Mishra
Morinfen Avatar
Multani
Nekrataal Avatar
Oracle
Orim
Rofellos
Selenia
Serra
Sidar Kondo
Sisay
Sliver Queen, Brood Mother
Squee
Starke
Tahngarth
Takara
Tawnos
Titania
Urza
Volrath
Xantcha
Added the following cards:
Aladdin's Lamp
Assembly Hall
Atalya, Samite Master
Auriok Steelshaper
Chaotic Backlash
Chromeshell Crab
Chronomantic Escape
Circle of Solace
Complicate
Cragganwick Cremator
Credit Voucher
Crimson Hellkite
Crypt Rats
Demonfire
Dromar, the Banisher
Elfhame Sanctuary
Ember Gale
Equal Treatment
Glass Asp
Honorable Scout
Icy Prison
Island Sanctuary
Journey of Discovery
Kaho, Minamo Historian
Kamahl's Sledge
Kill Switch
Lumengrid Augur
Mirror of Fate
Mischievous Quanar
Nafs Asp
Nomad Mythmaker
Pay No Heed
Pilgrim of Justice
Pilgrim of Virtue
Prahv, Spires of Order
Proteus Staff
Righteous Indignation
Rith's Charm
Saprazzan Breaker
Shell of the Last Kappa
Shoving Match
Shrouded Serpent
Sivvi's Valor
Spoils of the Vault
Terastodon
Tower Above
Tsabo's Web
Vassal's Duty
War Elemental
(Quest icons used created by Teekatas, from his Legendora set http://raindropmemory.deviantart.com)
(Thanks to the MAGE team for permission to use their targeting arrows.)
(Thanks to http://www.freesound.org/browse/ for providing some sound files.)
@@ -120,9 +120,9 @@ if you're running Windows 7, make sure you're running the program as an admin, o
Java Issues:
Some people that are using an early version of Java 7 under the Windows OS have reported errors that state "Split must have > 2 children". Anyone having this sort of problem should de-install java 7 and install java 6 instead.
Some people that are using an early version of Java 7 under the Windows OS have reported errors that state "Split must have > 2 children". Anyone having this sort of problem should either upgrade Java 7 to a newer version or de-install Java 7 and install Java 6 instead.
Forge requires java 6 and will not run if you have an earlier version of java. You will need to update to java 6.
Forge requires Java 6 and will not run if you have an earlier version of Java. You will need to update to Java 6.
Card Picture Issues:
@@ -143,6 +143,383 @@ To report a bug with an official beta release, please follow the instructions at
To report a bug (1) with an alpha test, (2) with a nightly build, (3) with something compiled from the official Forge software repository, or (4) with the leading edge (formerly "SVN Bug Reports"), please do not submit your bugs to the forum. Instead, please follow the instructions at http://www.slightlymagic.net/wiki/How_to_File_a_Bug_Report_with_Mantis .
A new very hard tier category in Quest mode:
You will notice a new very hard tier category for the opponent. As you change from the previous tier to the next tier (easy to medium, etc.) you will now notice that there is not an abrupt change over. There is now a mixture of decks from the previous tier and the next tier for you to chose from. When you win a match you will complete the advancement to the next tier.
The Forge Booster Draft mode:
A significant re-write of the Booster Draft functionality has taken place. Draft from the Full card pool, sets/blocks or custom drafts (like cube). The AI will pick cards more intelligently, and builds decks from picked cards. Old method would pick cards for deck and then stop picking new cards.
The developer mode:
The developer mode gives us a few new features. These new features will primarily interest the devs as it will now help to test out specific cards while testing combat code changes. You can turn on or off this mode at the Home View -> Game Settings -> Preferences -> Gameplay Options section.
When turned on the battlefield will have a tab named "Dev Mode". There are a number of useful options in this tab. You can disable loss by milling, generate mana in your mana pool, tutor for card, etc.
New foil card image available:
Rob and Marc have worked together to add in a new feature which will overlay a card's image with a foil like film. A few random cards will have a foil like image in constructed mode games and possibly quest mode games. There is a check box on the Home View -> Game Settings -> Preferences view that you can use to turn this feature on or off.
Informational icons overlays for cards on the battlefield:
The Battlefield will now display three symbolic icons that will overlay creature cards. These icons are used to denote summoning sickness and whether a creature is attacking or blocking. Added additional icons that will be drawn over the cards in the battlefield for phasing and counters at a later date. The attack/block/phasing icons and counters will now also be shown on large cards, only casting cost will be omitted. Lands and tokens with different amounts/types of counters will no longer stack. Tokens with different summoning sickness will no longer stack. Lands that become creatures will now always be moved to the front row.
Optional choice for abilities that are on the stack:
When a spell or an ability appears on the stack and it says "(OPTIONAL)" you can right-click it to decide if you want to always accept or to decline it.
Multiple quest files:
Multiple quest files are now supported. This allows you to start a new quest and give it a unique name, and it will not overwrite your previous quest game file.
The new UI now uses tabbed panes:
We now have a tab system for sub-menus in the home screen. Quest mode refactored to fit this tab system. It's now considerably easier to use - less cramped, less clicks, more functionality.
The quest mode card shop:
You can now buy PreCon decks, Starter packs, Tournament packs and Fat packs from the quest mode card shop.
Player Avatar pictures:
The UI has a few new features including the option to pick an avatar from a collection of pictures. This can be accessed from the Settings -> Avatars tab.
The organizational structure of the /res/decks/ folder:
The organizational structure of the /res/decks/ folder has been improved and we now have these six subdirectories:
/decks/constructed/
/decks/cube/
/decks/draft/
/decks/plane/
/decks/scheme/
/decks/sealed/
You can place your deck files from an earlier version of Forge into the /res/decks/ folder. When you next launch Forge these decks will be converted to a newer format and will be moved into the proper subdirectory.
User-created themes for Forge's background, fonts, colors and icons:
When you select a new skin in the Preferences view Forge should save the change to the preference file, quit and then automatically re-launch with the new skin displayed. During testing some people have noticed that Forge is not restarting on their computer and they have to re-launch Forge themselves.
If anyone is interested in creating additional themes for inclusion in the Forge project then you should visit this topic at CCGH:
The Battlefield UI has a new feature implemented which allows us to move and resize the panels to new places on the battlefield. This allows us to personalize the battlefield display to our own liking. You should try moving panels by clicking and dragging their tabs.
If you do not like your efforts to personalize the battlefield display you can revert the display to the default layout by clicking on the Dock button labeled "Revert layout".
The pets in quest mode:
Some adjustments to the pets in quest mode were made. The quest mode plant wall's Deathtouch ability was deemed to be too strong against the AI's attack code and this ability was changed to Wither in this version. This includes a new pet.
The dock tab has a new button labeled "Open Layout":
The dock now has a new button labeled "Open Layout" along with old button with original function "Revert Layout". Modifying the battlefield layout will result in your changes being saved to a file named "match_preferred.xml". You can copy and rename that file to share your layouts with other people.
The res/images/icons/ folder:
The res/images/icons/ folder has been moved to res/pics/icons/. This folder holds the quest opponent icons, bazaar pets, and bazaar plants. If you have downloaded this content, it will still work, but the folder must be moved on your computer.
The new Deck Editors:
The work on the new UI is now finished and this version adds the new UI to the deck editors. We all would like to thank Doublestrike for his contributions to the new UI.
The new deck editors include:
* a better text search (can search for multiple terms, and "not" terms
Several people have noticed forge slowing down after playing a number of matches without quitting forge in between the matches that are played. The new UI may be involved somehow. We also hope to have this figured out and fixed in the near future. Please be patient in the meanwhile. A recent fix was implemented that should improve the slowdown problem somewhat.
A lot of time and effort have gone into fixing the memory leak problems that were recently noticed and reported to the dev team. Doublestrike and Slapshot deserve our applause and we are very thankful. People should be able to now play long multi match sessions without noticing slow downs and pauses.
Some performance changes were made to Forge and it should now operate more quickly on low end machines. Mid to high level machines are unlikely to notice as much of a performance increase. We tried to hunt down all of the bugs that resulted from these changes but there may still be a bug or two in this beta release.
A note about winning booster packs in quest mode:
If you win a quest mode match, you get a booster pack for every 1 or 2 (default) Wins, depending on the difficulty level. If you lose and you are playing on easy mode, you get a booster pack every 1 (default) Loss.
The new UI:
The first step was to update the battlefield window. The second step was to update the New Game window (now named Home view). We got constructed mode and then quest modes working first. We got the draft and sealed modes working again afterwards.
The work on the new UI is now for the most part finished. We should not expect major changes or major additions to the UI. Future betas may include a few minor bug fixes to the UI. And we may also include a few minor tweaks.
The new Alpha Strike button:
A new Alpha Strike button was added to the dock. The Dock is one of the tabs availble in the battlefield view.
Using Forge with the new Mac OS Mountain Lion:
If you update your OS to Apple OSX 10.8 Mountain Lion and try to launch a new version of forge that you will likely get a dialog which states "File is damaged and cannot be opened. Please move to trash."
Mountain Lion comes with a new Gatekeeper feature and this is probably blocking your ability to launch this newer version of forge. Visit the link below and follow the instructions. They are fairly long and detailed.
Please note that the issue is most likely caused by Mountain Lion's Gatekeeper feature and it is extremely unlikely that the forge dev team will attempt to get a unique Developer ID from Apple and use it to digitally sign our forge app.
The Forge sealed deck mode:
Sealed Deck mode has had a complete rewrite. Full cardpool, block and custom modes are supported. Custom sealed files in the res/sealed folder are exactly the same as custom draft files, except the file extension ".sealed".
A distinction may now be made between AI decks and Human decks, with the addition of a deck Metadata "PlayerType", which right now just helps by sorting human decks into the human combo box and AI decks into the AI combo box.
The Forge sealed deck mode has undergone significant changes. You can find these in the 1.2.14 beta and later versions. Instead of a single sealed deck match, you can now choose a 1-5 round gauntlet-style tournament where you will face increasingly difficult (probably) opponent decks. You can also choose to use starter packs instead of boosters in the block mode, choose to use 3-12 boosters instead of the default 6 in the full cardpool and custom (cube) modes, and so on.
Perhaps the most notable changes to the sealed deck mode are related to "fantasy blocks" and the greatly increased flexibility you have when you are building your own blocks.
The new Gauntlet mode:
A new Gauntlet mode has been added. This mode gives you four options: Quick Gauntlet, Build A Gauntlet, Load Gauntlet and Gauntlet Contests. You can create a group of computer decks to play against by choosing either Custom user decks, Quest Decks, Fully random color decks or Semi-random theme decks.
The new Variant mode (was named Multiplayer):
A new multiplayer mode has also been added. You should be able to play against multiple AI opponents at this time. You should note that the current Archenemy mode does not use Schemes at this time.
A lot of things are planned for this new multiplayer mode and it will take time to finish. Please enjoy what we have at this time and be patient. :)
Since Multiplayer is so new, not all cards will be 100% compatible right away as we expand scripting to handle multiple players.
The older match layout files are incompatible with the new multiplayer mode. The original match_default.xml, match_preferred.xml and the match_preferred.xml saved to a different name files have to go and can no longer be used. You can keep your editor_preferred.xml file. But you will have to setup your match view panels using the new match_default.xml file.
The new damage dialog:
The new damage dialog now uses the new UI.
When choosing cards, sources, etc. using a list box:
When choosing cards, sources, etc. using a list box, the currently selected card will now be visually highlighted on the playfield (to better distinguish between e.g. three different cards with the same name on the playfield). Now the visual highlighting of a card will also work when declaring the order of blockers.
Return to Ravnica Guild Sealed Deck mode:
Added Return to Ravnica Guild Sealed Deck mode. Start a new sealed deck game, choose "Block / Set" and then scroll down until you find "Return to Ravnica Guild Sealed (block)". Select that. From the "Choose Set Combination" menu, select the first option. You will be prompted twice to pick your guild (once for the promo cards, once for the actual booster - you should choose the same guild both times). After that you're ready to go.
Targeting arrows are now available in the battlefield display:
The Targeting Overlay has been fixed and re-enabled. It now correctly shows the targeting arcs in cases when it previously showed them in the wrong direction. The match UI is properly refreshed when the targeting arcs are switched on/off. The defunct "mouseover-only" mode is currently disabled (it crashes Forge, difficult to fix).
The visuals for targeting arrows has been improved and looks better, with an adaptation of the arrow drawing code from MAGE. Thanks to the MAGE team for permission for the adaptation.
The new sound system:
Forge now has a sound effect system in place. Several basic sounds are linked to the code now and will be enabled when "Enable Sounds" option is checked in the preferences. It supports WAV and AU file formats.
Currently supported sound effects are:
(the ones already available in the standard installation of Forge are marked with a [*])
AddCounter [*] - add_counter.wav - triggered when a counter is added to a permanent.
Artifact[*] - artifact.wav - triggered when an artifact is played.
ArtifactCreature [*] - artifact_creature.wav - triggered when an artifact creature is played.
BlackLand [*] - black_land.wav - triggered when a land with the "B" mana ability is played.
Block [*] - block.wav - triggered when a blocker is assigned.
BlueLand [*] - blue_land.wav - triggered when a land with the "U" mana ability is played.
Creature [*] - creature.wav - triggered when a creature is played.
Damage - damage.wav - triggered when a creature is damaged.
Destroy [*] - destroy.wav - triggered when a permanent is destroyed.
Discard [*] - discard.wav - triggered when a player discards a card.
Draw [*] - draw.wav - triggered when a player draws a card.
Enchantment [*] - enchant.wav - triggered when an enchantment is played.
EndOfTurn [*] - end_of_turn.wav - triggered at the end of turn.
Equip [*] - equip.wav - triggered when an equipment is equipped.
FlipCoin [*] - flip_coin.wav - triggered when a coin is flipped.
GreenLand [*] - green_land.wav - triggered when a land with the "G" mana ability is played.
Instant [*] - instant.wav - triggered when an instant is played.
LifeLoss [*] - life_loss.wav - triggered when a player loses life.
LoseDuel[*] - lose_duel.wav - triggered when a player loses a duel.
ManaBurn - mana_burn.wav - triggered during a mana burn if the appropriate rule is enabled.
OtherLand - other_land.wav - triggered when a land with non-color mana abilities or any other land is played.
Planeswalker [*] - planeswalker.wav - triggered when a planeswalker is played.
Poison [*] - poison.wav - triggered when a player receives a poison counter.
RedLand [*] - red_land.wav - triggered when a land with the "R" mana ability is played.
Regen - regeneration.wav - triggered when a creature is regenerated.
RemoveCounter - remove_counter.wav - triggered when a counter is removed from a permanent.
Sacrifice - sacrifice.wav - triggered when a permanent is sacrificed.
Sorcery [*] - sorcery.wav - triggered when a sorcery is played.
Shuffle [*] - shuffle.wav - triggered when a player shuffles his deck.
Tap [*] - tap.wav - triggered when a permanent is tapped.
Token [*] - token.wav - triggered when a token is created.
Untap [*] - untap.wav - triggered when a permanent is untapped.
WhiteLand [*] - white_land.wav - triggered when a land with the "W" mana ability is played.
WinDuel [*] - win_duel.wav - triggered when a player wins the duel.
All sounds use the event bus model now and are not called directly.
The new Vanguard mode:
We now have a Vanguard mode implemented. This is a work in progress. The older match layout files are incompatible with the new Vanguard mode. The original match_default.xml, match_preferred.xml and the match_preferred.xml saved to a different name files need to be deleted and can no longer be used. You can keep your editor_preferred.xml file. But you will have to setup your match view panels using the new match_default.xml file.
The new Archenemy mode:
Schemes have been added to the Archenemy mode. This is a work in progress and there may be a bug or two for us to find.
Quest Worlds:
This version allows you to travel between the regular quest world and the other worlds (Shandalar, Ravnica, Jamuraa, more may be added in the future) to get different duel opponents and challenges. You will have to complete your current challenges before travelling or you will lose them.
World-specific format enforcing and starting world selection are available. Something has to be done about locked (non-repeatabled) challenges so they do not end up locking other challenges in different worlds.
Forge now has sideboards for the human player:
Sideboards have been implemented for Human players. We currently have:
* Sideboard creation support in relevant deck editor modes.
* In-game sideboarding with persistence between rounds in a match and sorting of cards in the in-game sideboard editor.
* Sideboard supported as a zone, with some relevant cards already in.
* Correct validation of decks, both before the game starts and between the rounds (Limited min 40, Constructed min 60, free-form sideboard/main in Draft and Sealed, 1:1 sideboarding with 0 or 15 cards allowed in sideboard in Constructed (all variants) and Quest; OK to have less than minimum between rounds in a match in all modes if lost cards on ante).
* Correct (fingers crossed) interaction of sideboarding with other relevant aspects of Forge rule enforcement (mulligan and ante interactions were corrected, initial hand and library between rounds were both corrected, everything else looks so far so good).
We don't yet have:
* AI sideboarding.
The deck conformance/legality limitaion:
The deck conformance/legality is now a user-togglable preference and is enabled by default. You no longer need to turn on dev mode to play an illegal deck.
Using Forge on displays that are only 600 pixels tall or slightly larger:
The "Sanctioned Format: Constructed" view should now be compatible with displays that are only 600 pixels tall. The deck list at 600 pixels tall should now display three lines of text rather than less than a single line of text.
We are looking for help in finding additional sound files for the new sound feature:
This version of forge includes a few sound files for the new sound effect system. While we have several sounds assigned to a few of the available events there are a number of events that do not yet have a assigned sound file. This should be considered a work in progress and we could use some help in finding interesting sounds that we can add to forge.
The sound files need to be in wav or au format, wav appears to be more widespread but the code can handle either format. The sound files need to be copyright-free and they should be in the public domain.
You can either record your own sounds if you have the necessary equipment or you may be able to find an appropriate sound on a website such as http://www.freesound.org/browse/
You should note that sound files can be large and we would like to avoid this if possible. A good size to shoot for would be 50 K or less. There is a freeware sound editor that may have versions for all operating systems. This app is named Audacity.
We have a forge forum topic at the Collectible Card Games Headquarters web site that is devoted to finding sounds for this new sound system. Please visit this topic and contribute a sound or two. We can use your help and assistance. :)
A second Quest World, Jamuraa, has been added to Forge. When playing Quest mode, it is now possible to 'Travel' between the regular Quest environment and the two Worlds, Shandalar and Jamuraa, both of which include special formats, opponents and challenges. Or you can start a new Quest in any of them.
Like Shandalar, Jamuraa is a fantasy world. Its peaceful existence has recently been wrecked by a planar conjunction that shattered the barriers between Jamuraa and the infernal planes known as Jahim, Saqar, and Jahannam. The demon planeswalkers who rule those planes, and their hellish sister, Lilith, are now extending their influence over Jamuraa and gradually destroying the whole continent. Your task is to fight their minions and ultimately challenge the four demons - but beware, their destructive might is unfathomable!
From a technical perspective, the following sets are available to the player in Jamuraa:
5th Edition, Arabian Nights, Mirage, Visions, Weatherlight.
Jamuraa contains:
- 81 opponent decks, broken down as follows: 13 'easy' decks, 17 'medium' decks, 31 'hard' decks, and 20 'very hard' decks.
- 9 challenges, including the 4 demon planeswalkers (the 3 demon rulers and Lilith) and 5 other special scenarios set in Jamuraa. All challenges are repeatable. All are fairly hard, and the 4 demon challenges are especially fiendish.
For the most part, the opponent duel and challenge decks are built with the same format restrictions as your own cardpool, and some of the easiest opponent decks were in fact based on a limited cardpool. But there will be exceptions, especially in the hard/very hard decks and challenges, which can be more like Vintage/T1 decks than pure Mirage + 5th Edition decks. There will be older cards here and there, and maybe even a random Tempest card or two (although these are extremely scarce!).
Hint: if you find the later 'Vintage' opponent decks unfair or near-impossible to beat with your 5th Edition/Mirage block cards, you can Travel to Shandalar and collect some old power cards there, and then return to Jamuraa. Just remember to complete your challenges before traveling.
Information on the quest worlds format can be found in this topic:
Some work is being done on the various deck editors -- including the quest spell shop -- and we hope to add in additional features while improving the UI. Here is a quick tutorial on the new features:
FILTERS
The Filters tab has been removed and filters are now controlled from the Card Catalog tab. Pretty much everything that used to be a checkbox is now represented by a toggle button. The statistics labels at the top for colors and card types can now be clicked to toggle display of the related cards. Clicking the Total Cards label in the upper left will alternately set all filters on and off.
Text searches are done by just typing the the text box. The results will update as you type. Use the combo box to the right of the text box to set whether the search should be for cards with or without the specified text. The three toggle buttons to the right of the combo box allow you to specify where in the card the text should (or should not) match. Complex text searches, such as for goblin creatures with haste but not with kicker costs, are possible by stacking the search filters. Put the current search filter on the stack by selecting the "Add filter" button to the left of the text box and choosing the "Current text search" option. You can also use the keyboard shortcut Ctrl+Enter (Cmd+Enter on OSX). This will keep your current text search applied, but will clear the text box and allow you to input the next search filter. To perform the example goblin search above, you would:
1) Ensure "in" is displayed in the the combo box. Enter "goblin" in the text box and deselect Name and Text so that only Type is selected.
2) Hit Ctrl+Enter (Cmd+Enter on OSX). Notice the "Contains: 'goblin" in: type" filter appears below the text box.
3) Type "haste" in the text box. Deselect Type and select Text. Hit Ctrl+Enter.
4) Change the combo box from "in" to "not in". Type "kicker" in the text box.
The shown entries match your combined search filter. Click the little 'x' in the upper right corner of each search widget to remove that filter from the filter stack.
Format filters allow you to restrict the shown cards to those that are legal in a particular format. Select the "Add filter" button, hover over the "Format" submenu, and choose one of the defined formats. The filter will appear below the text box and will be combined with whatever other filters you have on the stack. Hover the mouse over the filter widget to see details on allowed sets and banned cards. Keep in mind that cards from other, non-listed sets may still appear in the results if they are just reprints of allowed cards.
Set filters are similar to format filters except that a window will come up with a grid of checkboxes so you can select exactly which sets you would like shown. There is a checkbox at the bottom (off by default) that will allow the filter to include cards reprinted in unselected sets, just like the format filter above. If you don't check this checkbox, only cards printed in the selected sets will be shown, allowing you to focus on just that set's version of a particular card. This is very useful in quest mode when determining which cards in a set you have yet to collect.
Value range filters allow you to restrict the cards by power, toughness, and/or converted mana cost (CMC). The text boxes that appear in the filter widget are editable and update the shown cards in realtime as you modify the numbers.
Quest World filters are similar to Format filters in that they restrict the shown cards to a group of sets, respecting lists of banned cards. They are useful when constructing decks that will be valid in the various quest worlds. You can have more than one quest world filter active at the same time; useful if you are constructing a deck that will be used in multiple worlds.
SPELL SHOP
The spell shop interface has also received some usability enhancements. The first one you may notice is the addition of a new column named "Owned". This column is intended to help players decide whether buying an item is likely to be beneficial. The data in this column varies depending on what kind of item the row represents:
Cards: A number indicating how many of a particular card a player already owns
Preconstructed decks: A "YES" or "NO" indicating whether the deck exists in the player's deck list
Booster/fat packs: A percentage indicating how close a player is to completing the related set. "Complete" means at least one of every basic land and at least 4 of every other card.
If you don't want this column, it can be turned off in the editor preferences.
The new "Sell excess cards" button appears above the player's library. Clicking it will sell all cards that are not basic lands until only four copies of the cards remain. It's a one-click "cleanup" of the library and a great way to safely and quickly regain some cash.
The "Full catalog view" button appears to the left of the "Buy Card" button. Toggling this button will switch between showing the store's inventory and the full catalog. By applying a filter to show only a particular set (or group of sets), players can use this view to discover exactly which cards they do not own. Buying and selling cards is disabled while in this view.
Multibuy: By selecting any number of items and hitting space (or selecting the "Buy Card" or "Sell Card" buttons), a player can buy one of everything selected.
Find-as-you-type is now implemented for Deck Editor tables. Just start typing while the table has focus and the next card with a matching string in its name will be highlighted. If more than one card matches, hit Enter to select the next matching card. A popup panel will appear with the search string so you know what you are searching for. If no cards match the string, the string will be highlighted in red. Normally, if you hit the spacebar while a card is selected in one table, the card will be moved to the other table (catalog/deck). When the popup is displayed, space characters are interpreted as part of the search string. Find-as-you-type mode is automatically exited after 5 seconds of inactivity, or hit Escape to exit find-as-you-type mode immediately.
The Deck Editor has also gained some hotkey and context menu abilities. R-click on a card (or a group of selected cards) for a list of actions and keyboard shortcuts. In particular, you can now transfer cards 4 at a time using the keyboard and interact with the sideboard from anywhere. Also remember that you can jump to the other table with the arrow keys and jump to the text filter with ctrl/cmd+f. From the text filter, you can jump down to the tables by pressing enter.
The Game Log:
Added a 'copy to clipboard' button on WinLose screen so players can easily copy the game log.
The UI more keyboard-friendly:
Work was also done on making the UI more keyboard-friendly. For example, the OK button should now stay focused during matches, so you can advance through the stages by hitting Enter without having to go over and click the button all the time. If you find the button is losing focus, please report it as a bug.
Gatecrash Guild Sealed game mode:
Gatecrash Guild Sealed game mode has been added. To use it, start a new Sealed Mode Game, select "Block / Set" and "Gatecrash Guild Sealed". Select the first (default) configuration in the "Choose Set Combination" dialog, and when asked to pick your boosters, choose the guild you want twice (once for the guild-specific booster, and then for the extra promo cards).
The following cards are not included in the guild boosters of this game mode because they are not currently implemented in Forge: Bane Alley Broker, Bioshift, Killing Glare, Simic Manipulator.
Our Lawyers Made Us Do This:
This product includes software developed by the Indiana University Extreme! Lab (http://www.extreme.indiana.edu/).
<conditionproperty="fullversionstring"value="${project.version}-r${forge.revision}${forge.specialStatus}"else="${project.version}-r${forge.revision}${forge.specialStatus} (mixed revisions detected; please update from the root directory)">
print("This script requires the text version of Arch's mtg-data to be present.You can download it from slightlymagic.net's forum and either place the text version next to this script or edit this script and provide the path to the file at the top.")
print("This script requires the text version of Arch's mtg-data to be present.You can download it from slightlymagic.net's forum and either place the text version next to this script or edit this script and provide the path to the file at the top.")
print("This script requires the text version of Arch's mtg-data to be present.You can download it from slightlymagic.net's forum and either place the text version next to this script or edit this script and provide the path to the file at the top.")
T:Mode$ SetInMotion | ValidCard$ Card.Self | Execute$ DarkEffect | TriggerZones$ Command | TriggerDescription$ When you set this scheme in motion, until your next turn, whenever a player taps a land for mana, that player adds one mana to his or her mana pool of any type that land produced.
SVar:DarkEffect:AB$ Effect | Cost$ 0 | Name$ Dark Power Scheme | Duration$ UntilYourNextTurn | Triggers$ DarkPower | SVars$ DarkMana
SVar:DarkPower:Mode$ TapsForMana | ValidCard$ Land | Execute$ DarkMana | TriggerZones$ Command | Static$ True | TriggerDescription$ Whenever a player taps a land for mana, that player adds one mana to his or her mana pool of any type that land produced.
SVar:DarkMana:AB$ ManaReflected | Cost$ 0 | ColorOrType$ Type | Valid$ Defined.Triggered | ReflectProperty$ Produced | Defined$ TriggeredPlayer
Oracle:When you set this scheme in motion, until your next turn, whenever a player taps a land for mana, that player adds one mana to his or her mana pool of any type that land produced.
A:SP$ Discard | Cost$ X 1 B Discard<X/Card/card> | ValidTgts$ Opponent | Mode$ RevealYouChoose | NumCards$ X | References$ X | SpellDescription$ Look at target opponent's hand and choose X cards from it. That player discards those cards.
Oracle:As an additional cost to cast Abandon Hope, discard X cards.\nLook at target opponent's hand and choose X cards from it. That player discards those cards.
End
Name:Abandon Hope
ManaCost:X 1 B
Types:Sorcery
A:SP$ Discard | Cost$ X 1 B Discard<X/Card/card> | ValidTgts$ Opponent | Mode$ RevealYouChoose | NumCards$ X | References$ X | SpellDescription$ Look at target opponent's hand and choose X cards from it. That player discards those cards.
Oracle:As an additional cost to cast Abandon Hope, discard X cards.\nLook at target opponent's hand and choose X cards from it. That player discards those cards.
Oracle:Abandoned Outpost enters the battlefield tapped.\n{T}: Add {W} to your mana pool.\n{T}, Sacrifice Abandoned Outpost: Add one mana of any color to your mana pool.
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.DamagedBy | TriggerZones$ Battlefield | Execute$ TrigGainLife | TriggerDescription$ Whenever a creature dealt damage by CARDNAME this turn dies, you gain life equal to that creature's toughness.
SVar:TrigGainLife:AB$ GainLife | Cost$ 0 | Defined$ You | LifeAmount$ X | References$ X
Oracle:First strike\nWhenever a creature dealt damage by Abattoir Ghoul this turn dies, you gain life equal to that creature's toughness.
End
Name:Abattoir Ghoul
ManaCost:3 B
Types:Creature Zombie
PT:3/2
K:First Strike
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.DamagedBy | TriggerZones$ Battlefield | Execute$ TrigGainLife | TriggerDescription$ Whenever a creature dealt damage by CARDNAME this turn dies, you gain life equal to that creature's toughness.
SVar:TrigGainLife:AB$ GainLife | Cost$ 0 | Defined$ You | LifeAmount$ X | References$ X
T:Mode$ ChangesZone | ValidCard$ Card.AttachedBy | Origin$ Battlefield | Destination$ Graveyard | TriggerZones$ Battlefield | Execute$ TrigReturnOwner | TriggerDescription$ When enchanted creature is put into a graveyard, return that card to the battlefield under its owner's control.
T:Mode$ ChangesZone | ValidCard$ Card.AttachedBy | Origin$ Battlefield | Destination$ Graveyard | Execute$ TrigReturnOwner | TriggerDescription$ When enchanted creature dies, return that card to the battlefield under its owner's control.
Oracle:Enchant creature\nWhen Abduction enters the battlefield, untap enchanted creature.\nYou control enchanted creature.\nWhen enchanted creature dies, return that card to the battlefield under its owner's control.
A:SP$ Effect | Cost$ 1 W | ValidTgts$ Player | Name$ Abeyance Effect | StaticAbilities$ STCantBeCast,STCantBeActivated | RememberObjects$ Targeted | AILogic$ BeginningOfOppTurn | SubAbility$ DBDraw | SpellDescription$ Until end of turn, target player can't cast instant or sorcery spells, and that player can't activate abilities that aren't mana abilities.
SVar:STCantBeCast:Mode$ CantBeCast | ValidCard$ Instant,Sorcery | Caster$ Player.IsRemembered | Description$ Target player can't cast instant or sorcery spells, and that player can't activate abilities that aren't mana abilities.
SVar:STCantBeCast:Mode$ CantBeCast | ValidCard$ Instant,Sorcery | Caster$ Player.IsRemembered | EffectZone$ Command | Description$ Target player can't cast instant or sorcery spells, and that player can't activate abilities that aren't mana abilities.
Oracle:Until end of turn, target player can't cast instant or sorcery spells, and that player can't activate abilities that aren't mana abilities.\nDraw a card.
T:Mode$ Blocks | ValidCard$ Card.Self | ValidBlocked$ Creature.Green,Creature.White | DelayedTrigger$ DelTrigBlocked | TriggerDescription$ Whenever CARDNAME blocks or becomes blocked by a green or white creature, destroy that creature at end of combat.
T:Mode$ AttackerBlocked | ValidCard$ Creature.Green,Creature.White | ValidBlocker$ Card.Self | DelayedTrigger$ DelTrigBlocked | TriggerDescription$ Whenever CARDNAME blocks or becomes blocked by a green or white creature, destroy that creature at end of combat.
T:Mode$ Blocks | ValidCard$ Creature.Green,Creature.White | ValidBlocked$ Card.Self | DelayedTrigger$ DelTrigBlocker | Secondary$ True | TriggerDescription$ Whenever CARDNAME blocks or becomes blocked by a green or white creature, destroy that creature at end of combat.
SVar:DelTrigBlocked:Mode$ Phase | Phase$ EndCombat | ValidPlayer$ Player | Execute$ TrigDestroyBlocked | TriggerDescription$ Destroy blocked creature at end of combat.
SVar:DelTrigBlocker:Mode$ Phase | Phase$ EndCombat | ValidPlayer$ Player | Execute$ TrigDestroyBlocker | TriggerDescription$ Destroy blocking creature at end of combat.
Oracle:Cumulative upkeep-Put a -1/-1 counter on Aboroth. (At the beginning of your upkeep, put an age counter on this permanent, then sacrifice it unless you pay its upkeep cost for each age counter on it.)
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddKeyword$ Shroud | Condition$ Threshold | Description$ Threshold - Enchanted creature has shroud as long as seven or more cards are in your graveyard. (It can't be the target of spells or abilities.)
Oracle:Enchant creature\nEnchanted creature has flying.\nThreshold - Enchanted creature has shroud as long as seven or more cards are in your graveyard. (It can't be the target of spells or abilities.)
A:SP$ Pump | Cost$ R | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ HIDDEN CARDNAME's power and toughness are switched | SpellDescription$ Switch target creature's power and toughness until end of turn.
A:SP$ Destroy | Cost$ B G | ValidTgts$ Permanent.nonLand+cmcLE3 | TgtPrompt$ Select target nonland permanent with converted mana cost 3 or less | SpellDescription$ Destroy target nonland permanent with converted mana cost 3 or less.
Oracle:Haunt (When this creature dies, exile it haunting target creature.)\nWhen Absolver Thrull enters the battlefield or the creature it haunts dies, destroy target enchantment.
A:SP$ Counter | Cost$ W U U | TargetType$ Spell | TgtPrompt$ Select target spell | ValidTgts$ Card | SpellDescription$ Counter target spell. You gain 3 life. | SubAbility$ DBGainLife
A:SP$ LoseLife | Cost$ 6 B | ValidTgts$ Player | TgtPrompt$ Select a player | LifeAmount$ 4 | SubAbility$ DBGainLife | SpellDescription$ Target player loses 4 life and you gain 4 life.
SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 4
Oracle:Target player loses 4 life and you gain 4 life.\nBasic landcycling {1}{B} ({1}{B}, Discard this card: Search your library for a basic land card, reveal it, and put it into your hand. Then shuffle your library.)
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigDestroy | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, destroy all creatures blocking or blocked by it. They can't be regenerated.
A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to target creature or player this turn.
A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature.Artifact | Amount$ 2 | TgtPrompt$ Select target artifact creature | SpellDescription$ Prevent the next 2 damage that would be dealt to target artifact creature this turn.
Oracle:{T}: Prevent the next 1 damage that would be dealt to target creature or player this turn.\n{T}: Prevent the next 2 damage that would be dealt to target artifact creature this turn.
A:SP$ GainLife | Cost$ 3 W | LifeAmount$ 5 | SpellDescription$ Choose one - You gain 5 life;
A:SP$ PreventDamage | Cost$ 3 W | ValidTgts$ Creature | TgtPrompt$ Select target creature | Amount$ 5 | SpellDescription$ or prevent the next 5 damage that would be dealt to target creature this turn.
A:SP$ GainLife | Cost$ 5 W | PrecostDesc$ Entwine | CostDesc$ 2 | LifeAmount$ 5 | NonBasicSpell$ True | SpellDescription$ (Choose both if you pay the entwine cost.) | SubAbility$ DBPreventDamage
Oracle:Choose one - You gain 5 life; or prevent the next 5 damage that would be dealt to target creature this turn.\nEntwine {2} (Choose both if you pay the entwine cost.)
R:Event$ Draw | ActiveZones$ Battlefield | ValidPlayer$ You | ReplaceWith$ AbundantChoice | Optional$ True | Description$ If you would draw a card, you may instead choose land or nonland and reveal cards from the top of your library until you reveal a card of the chosen kind. Put that card into your hand and put all other cards revealed this way on the bottom of your library in any order.
Oracle:If you would draw a card, you may instead choose land or nonland and reveal cards from the top of your library until you reveal a card of the chosen kind. Put that card into your hand and put all other cards revealed this way on the bottom of your library in any order.
A:SP$ Attach | Cost$ G | ValidTgts$ Land | AILogic$ Pump
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ FreeCard | TriggerDescription$ When CARDNAME enters the battlefield, draw a card.
SVar:FreeCard:DB$Draw | Cost$ 0 | Defined$ You | NumCards$ 1
S:Mode$ Continuous | Affected$ Card.EnchantedBy | AddAbility$ AbundantGrowthTap | Description$ Enchanted land has "T: Add one mana of any color to your mana pool."
SVar:AbundantGrowthTap:AB$ Mana | Cost$ T | Produced$ Any | SpellDescription$ Add one mana of any color to your mana pool.
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigSac | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME is put into a graveyard from the battlefield, each player sacrifices a creature.
SVar:TrigSac:AB$Sacrifice | Cost$ 0 | SacValid$ Creature | Defined$ Each
SVar:Rarity:Common
SVar:TrigSac:AB$Sacrifice | Cost$ 0 | SacValid$ Creature | Defined$ Each
A:AB$ DealDamage | Cost$ B T | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ X | SubAbility$ DBTap | References$ X | SpellDescription$ Tap target creature. CARDNAME deals damage equal to CARDNAME's power to that creature.
T:Mode$ Discarded | ValidCard$ Card.YouDontCtrl | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever an opponent discards a card, CARDNAME gets +2/+2 and gains fear until end of turn. (It can't be blocked except by artifact creatures and/or black creatures.)
T:Mode$ Discarded | ValidCard$ Card.OppOwn | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever an opponent discards a card, CARDNAME gets +2/+2 and gains fear until end of turn. (It can't be blocked except by artifact creatures and/or black creatures.)
Oracle:Whenever an opponent discards a card, Abyssal Nocturnus gets +2/+2 and gains fear until end of turn. (It can't be blocked except by artifact creatures and/or black creatures.)
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | Execute$ TrigDiscard | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals damage to a player, that player discards a card.
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Command | IsPresent$ Card.YouCtrl | PresentZone$ Hand | PresentCompare$ EQ0 | Execute$ AcademicDraw | TriggerDescription$ At the beginning of your end step, if you have no cards in hand, draw seven cards.
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos, discard your hand.
SVar:RolledChaos:AB$ Discard | Cost$ 0 | Mode$ Hand | Defined$ You
T:Mode$ PlanarDice | Result$ Planeswalk | TriggerZones$ Command | Execute$ RolledWalk | Secondary$ True | TriggerDescription$ Whenever you roll Planeswalk, put this card on the bottom of its owner's planar deck face down, then move the top card of your planar deck off that planar deck and turn it face up
SVar:RolledWalk:AB$ Planeswalk | Cost$ 0
A:AB$ RollPlanarDice | Cost$ X | SorcerySpeed$ True | ActivationZone$ Command | SpellDescription$ Roll the planar dice.
T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Battlefield | Destination$ Graveyard | Execute$ TrigExile | OptionalDecider$ TriggeredCardController | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, you may exile it. If you do, search your library for an enchantment card and put that card onto the battlefield. Then shuffle your library.
Oracle:When Academy Rector dies, you may exile it. If you do, search your library for an enchantment card, put that card onto the battlefield, then shuffle your library.
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChangeZone | TriggerDescription$ When CARDNAME enters the battlefield, you may put an Aura card from your hand onto the battlefield attached to Academy Researchers.
A:AB$ Mana | Cost$ T | Produced$ 1 | SpellDescription$ Add 1 to your mana pool.
A:AB$ ChangeZone | Cost$ 1 U T | TgtPrompt$ Choose target artifact card in your graveyard | ValidTgts$ Artifact.YouCtrl | Origin$ Graveyard | Destination$ Library | SpellDescription$ Put target artifact card from your graveyard on top of your library.
A:SP$ Pump | Cost$ 3 G G | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ X | NumDef$ X | References$ X | SpellDescription$ Target creature gets +X/+X until end of turn, where X is the highest converted mana cost among permanents you control.
T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigBattleCry | TriggerDescription$ Battle cry (Whenever this creature attacks, each other attacking creature gets +1/+0 until end of turn.)
A:SP$ Draw | Cost$ 1 U | Defined$ You | NumCards$ 1 | SubAbility$ DBDraw | SpellDescription$ Draw a card, then draw cards equal to the number of cards named CARDNAME in all graveyards.
SVar:DBDraw:DB$Draw | Defined$ You | NumCards$ X | References$ X
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDestroy | OptionalDecider$ You | TriggerDescription$ When CARDNAME enters the battlefield, you may destroy target Equipment.
Oracle:{4}, {T}: Whenever target creature deals combat damage to a non-Wall creature this turn, destroy that non-Wall creature. When the targeted creature leaves the battlefield this turn, sacrifice Acidic Dagger. Activate this ability only before blockers are declared.
Oracle:Deathtouch (Any amount of damage this deals to a creature is enough to destroy it.)\nWhen Acidic Slime enters the battlefield, destroy target artifact, enchantment, or land.
S:Mode$ Continuous | Affected$ Sliver | AddAbility$ Damage | Description$ All Slivers have "2, Sacrifice this permanent: This permanent deals 2 damage to target creature or player."
SVar:Damage:AB$DealDamage | Cost$ 2 Sac<1/CARDNAME> | Tgt$ TgtCP | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player.
SVar:Damage:AB$DealDamage | Cost$ 2 Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player.
A:SP$ DealDamage | Cost$ 2 R | Defined$ You | NumDmg$ X | SubAbility$ DBDamageOpp | References$ X | SpellDescription$ CARDNAME deals damage to each player equal to the number of lands he or she controls.
SVar:DBDamageOpp:DB$DealDamage | Defined$ Opponent | NumDmg$ Y | References$ Y
SVar:X:Count$TypeYouCtrl.Land
SVar:Y:Count$TypeOppCtrl.Land
A:SP$ RepeatEach | Cost$ 2 R | RepeatPlayers$ Player | RepeatSubAbility$ DBDamageOpp | SpellDescription$ CARDNAME deals damage to each player equal to the number of lands he or she controls.
SVar:DBDamageOpp:DB$ DealDamage | Defined$ Remembered | NumDmg$ X | References$ X
A:AB$ DealDamage | Cost$ 1 T | NumDmg$ 1 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | SubAbility$ SquirrelTokenCtrl | SpellDescription$ CARDNAME deals 1 damage to target creature or player. That creature's controller or that player puts a 1/1 green Squirrel creature token onto the battlefield.
Oracle:{1}, {T}: Acorn Catapult deals 1 damage to target creature or player. That creature's controller or that player puts a 1/1 green Squirrel creature token onto the battlefield.
Oracle:Put two 1/1 green Squirrel creature tokens onto the battlefield.\nFlashback-{1}{G}, Pay 3 life. (You may cast this card from your graveyard for its flashback cost. Then exile it.)
A:SP$ ChangeZone | Cost$ 3 U U | Origin$ Library | Destination$ Battlefield | ValidTgts$ Opponent | ChangeType$ Artifact | ChangeNum$ 1 | GainControl$ True | IsCurse$ True | SpellDescription$ Search target opponent's library for an artifact card and put that card onto the battlefield under your control. Then that player shuffles his or her library.
Oracle:Search target opponent's library for an artifact card and put that card onto the battlefield under your control. Then that player shuffles his or her library.
Oracle:Echo {1}{G} (At the beginning of your upkeep, if this came under your control since the beginning of your last upkeep, sacrifice it unless you pay its echo cost.)
A:SP$ GainControl | Cost$ 3 PR PR | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select target creature an opponent controls. | LoseControl$ EOT | Untap$ True | AddKWs$ Haste | SpellDescription$ Gain control of target creature an opponent controls until end of turn. Untap that creature. It gains haste until end of turn.
Oracle:({R/P} can be paid with either {R} or 2 life.)\nGain control of target creature an opponent controls until end of turn. Untap that creature. It gains haste until end of turn.
A:SP$ GainControl | Cost$ 2 R | ValidTgts$ Creature | TgtPrompt$ Select target creature | LoseControl$ EOT | Untap$ True | AddKWs$ Haste | SpellDescription$ Gain control of target creature until end of turn. Untap that creature. It gains haste until end of turn.
A:SP$ Destroy | Cost$ R | ValidTgts$ Permanent.Blue | TgtPrompt$ Select target blue permanent | PrecostDesc$ Choose one - | SpellDescription$ Destroy target blue permanent;
A:SP$ ChangeZone | Cost$ R | ValidTgts$ Island | TgtPrompt$ Select target Island | Origin$ Battlefield | Destination$ Hand | SpellDescription$ or return target Island to its owner's hand.
A:SP$ Repeat | Cost$ 3 B B | RepeatSubAbility$ DBDig | RepeatOptional$ True | StackDescription$ Reveal the top card of your library and put that card into your hand. You lose life equal to its converted mana cost. You may repeat this process any number of times. | SpellDescription$ Reveal the top card of your library and put that card into your hand. You lose life equal to its converted mana cost. You may repeat this process any number of times.
Oracle:Reveal the top card of your library and put that card into your hand. You lose life equal to its converted mana cost. You may repeat this process any number of times.
S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetPower$ X | SetToughness$ X | Description$ CARDNAME's power and toughness are each equal to the number of cards in the hand of the opponent with the most cards in hand.
SVar:ChooseCT:DB$ ChooseType | Type$ Creature | AILogic$ MostProminentInComputerDeck | SpellDescription$ As CARDNAME enters the battlefield, choose a creature type.
S:Mode$ Continuous | Affected$ Card.Self | AddType$ ChosenType | Description$ CARDNAME is the chosen type in addition to its other types.
S:Mode$ Continuous | Affected$ Creature.ChosenType+Other+YouCtrl | AddPower$ 1 | AddToughness$ 1 | Description$ Other creatures you control of the chosen type get +1/+1.
Oracle:As Adaptive Automaton enters the battlefield, choose a creature type.\nAdaptive Automaton is the chosen type in addition to its other types.\nOther creatures you control of the chosen type get +1/+1.
Oracle:Evolve (Whenever a creature enters the battlefield under your control, if that creature has greater power or toughness than this creature, put a +1/+1 counter on this creature.)
A:AB$ Effect | Cost$ T | Name$ Adarkar Valkyrie Effect | ValidTgts$ Creature.Other | TgtPrompt$ Select target creature other than Adarkar Valkyrie | Triggers$ TrigChangesZone | SVars$ TrigChangeZone | References$ TrigChangesZone,TrigChangeZone | RememberObjects$ Targeted | SpellDescription$ When target creature other than CARDNAME dies this turn, return that card to the battlefield under your control.
SVar:TrigChangesZone:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.IsRemembered | Execute$ TrigChangeZone | TriggerDescription$ If the targeted creature of Adarkar Valkyrie dies this turn, return it to the battlefield and you gain control of it.
Oracle:Flying, vigilance\n{T}: When target creature other than Adarkar Valkyrie dies this turn, return that card to the battlefield under your control.
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigClash | TriggerDescription$ When CARDNAME enters the battlefield, clash with an opponent. If you win, put a +1/+1 counter on CARDNAME.
Oracle:When Adder-Staff Boggart enters the battlefield, clash with an opponent. If you win, put a +1/+1 counter on Adder-Staff Boggart. (Each clashing player reveals the top card of his or her library, then puts that card on the top or bottom. A player wins if his or her card had a higher converted mana cost.)
A:SP$ ChooseColor | Cost$ 1 B | Defined$ You | AILogic$ MostProminentInHumanDeck | SubAbility$ DBRevealDiscard | SpellDescription$ Choose a color. Target player reveals his or her hand and you choose a card of that color from it. That player discards that card.
SVar:DBRevealDiscard:DB$ Discard | Mode$ RevealYouChoose | NumCards$ 1 | DiscardValid$ Card.ChosenColor | ValidTgts$ Player | TgtPrompt$ Select target player
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Land.YouCtrl | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigExile | TriggerDescription$ Landfall - Whenever a land enters the battlefield under your control, you may exile target nonland permanent other than CARDNAME.
Oracle:Flying\nLandfall - Whenever a land enters the battlefield under your control, you may exile target nonland permanent other than Admonition Angel.\nWhen Admonition Angel leaves the battlefield, return all cards exiled with it to the battlefield under their owners' control.
A:AB$ ChangeZone | Cost$ B R G T | Origin$ Graveyard | Destination$ Hand | TgtPrompt$ Select target creature card in your graveyard | ValidTgts$ Creature.YouCtrl | SpellDescription$ Return target creature card from your graveyard to your hand.
A:AB$ Pump | Cost$ W | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ First Strike | SpellDescription$ Target creature gains first strike until end of turn.
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Land.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Landfall - Whenever a land enters the battlefield under your control, equipped creature gets +2/+2 until end of turn.
Oracle:Landfall - Whenever a land enters the battlefield under your control, equipped creature gets +2/+2 until end of turn.\nEquip {1} ({1}: Attach to target creature you control. Equip only as a sorcery.)
A:SP$ Dig | Cost$ 2/U 2/U 2/U | DigNum$ 4 | ChangeNum$ 1 | SubAbility$ Dig2 | ConditionCheckSVar$ X | ConditionSVarCompare$ LEY | References$ X,Y | SpellDescription$ Look at the top five cards of your library. If you control more creatures than each other player, put two of those cards into your hand. Otherwise, put one of them into your hand. Then put the rest on the bottom of your library in any order.
A:SP$ Dig | Cost$ 2/U 2/U 2/U | DigNum$ 5 | ChangeNum$ 1 | SubAbility$ Dig2 | ConditionCheckSVar$ X | ConditionSVarCompare$ LEY | References$ X,Y | SpellDescription$ Look at the top five cards of your library. If you control more creatures than each other player, put two of those cards into your hand. Otherwise, put one of them into your hand. Then put the rest on the bottom of your library in any order.
Oracle:({2/U} can be paid with any two mana or with {U}. This card's converted mana cost is 6.)\nLook at the top five cards of your library. If you control more creatures than each other player, put two of those cards into your hand. Otherwise, put one of them into your hand. Then put the rest on the bottom of your library in any order.
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPump | TriggerDescription$ When CARDNAME enters the battlefield, another target permanent is indestructible for as long as you control CARDNAME. (Effects that say "destroy" don't destroy that permanent. An indestructible creature can't be destroyed by damage.)
Oracle:Flying\nWhen Aegis Angel enters the battlefield, another target permanent is indestructible for as long as you control Aegis Angel. (Effects that say "destroy" don't destroy that permanent. An indestructible creature can't be destroyed by damage.)
Oracle:Aeon Chronicler's power and toughness are each equal to the number of cards in your hand.\nSuspend X-{X}{3}{U}. X can't be 0. (Rather than cast this card from your hand, you may pay {X}{3}{U} and exile it with X time counters on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost. It has haste.)\nWhenever a time counter is removed from Aeon Chronicler while it's exiled, draw a card.
A:AB$ Dig | Cost$ 1 U U | DigNum$ 1 | ChangeNum$ All | ChangeValid$ Card | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBPump | SpellDescription$ Exile the top card of your library. Until end of turn, you may play that card. (Reveal the card as you exile it.)
SVar:DBPump:DB$ Pump | Defined$ Remembered | KW$ May be played | PumpZone$ Exile | SubAbility$ DBCleanup
A:SP$ Destroy | Cost$ 2 G | ValidTgts$ Creature.withFlying | TgtPrompt$ Select target creature with flying | SubAbility$ NaturalLife | SpellDescription$ Destroy target creature with flying. You gain 2 life
SVar:NaturalLife:DB$GainLife | Defined$ You | LifeAmount$ 2
A:AB$ DealDamage | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature.withFlying | TgtPrompt$ Select target creature with flying | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to its power to target creature with flying.
Oracle:Sacrifice Aerie Ouphes: Aerie Ouphes deals damage equal to its power to target creature with flying.\nPersist (When this creature dies, if it had no -1/-1 counters on it, return it to the battlefield under its owner's control with a -1/-1 counter on it.)
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.