Commit Graph

3158 Commits

Author SHA1 Message Date
guzhenjie1@gmail.com
381370d2dd Fixed following cards with "Whenever an opponent/you play a land" ability:
City of Traitors
Dirtcowl Wurm
Hidden Herd
Horn of Greed
Pangosaur
2011-02-20 10:23:41 +00:00
guzhenjie1@gmail.com
995f92c3fe Fixed Rancid Earth reported in forum:
auto=aslongas(*|mygraveyard) lord(creature) damage:1 >1
auto=aslongas(*|mygraveyard) damage:1 controller >1
auto=aslongas(*|mygraveyard) damage:1 opponent >1
 ==> 
auto=aslongas(*|mygraveyard) lord(creature) damage:1 >6
auto=aslongas(*|mygraveyard) damage:1 controller >6
auto=aslongas(*|mygraveyard) damage:1 opponent >6
2011-02-20 05:33:56 +00:00
omegablast2002@yahoo.com
d422f93134 doomgape correction 2011-02-19 21:18:20 +00:00
omegablast2002@yahoo.com
436534660e Marton Stromgald updated to combat triggers :) 2011-02-19 20:56:25 +00:00
wagic.the.homebrew@gmail.com
dc48b5472b Erwan
- fixing incorrect case for include of PlayRestrictions.h
2011-02-19 16:52:37 +00:00
techdragon.nguyen@gmail.com
788ae5e629 fixed a division by zero error when AI has equipment on field but no creatures to equip them to.
fixed formatting of getEfficiency code block
2011-02-19 15:39:48 +00:00
guzhenjie1@gmail.com
017e2cf00d Fixed Gelatinous Genesis:
text=Target creature gets +3/+3 until end of turn.
 ==> 
text=Put X X/X green Ooze creature tokens onto the battlefield.
2011-02-19 11:09:03 +00:00
guzhenjie1@gmail.com
538ff064fa Changed code moveto(graveyard) to sacrifice of following cards :
Balduvian Trading Post
Heart of Yavimaya
Kjeldoran Outpost
Lake of the Dead
2011-02-19 01:34:31 +00:00
guzhenjie1@gmail.com
3fdc148a9e Changed the ability's order of Hero of Bladehold, make it works better:
auto=@attacking(this):token(Soldier,Creature Soldier,1/1,white,battleready)*2
auto=@attacking(this):all(other creature[attacking]) 1/0 ueot
 ==> 
auto=@attacking(this):all(other creature[attacking]) 1/0 ueot
auto=@attacking(this):token(Soldier,Creature Soldier,1/1,white,battleready)*2
2011-02-18 15:56:41 +00:00
guzhenjie1@gmail.com
19e3dfddf6 Fixed Goblin Wardriver:
text=Battle cry (Whenever this creature attacks, each other attacking creature gets +1/+0 until end of turn.) -- Whenever Hero of Bladehold attacks, put two 1/1 white soldier creature tokens onto the battlefield tapped and attacking.
 ==> 
text=Battle cry (Whenever this creature attacks, each other attacking creature gets +1/+0 until end of turn.)
2011-02-18 15:28:45 +00:00
guzhenjie1@gmail.com
fda0428c41 Fixed following cards:
Balduvian Trading Post
Frostwielder
Heart of Yavimaya
Kjeldoran Outpost
Lake of the Dead
Tonic Peddler
2011-02-18 15:09:19 +00:00
omegablast2002@yahoo.com
c4422e3de1 updated to mimics to turnlimited triggers...theyre only supposed to trigger once per activation if they already triggered it should have no effect. 2011-02-18 13:44:36 +00:00
omegablast2002@yahoo.com
afb29274c3 lovisa is preffered in her erratta'ed to death form...
fixed arbor elf, he snuck in with one of my test changes recently.

note:lovisa actual card and the massive errattas she received makes the card text make absolutely no sense at all.
2011-02-18 13:04:14 +00:00
omegablast2002@yahoo.com
5ce7d77a3c added a comment to lovisa to states that its following the original version, before WoTC double erratta'ed the card. its a shame to have such a powerful card completely transformed to the point its could be considered a completely different card, yet they only ever printed 1 version of her...i loved her too much in the books to see her fall this low :) 2011-02-18 12:36:02 +00:00
omegablast2002@yahoo.com
a742c52852 corrected the following cards....
Lake of the Dead
trigon of mending
lord of shatterskull pass
gorilla shaman
kumano
nightsky mimic

this one is debatable...lovisa cold eyes
what i did here was code lovisa EXACTLY as written on her card...
the erratta that was given to this card becuase it was considered "overpowered" was redicoulous....absolutely redicoulous...by the card her code is exactly as follows...
this card is FAR to basic to say there is a mistake in my understanding of it.
subtype=human lord <---this is on the card...
she is NOT a barbarian...
exact wording on the card
Warriors, Berserkers, and Barbarians creatures get +2/+2 and have haste.
this is coded

auto=lord(warrior) 2/2 
auto=lord(berserker) 2/2 
auto=lord(barbarian) 2/2 
auto=lord(warrior) haste 
auto=lord(berserker) haste
auto=lord(barbarian) haste

this is the real lovisa....
errattas are fine, but its wotc that made the mistake of creating this card in the first place :) if you hit gatherer i think you will agree...
http://gatherer.wizards.com/Pages/Card/Details.aspx?multiverseid=113542
following the actual card on this one...ditching the erratta.
2011-02-18 12:23:17 +00:00
techdragon.nguyen@gmail.com
94c7c9c5d8 * fixed definition for Mephidross Vampire
* added Anowon, the Ruin Sage, the Ruin Sage as a borderline card since the card works as specified except that the player selects for the AI what card to sacrifice.
2011-02-18 06:17:52 +00:00
guzhenjie1@gmail.com
c1b861d44e Fixed Tropical Island and Hero of Oxid Ridge.
Fixed some typo in _cards.dat reported in forum:
M11:
primitive=Autumn's veil
 ==> 
primitive=Autumn's Veil

primitive=Lilia Vess
 ==> 
primitive=Liliana Vess

MBS:
primitive=Hero of Oxida Ridge
 ==> 
primitive=Hero of Oxid Ridge

primitive=Gore Vessel
 ==> 
primitive=Gore Vassal

PD2:
primitive=Ball Lighting
 ==> 
primitive=Ball Lightning
2011-02-17 11:06:15 +00:00
omegablast2002@yahoo.com
78a642d21c corrected wall of nets. 2011-02-17 00:28:20 +00:00
solo81@web.de
55fe7625f3 Added 4 cards:
Iona, Shield of Emeria
Hellfire Mongrel
Living Tsunami
Quest for Ancient Secrets
2011-02-16 21:46:22 +00:00
omegablast2002@yahoo.com
db94db1a9f Spiritual Asylum was coded incorrectly 2011-02-16 20:37:03 +00:00
wagic.the.homebrew@gmail.com
db0c55b4dd Erwan
- Fixed an issue with maxCast targeting opponent
2011-02-16 14:35:49 +00:00
solo81@web.de
88218a9822 Added Storm Cauldron and Rites of Flourishing.
auto=maxplay(land)+1 opponent   --- works!

[card]
name=Rites of Flourishing
auto=maxplay(land)+1 opponent
auto=maxplay(land)+1
auto=@each my draw:draw:1 controller
auto=@each opponent draw:draw:1 opponent
text=At the beginning of each player's draw step, that player draws an additional card. -- Each player may play an additional land on each of his or her turns.
mana={2}{G}
type=Enchantment
[/card]
2011-02-16 12:13:20 +00:00
wagic.the.homebrew@gmail.com
8dd6856453 Erwan
- fixed issue 595 (MaxCast not working). Root cause was the stupidest typo ever in the code (maxCost instead of maxCast...)
- fixed an issue with Storm mentioned by zethfox (was counting only spells played by current player)
- Moved "max lands per turn" rule outside of the code (yay!) Please be sure to update your Rules folder!
2011-02-15 14:17:34 +00:00
guzhenjie1@gmail.com
fa18c60a44 Fixed Bounteous Kirin:
auto=@movedTo(*[arcane;spirit;manacost=11]|mystack):may life:12 controller
auto=@movedTo(*[arcane;spirit;manacost=12]|mystack):may life:13 controller
 ==> 
auto=@movedTo(*[arcane;spirit;manacost=11]|mystack):may life:11 controller
auto=@movedTo(*[arcane;spirit;manacost=12]|mystack):may life:12 controller
2011-02-15 13:56:56 +00:00
omegablast2002@yahoo.com
b978baa9c8 added Brace For Impact and Telekinesis 2011-02-15 12:18:20 +00:00
guzhenjie1@gmail.com
8e24e86b0f Fixed Avenger of Zendikar:
auto=@movedTo(land|myBattlefield):may counter(1/1) all(plant)
 ==> 
auto=@movedTo(land|myBattlefield):may counter(1/1) all(plant|myBattlefield)
2011-02-15 12:12:10 +00:00
techdragon.nguyen@gmail.com
2cd72cc4ca we should access the data required within a given context. Using DeckStats in this way works
but only by chance that the previous step set the current deck file.  Used victory percentage
from the MetaData object rather than forcing what has already been computed.

TODO:  getVictoryPercentage() needs to represent Overall VictoryPercentage for all decks, not just
player decks.  AI Decks use getVictoryPercentage() to represent the VictoryPercentage against a
specific deck.  There should be an additional method that says getVictoryPercentageVsDeck( deckObject )
2011-02-14 17:44:35 +00:00
techdragon.nguyen@gmail.com
16f7d2d675 added conditional to avoid having to ping the stats map all the time. The data
is already cached, but there's no need to spend a function call to check the hashmap
if we have a bool for that reason.
2011-02-14 17:38:57 +00:00
techdragon.nguyen@gmail.com
73b2d5ded8 removed redundant code for card loading. getCardByName already loads by Id and caches the result
duplicating that code in MTGDeck is redundant.
2011-02-14 17:36:19 +00:00
wagic.the.homebrew@gmail.com
5b365e53f0 Erwan
- submit a fix for TestSuiteAI, I don't understand why it wasn't submitted with my other changes yesterday. This fixes a bug in the test suite (One storm test would fail without this)
- minor refactor to AI code
2011-02-14 13:29:27 +00:00
guzhenjie1@gmail.com
b3468782f1 Changed Arcane Laboratory and Rule of Law based on r3125.
oneboth => auto=maxCast(*)1 auto=maxCast(*)1 opponent

Changed name of Oriss, Samite Guardian in FUT _card.dat:
primitive=Oriss, Samite Guardian
 ==> 
primitive=Oriss Samite Guardian
2011-02-14 11:32:18 +00:00
techdragon.nguyen@gmail.com
f4d1154cd6 reverted latest change 2011-02-14 09:35:43 +00:00
techdragon.nguyen@gmail.com
d9efb408e5 * optimized card loading. There was some redundant code that wasn't necessary.
* getCardByName seemed to have a initialization error if you tried to use it before the entire game loaded.  The cache would
throw an exception if you tried to use find and it was empty.  I put a guard around it to avoid this issue.

* refactored Zeth's "toggledifficuly" feature to be stored in meta data.  http://code.google.com/p/wagic/source/detail?r=3106
 -- This is slightly modified as it forces a 1 for 1 swap of cards that are specified.
    from the example given this is how it seemed to be used anyways.
 -- since all the information is stored in the meta data, there's no need to alter the deck's
    definition.
2011-02-14 08:14:35 +00:00
techdragon.nguyen@gmail.com
1b5002726c altered condition to srcLenth -1 and not "srcLength - 2" 2011-02-14 06:54:28 +00:00
techdragon.nguyen@gmail.com
7047b1ccfc fixed typo 2011-02-14 06:52:11 +00:00
techdragon.nguyen@gmail.com
ee71b6bf0e Added a guard to ensure array access is within bounds of filter.
For some reason, the VS2008 compiler allows this illegal access and VS2010 does not.  In all actuality it should never be permitted.

Please review the thread posted on the SVN thread for details as to why this needs a fix.
http://code.google.com/p/wagic/issues/detail?id=593&sort=-id


Issue: 593
2011-02-14 06:07:04 +00:00
omegablast2002@yahoo.com
072a250dc0 reverted it completely now in hopes that this is whats stalling ai...for some strange reason im noticing that ai is tapping an extra mana every time it tries to play something...
exsample it wants to play a {2}{b}{b} ...so it taps 5 mana instead of the 4 it would have tapped before....
2011-02-14 01:45:14 +00:00
omegablast2002@yahoo.com
ecd2217139 reordered these varibles pspsdk doesnt like it when things are not int'ed in order. 2011-02-14 01:18:41 +00:00
omegablast2002@yahoo.com
3826355b6b reverting a peice of a change i did a couple days ago...
the way getPotentialMana and the payment of cost needs a SERIOUS revamp, i would almost say that these function only work because of bugs.....
2011-02-14 00:28:44 +00:00
omegablast2002@yahoo.com
e92e96a375 Fallen Askari missing cantblock.... 2011-02-13 15:37:51 +00:00
omegablast2002@yahoo.com
935fe12672 pentarch paladin was missing cost for abilities...thanks kf1 2011-02-13 14:35:54 +00:00
techdragon.nguyen@gmail.com
67026849a6 sealed possible memory leak when WCFilterGROUP is created. 2011-02-13 13:28:25 +00:00
techdragon.nguyen@gmail.com
5be429c48f combined nbzone increment and zone assignment into one statement. 2011-02-13 13:25:41 +00:00
wagic.the.homebrew@gmail.com
6b89899d1b Erwan
- deprecated the following keywords (see list below for new usage)
-- cantcreaturecast => auto=maxCast(creature)0
-- cantspellcast => auto=maxCast(*)0
-- onlyonecast => auto=maxCast(*)1 
-- bothcantcast => auto=maxCast(*)0 auto=maxCast(*)0 opponent
-- bothnocreature => auto=maxCast(creature)0 auto=maxCast(creature)0 opponent
-- oneboth => auto=maxCast(*)1 auto=maxCast(*)1 opponent

Strangely enough, I couldn't find most of these keywords in mtg.txt?

I also removed variables such as "spellCastedThisTurn" and stuff like that... now if you want to know how many spells were cast in one turn by a given player, use player->game->stack->seenThisTurn("*").
seenThisTurn can take a string representing a TargetChooser, or better, a TargetChooser.

I can't guarantee I didn't break anything, but the test suite passes and the AI seems to run ok
2011-02-13 11:23:51 +00:00
wagic.the.homebrew@gmail.com
8eac9c587e Erwan
- added maxCast and maxPlay abilities, this deprecates the following abilities: nospells,nocreatures,onlyonespell,land
I usually don't like to deprecate abilities, but the existing ones, despite having easy to remember names, were really not flexible enough.

If you want to use these old keywords, instead use:
-- nospells  =>  maxCast(*)0
-- onlyOneSpell => maxCast(*)1
--nocreatures => maxCast(creature)0
--land:1 => maxplay(land)+1

note maxPlay and maxCast. They follow similar rules, but maxPlay monitors the number of cards that are going on the Battlefield, while maxCast monitors the stack. In most cases, maxCast should be the one to use, but lands are a special case because they go directly to play.

I unfortunately cannot guarantee I didn't break anything, especially in the AI, but the test suite passes ,and I added a few additional tests yesterday and today, to feel more confident about the change.

next step is removing the creatures keywords that do the same kind of thing (cantcast, etc...) and replace them with maxCast
2011-02-13 08:01:13 +00:00
guzhenjie1@gmail.com
2165a38d3b Fixed following cards:
1. Fire Dragon(It has same problem as unchanged Honden Of Infinite Rage, using new code "type:" to fix it.)
auto=foreach(mountain|myBattlefield) damage:1 target(creature) oneshot
 ==> 
auto=damage:type:mountain target(creature)

2. Burden of Greed
auto=foreach(artifact[tapped]|opponentBattlefield)damage:1
 ==> 
auto=foreach(artifact[tapped]|opponentBattlefield) life:-1 opponent
2011-02-13 05:57:36 +00:00
omegablast2002@yahoo.com
b21ca5d91c had to change it, psp compile didnt like it. source->XX 2011-02-13 04:46:57 +00:00
techdragon.nguyen@gmail.com
0686979750 updating vs2010 solution with new PlayerRestriction class 2011-02-12 23:25:57 +00:00
omegablast2002@yahoo.com
27f941e939 updated whetwheel 2011-02-12 20:34:50 +00:00
omegablast2002@yahoo.com
e36cf18d26 added support for {x}{x}: word variable returns for activated target abilities...sometimes im not told when things break or dont work completely, and i find out later myself. :) 2011-02-12 20:29:42 +00:00