Commit Graph

416 Commits

Author SHA1 Message Date
Psyyringe 49536fce44 Psyringe - introducing new ability: cantBeBlockedBy(T). T can be any targez specification, like "wall", "creature[flying]", etc. See added cards for examples. Note: This ability currently has the same restrictions as "protection from(T)", i.e. it can't be used in activated abilities or instants/sorceries. It *can* be used for creatures,auras, and other continuous abilities (e.g. an enchantment which grants "unblockable by walls" to all rats should be possible, although I didn't test that). There are 47 cards which use the phrase "can't be blocked by", so we should be able to get another fair mount of cards out of that.
Notes to programmers:
1. This feature uses an awful lot of copy-pasta, using "protetcion from()" as a base. While I'm learning the architecture, it's easier for me to have a dedicated single-purpose piece of code to work with, than trying to create multi-purpose code. I'm aware that this isn't a very elegant approach though, and I hope to be able to refactor additions like this into multi-purpose code once I have a better understanding of the architecture as a whole.

2. Please check the questions I'll add in my next code comments, specifically about AI integration and activated abilities / instants / sorceries.

3. I did have a crash (with the debugger complaining about stack corruption around the cd variable) during testing. I wasn't able to reproduce it though. I did have to clean the solution in-between when I updated to the primitives system, so perhaps there was this cleaning solved whatever corruption was in my files. I'm mentioning the issue in case someone has an idea on where my code might be risky (I'm still probne to making beginners mistakes).
2009-12-28 18:19:17 +00:00
wagic.the.homebrew@gmail.com 05a72de5bc Erwan
- Card Primitives system. Check Royal Assassin in RV, 10E, M10
- Please review, is sets/primitives a good directory? Should we rename MTGCard into "CardPrint"? 
- Unfortunately for now it is not possible to "override" a Primitive. A card that links to a primitive but also defines new "values" will create its own data and ignore the data in the "linked" primitive for the time being. I hope to solve that at some point...
2009-12-27 12:14:36 +00:00
Psyyringe 5c3b3f1d03 Psyringe - added quantifiable target restrictions. Whenever you use square brackets [] to specify attributes of a target, you can use the operators <=, >= and = to specify quantities for power, toughness, and/or converted manacost. See added cards for examples.
Limitations:
- Operators for "greater than", "less than", "unequal" have not been implemented, but if a card actually needs them, you can use a preceding minus sign to negate a comparison. Example: -power=3 means "power not equal to 3", -toughness<=3 means "toughness>3".
- You can't use spaces when specifying such restrictions. Write "power<=3" instead of "power <= 3"
- You now need to use a space before the "<" and ">" commands that count the matches for lord(), foreach(), all() and aslongas(). So far we always did use spaces in front of them without actually needing to, now we need to.
- manacost restrictions don't take "X" costs into account. Example: Mistmeadow Skulkin (FUT) has protection from manacost>=3. Blaze has a converted manacost of 1, but when you cast it with an X of 2, then it actually has a converted manacost of 3 while on the stack, and Mistmeadow Skulkin would be protected from it, but currently it isn't.

Please review the code, I'll add a few remarks/questions of my own.
2009-12-26 01:50:33 +00:00
wagic.the.homebrew@gmail.com 54142cc816 Erwan
- fix a segfault with Shivan Gorge
- Fix a memory leak in the AI
- Commit a test for issue 265
2009-12-22 13:11:08 +00:00
wagic.the.homebrew@gmail.com cc46be7fbe Erwan
-close issue 171 (remove Soul net from the game)
2009-12-13 10:21:33 +00:00
wagic.the.homebrew@gmail.com ee4e9f2262 Erwan
-fix issue 161 (brass man can untap outside of upkeep). Use "myUpkeepOnly" keyword. Other keywords such as "myDrawOnly" of course work. Haven't implemented "opponent" yet, is it needed ?
2009-12-13 10:18:37 +00:00
wagic.the.homebrew@gmail.com f9c810058d Erwan
-closing issue 165 (glasses of urza). Removed the card from the game, won't fix.
2009-12-13 09:48:29 +00:00
wagic.the.homebrew@gmail.com 927382ac8b Erwan
-Remove disrupting scepter from the game, closing issue 163
2009-12-13 09:45:10 +00:00
wagic.the.homebrew@gmail.com a7493154fa Erwan
- fix issue 168 (kudzu)
- Fix issue 162 (copy VS shroud). This fix introduces a new keyword: NotATarget() instead of Target(). (Which was the best way for me to keep some kind of backward compatibility/ not alter the code too much / fix the bug)
2009-12-13 07:03:28 +00:00
wagic.the.homebrew@gmail.com 999256e6ab Erwan
- fixed divergent growth (issue 243). Unfortunately the underlying issue is quite complex, and Wagic doesn't handle it very well. Basically, all "until end of turn" effects run the risk of being partially deleted before the end of the turn, leading to segfaults or memory leaks. This is because some abilities' "clone" method doesn't actually clone them entirely... The fix for divergent growth is a hack that works only for lords+mana producer combination, but I need a more "generic fix" in the long run...
2009-12-13 05:59:17 +00:00
wagic.the.homebrew@gmail.com 7cc072bf77 Erwan
- fix a memory leak with "Prevent All combat damages" ability
- Fix issue 242 (Equip can be used outside of the main phases)
- introducing "attach" keyword. Same as equip but can be used anytime. Untested
- introducing "asSorcery" keyword. Can be used the same way as "myTurnOnly" on activated abilities to restrict their usage. Untested. Other similar keywords will follow, please let me know which ones would be useful
2009-12-13 03:28:50 +00:00
wagic.the.homebrew@gmail.com 512f649147 Erwan
- Adding cycling. Check Akroma's vengeance in ONS for an example. Note that this uses autohand instead of auto, this is important! You can also use autograveyard. 
- All "auto" activated abilities should work with autohand, so this is not only for cycling, but could be used for other abilities as well. For example autohand={3}:cycling can also be written autohand={3}{S}:Draw:1
2009-12-12 11:09:13 +00:00
wagic.the.homebrew@gmail.com ca35754273 Erwan
- Adding equipments. They work like auras, except you have to add an "auto={cost}:equip" line. See Behemoth sledge in ARB for an example. Please test a lot before committing, thanks :)
2009-12-10 13:44:05 +00:00
wagic.laurent 226c132946 Laurent - Code Clean-Up removed some Hardcode replace with softcode, mostly RV. Tested most of them (except exile from ALL but that should be the same as Swords to plowshares)...
Did not manage to remove/softcode The Rack.
2009-12-07 16:16:01 +00:00
wagic.the.homebrew@gmail.com 0d2c6cf3e5 Erwan
- Adding external rules mechanism. It is very crude for the moment, but I hope it will grow. Have a look at Rules/mtg.txt for basic usage
2009-12-06 04:47:29 +00:00
Psyyringe 6da34f642f Psyringe - fixed issue 230. Also softcoded Braingeyser (RV) and Stroke of Genius (USG) and removed interfering obsolete hardcode for Braingeyser. Please review, this is my first attempt of moving hardcode to softcode. 2009-12-05 08:31:09 +00:00
wagic.the.homebrew@gmail.com dfbdd1e4e5 Erwan
-added WParsedInt (X, p, t, manacost) for "Draw" effects. See prosperity
- Fixed denizen of the deep (P02), it had broken the test suite, sorry for that!
2009-12-01 12:43:18 +00:00
wagic.the.homebrew@gmail.com ac50198962 Erwan
-random cleanup
-fix issue 180 (for AI issues) by exchanging the two lines
2009-11-21 14:01:02 +00:00
wagic.the.homebrew@gmail.com 734c7e6496 Erwan
- Actually fix issue 142
2009-11-21 10:06:32 +00:00
wagic.the.homebrew@gmail.com f924546dcc Erwan
- Code cleanup
- fix issue 142 . This will lead to other issues for some cards. These issues can be fixed by using targetcontroller/controller...etc
- Added a few cards
2009-11-21 09:40:14 +00:00
wagic.the.homebrew@gmail.com da9a82cff4 Erwan
- removed some unused code. Please review!
- Added protection from() auto keyword. It is still possible to use protection from [color] in abilities, but when it is not possible, please use protection from([target]) in auto=
2009-11-21 07:26:26 +00:00
d32.wagic 46e21fb94d Daddy32 - Fix for issue 196. 2009-11-18 20:37:42 +00:00
wagic.the.homebrew@gmail.com 1d55211245 Erwan
- Added ">" and "<" for foreach and aslongas. Can be used to code threshold cards. See black vise (RV) and korsan beast (ODY)
2009-11-18 14:37:28 +00:00
wagic.the.homebrew@gmail.com 7f9d22e0aa Erwan
-fixed a memory leak
- Added P02 and PTK 
- New way to create tokens in the parser, much more flexible, see the Hive in RV. Tokens can now be written as other cards, with a rarity of "T". I suggest their id to be the negative value of the card that generates them when possible. Naming convention for images is the same as before: a negative id such as -1138 will need a [id]t.jpg image (1138t.jpg). Positive ids work as "normal" pictures
2009-11-18 13:14:08 +00:00
wagic.the.homebrew@gmail.com 04a950c911 Erwan
- fix issue 172 (crystal rod)
2009-11-15 10:37:33 +00:00
wagic.the.homebrew@gmail.com e2d282637c Erwan
- Activated abilities can now use the extra "myTurnOnly" keyword
- {0} Activated abilities should now work
- Fixed issue 166 (instill energy)
2009-11-14 14:17:01 +00:00
wagic.the.homebrew@gmail.com 9ca552093e Erwan
- Added "PreventAllCombatDamage" [from(...)] [to(...)] keyword. Please test it on a few cards before we "mass" use it. As a side effect, fixed issue 155 (ebony horse target).
2009-11-14 11:35:29 +00:00
wagic.the.homebrew@gmail.com 7b2ac9e610 Erwan
- added "targetplayer" functionality to ManaProducer objects. As a collateral benefit, this fixes issue 191 (seismic spike)
2009-11-14 07:07:58 +00:00
wagic.the.homebrew@gmail.com ce0051e545 Erwan
- fix issue 154 (dragon whelp)
- Fix issue 157 (erg raiders)
- fix issue 169 (living artifact)
- fix issue 159 (stonebrow) although I believe this card doesn't work correctly...
2009-11-12 13:57:22 +00:00
wagic.the.homebrew@gmail.com e059890446 Erwan
-reduced SFX Quality. This seems to fix the Bug with samples getting silent on the PSP (issue 112), and improves loading times. If you think this is unacceptable, let's discuss it
- AI now should play fetchlands' ability, although still not "efficiently"
- Fix a bug where the game would crash if a card has a valid alias to a hardcoded card that is in no _cards.dat (starwars mod cards aliasing a MTG card)
2009-11-12 11:39:47 +00:00
Psyyringe 500c1fc1a2 Psyringe - major update/rewrite for the German translation. Added a lot of missing strings, removed some obsolete ones, corrected some spelling / grammar / translation mistakes, addressed the player consistently with the informal "Du" (previously there was a mix of "Du" and the more formal "Sie"), added the cards from M10, PLC, and ZEN along with their German names, repaired a wagonload of lowercase umlauts in the existing card names (please use case sensitive fuctions when replacing umlauts), and provided translations for all 251 types, subtypes, and supertypes in the game. Also, totally restructured the file so that it now follows the structire of the in-game menus. I think the file is in good shape now and might be useful as a base for other translation efforts. I can't guarantee that I caught every single string, but I'm pretty sure that this is now the most complete translation available.
Please note that I don't plan to update this file for future Wagic versions, so if anybody wants to take over, please do. :)

Some files were updated in the process:

- CardGui.cpp - exposed the card rarity info on the alternate render cards to the translation engine. Also switched the color of said info to white on green and blue cards, imho they are much easier to read now.

- GameStateDeckViewer.cpp - exposed the term "Collection" (shown under the scrollbar) to the translation engine.

- GuiPhaseBar.cpp - exposed the strings denoting "your turn", "opponent's turn", "you play", "opponent plays", to the translation engine.

- SimplePad.cpp - exposed the special keys ("Spacebar", "Confirm" etc.) to the translation engine. Had to increase the keypad width to make room for "Abbrechen" (Cancel). I couldn't translate it differently because there's also a *spell* called cancel, and to have a different translation in SimplePad, I would have had to change the official German name of the Cancel spell, which wasn't an option.

- MTGAbility.cpp - exposed the words from which the text of mana-producing abilities is constructed to the translation engine. Please review this one and suggest a better solution - the one I chose is somewhat awkward. The translation works, but when the whole translated sentence is constructed and gets returned, the calling procedure tries to translate it again (all other ability descriptions work this way, translation takes place *after* the string has been returned). However, for mana producing abilities this doesn't work, since the costructed string can take an infinite number of diffeent forms, depending on the mana produced, and we can't translate that. Hence I chose to translate the individual words during construction, with the described side effect that the engine now tries to translate them again later in the process (and the sentence ends up in missing.txt).

- Also, cheat mode menu items now aren't denoted by the ugly "(cheat)" appended to them, instead they are enclosed by asterisks. Uses less space.
2009-11-03 22:25:16 +00:00
wagic.the.homebrew@gmail.com d2bcb90799 Erwan
-fix for issue 120
2009-11-03 10:12:01 +00:00
wagic.the.homebrew@gmail.com befb3f246b Erwan
- fix issue 149
2009-11-03 07:40:14 +00:00
wagic.the.homebrew@gmail.com 18293ba07c Erwan
-fix Issue 150 (hypnotic specter)
2009-11-01 12:15:37 +00:00
wagic.the.homebrew@gmail.com e762a5f983 Erwan
- revert r1187
- fix a bug with "@damaged" (see slith bloodletter test)
2009-10-26 13:31:30 +00:00
wagic.laurent 772ddd9ced Laurent - fixed a bug with @damaged.
Without this quick and dirty fix if you have 2 thieving magpie in play you get twice the bonus if only 1 deals damage (also you draw 2 cards instead of 1).
2009-10-26 13:20:08 +00:00
wagic.the.homebrew@gmail.com dd7c307c7a Erwan
-Fix issue 107 as well as another issue with doesnotuntap mentioned by leungcl
-Changed wording for Paralyzing Graps (to match oracle), please verify
2009-10-25 14:01:25 +00:00
wagic.the.homebrew@gmail.com 6f1772e938 Erwan
-fix issue mentioned at http://wololo.net/forum/viewtopic.php?f=4&t=371&p=6296#p6296 . I touched a very sensitive area of the code so please let me know if something goes wrong with this revision with spells or abilities that involve targets and/or sacrifice
2009-10-24 14:15:08 +00:00
wagic.the.homebrew@gmail.com f0124ce53a Erwan
- fix issue 125 (Ondu Cleric)
2009-10-22 13:57:49 +00:00
wagic.the.homebrew@gmail.com 771b6d75be Erwan
- fix for Dromad Purebred and other @damaged effects
2009-10-20 11:22:12 +00:00
wagic.the.homebrew@gmail.com 273b0672e4 Erwan
- various optimization fixes
2009-10-19 11:37:47 +00:00
wagic.laurent adba482340 -Laurent Added @damaged, cards to 10E and LEG, small correction to ALA, ARB, CHK, EVE and ZEN
- Added @damaged works fine (tested with thieving magpie), please test your additions if you plan to add some cards with this keyword and report if buggy. As the other trigger, you cannot have a target unless there is a may ability.
- Added 2 cards to 10E - Reminisce and Thieving Magpie both tested and working.
- Added 2 cards to LEG - Jovial Evil and Spiritual Sanctuary (not tested yet) but should work.
2009-10-15 09:30:09 +00:00
wagic.laurent 009239d645 Laurent - Added Shuffle still require testing.
Wanted to add a bunch of cards that use "shuffle" as a keyword.. after the remedy from Herr Doktor in R1050 and the removal of oblation from ONS  it gave me the idea that this could be implemented... I wanted to add some cards like darksteel collosus (M10) with something like auto=@movedto(this|graveyard) from(battlefield):moveto(mylibrary) && shuffle well the above does not work ...

Anyway... i'm not sure the shuffle keyword is working... I don't really have a way to test it. Also if some willing soul could have a quick look would be great..

some cards could be added like Boggart Forager (LRW), Oblation (ONS)...
2009-10-05 17:16:56 +00:00
leungclj 5ca1292344 J0N4TH4N - (RV) update, removed a few hardcoded cards
-minor update on other sets
2009-10-04 17:13:44 +00:00
leungclj f882fd437b J0N4TH4N - removed hard code for Dreamborn Muse 2009-10-04 01:39:23 +00:00
leungclj b6e97c1f17 J0N4TH4N - please review the removal of Dehydration in MTGAbility.cpp 2009-10-03 15:36:53 +00:00
wagic.the.homebrew@gmail.com 78da055dd2 Erwan
-Adding "becomes(types,p/t,color abilities)" to the parser. Please do not use yet as it requires more testing
2009-09-30 12:28:50 +00:00
wagic.the.homebrew@gmail.com d9464f53c2 Erwan
-fix a crash when the AI tries to use a spell with X in the manacost
2009-09-28 14:12:50 +00:00
wagic.the.homebrew@gmail.com f7331b7066 Erwan
- Fix one card in ZEN
- Fix AI and counters (issue 75, see tests/manual/torture_ai.txt)
- Fix counters target
2009-09-28 13:34:49 +00:00
wagic.the.homebrew@gmail.com 9704ee4a24 Erwan
- opponentshroud small bug fix
- added "kicker=" line and "kicker" auto keyword. See Vines of Vastwood (ZEN) for an example. WARNING: kicker= line has to be AFTER "mana=" line
- daily build
2009-09-27 09:53:29 +00:00