Progress towards v0.7.1c

In case you're wondering what I'm working on: http://deviance.duckish.net/wiki/index/ ... xtVersion/
I'll try to keep this page updated as I work. Also, if anybody wants to see a card in v0.7.1c, you can either ask for it, or if you can write code, add it yourself. If you don't already have an account (which would be most people) you can ask me for an invitation. With the new parser, simple permanent cards have a tendency to write themselves.Key
+ Feature to be added
- Feature to be removed
? Feature changed
! Bufix
Progress towards v0.7.1c
Completed
+ Added Mirrodin Besieged creature types
! Fixed a typo in the subtype symbol file
+ Added placeholder functions for Mirrodin Besieged keywords
+ Created a new MemoryVariable for tracking what entered a given zone this turn (with one instance, battlefield_tracker)
+ Added a .concede() method to Player classes
! Attempted bugfix for an error thrown if you started the game too quickly.
+ Allowed MultipleTargets to select 0 targets (can now specify a minimum number of targets when up_to=True by using the "min" argument)
! Fixed Player.choose_creature_type() being able to return subtypes that weren't creature types (now uses all_creatures to filter them out)
! Fixed card execution bug on non-Windows machines (thank you, Incantus!)
+ Added InstantLimit for cards like Lion's Eye Diamond
! Fixed a potential bug (trying to read a folder (not the contents of the folder, the folder itself) for card data) in CardDatabase.py
! Fixed a real bug (not clearing the current card text if encountering a duplicate of a card, which could lead to odd things) in CardDatabase.py
! Finally figured out and fixed a longstanding bug with isToken and isNonToken.
+ Added every card present in the decks in the /decks/ folder to the card database (except for ones that require cost-reduction)
! Fixed bugs with Level up and Annihilator (Level up helper abilities were treating the passed ability improperly, and Annihilator was named "annihilatior")
! Fixed CyclingCost (wasn't sending a timestep; what it was doing instead caused a crash)
! Fixed a possible bug in DissentionAbility.py with graft (it was either a bug or counter to preferred formatting)
! Fixed a bug (typo, really, but would cause a crash) in RavnicaAbility.py with transmute
+ Added a cast_from_graveyard_tracker for River Kelpie
+ Added the ability to read card files in subfiles of the /data/cards/ folder (subfolders also take priority over base folders, useful for testing purposes)
? Changed basic land abilities to put curly braces around symbols (doesn't actually change anything, but makes it work with the new rendering system)
! planeswalker_abilities would crash if you tried to add to it (due to a logic error)
! Fixed a bug that caused a crash if a player had to pick from more than one replacement effect applying to a single card
+ Updated subtype lists for Innistrad.
+ Added Mirrodin Besieged keywords
+ Added M12's hexproof.
+ Added an override for creatures attacking specific players/planeswalkers, so that cards like Teferi's Moat can work.
? Made Player.force_sacrifice() pass the result of .sacrifice() through.
? Minor change to .cda_power_toughness() so that passing None results in no CDA-handling for that attribute, rather than a CDA setting None (shouldn't affect any existing cards).
+ Made card_environment.py import random (which, really, it should have done a long time ago).
+ Re-added the old token image code from the SVN version, minus retrieving images from magiccards.info (since they no longer have perfectly-sized thumbnails). This allows different images for a 1/1 Green Elf Warrior token and a 1/1 White/Green Elf Warrior token, and I have included all known token images up to... whatever set was newest at the time... in the /data/tokenimg/ folder.
! Fixed a bug with stacked_abilities.remove_by_tag() that caused it to crash if the first ability found didn't have a tag.
! Fixed longstanding Planeswalker bug that allowed loyalty abilities to be activated limitlessly.
+ Added Totem Armor.
? Changed doesntUntapAbility to this_card_doesnt_untap in line with this_card_is_indestructible (and others).
! Fixed typo with ExileFromLibraryCost (there isn't an "exhile" zone, right?).
+ Added GraveyardFromLibraryCost.
! Fixed CombatTrackingVariable (it was only clearing local combat variables at end of turn, instead of at the beginning of combat).
+ Added undying.
+ Added miracle and soulbond to UnimplementedAbility.py
! Fixed typo with Player.discard_at_random() that made it always discard 3 cards.
+ Added "random" argument to DiscardCost.
! Fixed CardRole.attach() not checking to see if it was already attached to the target (rule 701.3b).
+ Added Karn, Tamiyo, and Tibalt as planeswalker types.
Incomplete
+ Add the ability to concede (can only be done when you have priority and needs testing)
Not in this version
+ Add the capability for cost-reduction abilities
+ Add cost-reduction keywords
+ Phyrexian Mana
Unlikely to be added before v0.8
+ Add poison counters
+ Add variable hand size
+ Add mana with restrictions
+ Add colored mana restrictions (Consume Spirit for example)
+ Runtime card rendering (although this is starting to look really cool!)