Commit Graph

559 Commits

Author SHA1 Message Date
Anthony Calosa 7810c65862 added Raid support
thisturn(creature[attacking]|mybattlefield)~morethan~0 only triggers
once... use raid keyword... if raid then blah...
2015-10-20 11:09:57 +08:00
Anthony Calosa f90775153c Revert "TrcardDrawn, TrDamaged, TrLifeGained"
This reverts commit c7535e38dc.
2015-10-19 10:19:14 +08:00
Anthony Calosa c7535e38dc TrcardDrawn, TrDamaged, TrLifeGained
Added trigger restriction for "@trigger(player)
restriction{opponenttrigger/controllertrigger}"

Restriction for:
@drawn
@damaged(combat and noncombat)
@lifed/lifeloss

Why?

When using @drawn trigger like Underworld Dreams
auto=@drawn(opponent):life:-1 opponent

If you take control of Underworld Dreams from an opponent, the
targetchooser for "opponent" is not updated and you are still the
opponent of Underworld Dreams even you take control of it(It is right if
you are the chosen opponent from cards like Black Vise, The Rack, etc...
The chosen opponent never changes. But cards that don't define a chosen
player an "opponent" like Underworld Dreams when an exchanged control
happens, the opponent of the card is the opponent of the one who
controls the card). :P

The new correct code for Underworld Dreams:
auto=@drawn(player) restriction{opponenttrigger}:life:-1 opponent
2015-10-18 22:38:41 +08:00
Anthony Calosa ec4a9ead74 revised produceextra, added producecolor
producecolor:color look for the mana color when engaged
produceextra:selectmana acts like tappedformana(mytgt) so the ability
must be on the source
produceextra:{color}  ability on the otherhand, the ability must be on
the target
2015-10-03 07:36:52 +08:00
Anthony Calosa ddee2c08e2 added stack check, modified life check
if activating ability, playing a land or casting sorcery spell at
sorcery level(timing restriction), if the stack is not empty, don't
allow it. Modified the life state check, if any of the players would
lose the game, allow the gamestateeffects to check... added
reduceto:value for ali from cairo...
2015-10-01 22:25:26 +08:00
Anthony Calosa e1c02c8bf5 produceextra, lki(last known information) for power, toughness and basic abilities 2015-09-30 23:45:54 +08:00
Anthony Calosa 021343ca02 fix for recover cards, preliminary support for madness 2015-09-28 21:27:27 +08:00
Anthony Calosa 2869460a7f Fixed some card primitives, added support for "other" parsing power, toughness and converted cost, added Ingest
Ingest -> topcard of library to exile
Usage ingest:value
ingest:20 will send the top 20 cards of library to exile
2015-09-25 17:39:35 +08:00
Anthony Calosa 2223cd4f30 modified castcard to support put into play
for reanimated aura
2015-09-23 21:36:05 +08:00
Anthony Calosa 7db5345f9a attempt to fix "notatarget"
notatarget must be allowed to target untargettable cards.
2015-09-23 12:14:47 +08:00
Anthony Calosa 6aab17d0b3 CDA complete
This fixes the bug I introduced lst time. The damage was not taking into
account, but this time the damage reflects...
TODO/TOFOLLOW: update test and update all cards that uses CDA :)
2015-09-16 06:42:02 +08:00
Anthony Calosa 72aaa18a35 CDA
CDA works by using "cdaactive" keyword on PT changes. Instead of
granting bonus, we modify the orig power and toughness since they are
dynamic PT. cdaactive are for cards like maro, tarmogoyf, etc. To
Follow/To Do: Additional Tests and other bug fix
2015-09-15 06:35:07 +08:00
Anthony Calosa 11d68c0e27 Separated PT Modifiers, Fixed Changeling, Modified Counter as a cost
CDA Todo
2015-09-12 12:03:52 +08:00
Anthony Calosa ef707e6d5d added basic offering support
usage tap lands to produce mana then sacrifice an offering... example
you have Guttersnipe in play, it has a mana cost of {2}{R}, and you have
Patron of the Akki in hand that costs {4}{R}{R}. You need to produce
{2}{R} mana first before casting Patron of the Akki, then choose
Guttersnipe as an offering.
2015-09-08 12:26:03 +08:00
Anthony Calosa 022a15a5e9 added epic cards, fixed maxcast bug
maxcast(*)0 - checks for the current action player of that turn, but
when you passes the turn to the opponent, you can cast instant or cards
with flash instead because you are not the current player, it mustcheck
the controller of the card with play restriction if he can play it or
not whether it your turn or the opponents turn.
2015-09-07 10:09:34 +08:00
Anthony Calosa 42d0480f77 refactored lifestate check 2015-09-03 20:12:09 +08:00
Anthony Calosa 9fb460c176 life state check on trigger
life state check when players gain or lose life
bugs\exquisite_blood_i953.txt will stop looping
as long as the conditions are met on the check
2015-09-03 07:01:45 +08:00
Anthony Calosa 410f2d4e69 updated tests 2015-08-30 23:04:50 +08:00
Anthony Calosa 59c0cf467f serum powder code
serum powder second ability...
Any time you could mulligan and Serum Powder is in your hand, you may
exile all the cards from your hand, then draw that many cards.
2015-08-20 23:11:44 +08:00
Yuriy A. Apollov c018c8fcd1 Fix buyback payed once stayed forever. 2014-11-18 06:51:40 +03:00
xawotihs caec886e22 Fixed issues found by XCode. 2013-12-20 00:24:08 +01:00
Dmitry Panin ae927576c5 Draft of new feature: canplayfromgraveyard
this will allow playing cards from graveyard
examples: tbd
2013-12-02 04:20:04 +04:00
Dmitry Panin 9effa7c975 Slightly changed formatting while investigating src 2013-12-01 01:01:57 +04:00
xawotihs bedd1e8da8 Merge branch 'valgrind' of https://github.com/ZobyTwo/wagic into ZobyTwo-valgrind 2013-11-29 19:41:46 +01:00
Tobias Loose 031f2dbffb Fix Valgrind warnings appearing during the test suit. 2013-11-29 18:21:53 +01:00
Tobias Loose 69c6745f53 Make getMenuText() return string. 2013-11-29 13:33:33 +01:00
Tobias Loose 9d5a83d588 Replace more strcmp with std::string::compare or std::string::operator==.
This commit also enables TinyXML STL support.
2013-11-28 16:42:29 +01:00
Tobias Loose 3ca2f1c1ed Replace defines in Damage.h with enums. 2013-11-17 17:12:58 +01:00
Dmitry Panin 2835bdf767 Fixed issue with Cranial Plating.
Issue
	attach then equip: plating will give bonus to both creatures
Fix
	Changed "attach" to "retarget target(creature|mybattlefield)"
	as this doesnot admit this bug
	Attach should become deprecated in future
2013-11-17 01:49:51 +04:00
Dmitry Panin cf50b7d403 Fizzle unless pay x (thanks to excessum)
- saves source card in storedSourceCard for ATransform
- adds support for WParsedInt in pay as "pay[[{value:WParsedInt}]]":

name=Spell Rupture
target=*|stack
auto=if cantargetcard(*|opponentstack) then transforms((,newability[pay[[{value:power:highest:creature:opponentbattlefield}]] name(pay {value} mana) donothing?fizzle])) forever
text=Counter target spell unless its controller pays {X}, where X is the greatest power among creatures you control.
mana={1}{U}
type=Instant

- adds support for {x} in *some* “pay” abilities (Syncopate):

name=Syncopate
target=*|stack
auto=transforms((,newability[pay[[{x}]] name(pay {value} mana) donothing?fizzleto(exile)])) forever
text=Counter target spell unless its controller pays {X}. If that spell is countered this way, exile it instead of putting it into  its owner's graveyard.
mana={X}{U}
type=Instant

- support of "name(pay {value} mana)" in pay abilities to show actual number to pay (see example above)
2013-10-27 13:47:00 +04:00
Xawotihs@gmail.com 98861dd916 Fixed memory leaks and refactored a bit the ManaCost class while I was at it. 2013-10-19 14:29:17 +00:00
pankdm b5794ad328 Small fixes (misstype, formatting, target p2) 2013-10-18 06:38:15 +00:00
pankdm 38b4213f9c Refactored formatting for easier reading of the code 2013-10-18 06:38:03 +00:00
pankdm 9d2a2454b2 Fixed: exile was not meaning both exiles
and revised Crypt Incursion
2013-10-18 06:35:52 +00:00
pankdm 43ba9aa13d Fixed parsing of "if(ifnot) ... then may ... " 2013-10-18 06:34:23 +00:00
pankdm 0c6d77daa0 Refactored FizzleToZone
Get rid of common code
Better naming of zone (where we put spell after countering)
More generic syntax: fizzleto(X) where X in [hand, exile, librarytop]
which will give more flexibility later
2013-10-08 23:18:42 +00:00
pankdm 17fdedb648 Draft of the "fizzle to zone"
(credit goes to excessum)
2013-10-08 23:17:43 +00:00
pankdm 4aa5dec51a Fixed some warnings
+ added compile flags to mute some warnings that don't have an obvious fix
2013-09-16 17:42:07 +00:00
wagic.the.homebrew@gmail.com bd25b12fb2 Fix for issue 962 (Hexproof) by Dmitri 2013-09-15 02:57:29 +00:00
omegablast2002@yahoo.com 2fa3f468b4 added menutext overriding to transforms.
castcard-> is now the copied spell x.
2013-06-19 11:46:09 +00:00
omegablast2002@yahoo.com b61cd2f69a megapatch contents
added
"whenever a creature enters the battlefield you may pay {1}, if you do gain one life"
conditional may pay({cost}) effect 
this version is a super type ability, and can only be used in certain combos.

to nest you will need to use it in its subtype pay[[{cost}]] effect
pay keyword can have sideeffects coded as follows
pay[[{1}]] life:1?life:-1
pay one mana and gain 1 life, if you dont then you lose one life. notice no space between the abilities and the question mark.

added castcard()
a method to cast a targeted card, this contains the following subkeywords which can be used in combinations
(normal)
(restricted)
(copied)
(noevent)
castcard(restricted copied noevent) for example will cast a card that is a copy or the spell without sending a cast event only when the spell is castable.
"normal" subkeyword cast the actual spell, not a copy.

extended the use of exiledeath to everyzone, any card going from any zone to graveyard is placed in exile if it has exiledeath.

limited swipe left to open hand only when hand is closed view.

"moveto(" can now be named.
2013-06-18 01:41:34 +00:00
Xawotihs@gmail.com 26ab65860e Fixed a gazillion of warnings occuring when compiling Wagic with Clang with Werror. 2013-06-09 21:16:39 +00:00
anthonycalosa@gmail.com f0de00086b added Prowl support.
example usage:
other={1}{B} name(Prowl)
otherrestriction=prowl
2013-05-20 02:59:18 +00:00
omegablast2002@yahoo.com a055044281 added miracle ability.
i choose to use other cost instead of creating a brand new cost type.

otherrestriction determines if the card is the miracle for the turn.

[card]
name=Devastation Tide
auto=all(*[-land]) moveto(ownerhand)
other={1}{u} name(Miracle)
otherrestriction=miracle
text=Return all nonland permanents to their owners' hands. -- Miracle {1}{U} (You may cast this card for its miracle cost when you draw it if it's the first card you drew this turn.)
mana={3}{U}{U}
type=Sorcery
[/card]
2013-05-19 01:48:51 +00:00
omegablast2002@yahoo.com 8aef74e32a pestilence shouldn't care about protections of any kind. 2013-02-12 23:09:24 +00:00
omegablast2002@yahoo.com 3c15357c38 added poolsave(COLOR) its an ability that works only on permanents in play.
opponentpoolsave(
mypoolsave(
ex:Upwelling


added a tag for mana, doesntempty
add{g}{g}{g} doesntempty
what this does is make THAT mana remain in the pool until end of turn.
ex:
Sakura-Tribe Springcaller
2013-02-09 06:48:16 +00:00
omegablast2002@yahoo.com 54780d3ef0 fixed a typo in cantbeblockerof , forgot a letter :X 2013-02-06 23:52:09 +00:00
omegablast2002@yahoo.com e424c3ab27 fixed a bug with lords not removing altercost correctly when the source is phased.
added 
cantbeblockerof(this)<--this = the card who owns the ability.
cantbeblockerof(targetchooser) <--the target cant block anything targetable by this targetchooser.
spin engine and similar will use cantbeblockerof(this).
others were done with a workaround, which i hope will be updated soon.
2013-02-06 02:45:40 +00:00
omegablast2002@yahoo.com 2b9fdc41dc added 2 new restrictions for use in triggers and abilities
ownerscontrol
opponentscontrol

ownerscontrol returns 1 if the owner has the card in thier battlefield. 0 otherwise. vice versa.
this should make it easier to add cards which should be treated differently depending on who controls them.
2013-02-02 18:42:39 +00:00
omegablast2002@yahoo.com c078af5f24 fix for crash from not having a playerTarget when ability$! is used on targetedPlayer by an instant. 2013-01-30 03:51:16 +00:00