diff --git a/projects/mtg/bin/Res/sets/ICE/_cards.dat b/projects/mtg/bin/Res/sets/ICE/_cards.dat index 9b69a6426..7bec38d0e 100644 --- a/projects/mtg/bin/Res/sets/ICE/_cards.dat +++ b/projects/mtg/bin/Res/sets/ICE/_cards.dat @@ -929,8 +929,8 @@ mana={1}{G} [/card] [card] text={T}: Orcish Cannoneers deals 2 damage to target creature or player and 3 damage to you. +auto={T}:damage:2 target(creature,player) && damage:3 controller id=2641 -alias=1309 name=Orcish Cannoneers rarity=U type=Creature diff --git a/projects/mtg/bin/Res/sets/MRQ/_cards.dat b/projects/mtg/bin/Res/sets/MRQ/_cards.dat index ec7c8238a..6eaa9569e 100644 --- a/projects/mtg/bin/Res/sets/MRQ/_cards.dat +++ b/projects/mtg/bin/Res/sets/MRQ/_cards.dat @@ -715,8 +715,8 @@ toughness=1 [/card] [card] text=Whenever a nontoken permanent is put into a player's graveyard from play, that player loses 1 life. -auto=@movedTo(land,enchantment,creature,artifact|opponentGraveyard):life:-1 opponent -auto=@movedTo(land,enchantment,creature,artifact|myGraveyard):life:-1 controller +auto=@movedTo(land,enchantment,creature,artifact|opponentGraveyard) from(battlefield):life:-1 opponent +auto=@movedTo(land,enchantment,creature,artifact|myGraveyard) from(battlefield):life:-1 controller id=19706 name=Liability rarity=R @@ -1424,4 +1424,4 @@ name=Worry Beads rarity=R type=Artifact mana={3} -[/card] +[/card] diff --git a/projects/mtg/bin/Res/test/_tests.txt b/projects/mtg/bin/Res/test/_tests.txt index d3248ae59..bcd1a7e6a 100644 --- a/projects/mtg/bin/Res/test/_tests.txt +++ b/projects/mtg/bin/Res/test/_tests.txt @@ -14,6 +14,7 @@ generic/legendary.txt generic/lifelink.txt generic/persist.txt generic/persist2.txt +generic/persist3.txt generic/phases.txt generic/rampage.txt generic/regenerate.txt @@ -126,6 +127,7 @@ kudzu.txt kudzu2.txt leveler.txt lhurgoyf.txt +liability.txt lifeforce.txt living_lands.txt lord_of_the_pit.txt @@ -187,6 +189,7 @@ stronghold_discipline.txt sword_to_plowshares.txt telekinetic_sliver.txt terror.txt +terror2.txt titanic_ultimatum.txt tranquil_domain.txt volcanic_island.txt diff --git a/projects/mtg/bin/Res/test/generic/persist3.txt b/projects/mtg/bin/Res/test/generic/persist3.txt new file mode 100644 index 000000000..2f9f141d1 --- /dev/null +++ b/projects/mtg/bin/Res/test/generic/persist3.txt @@ -0,0 +1,21 @@ +#Testing Persist +#bug : When controlling some boosting cards (Glorious Anthem, Honor of the Pure...), returning persist creatures usually come back with their regular P-1/T-1 but are not boosted like they should. +[INIT] +FIRSTMAIN +[PLAYER1] +inplay:Lingering Tormentor,bad moon,prodigal sorcerer +hand:lightning bolt +manapool:{R} +[PLAYER2] +[DO] +lightning bolt +lingering tormentor +prodigal sorcerer +lingering tormentor +[ASSERT] +FIRSTMAIN +[PLAYER1] +inplay:Lingering Tormentor,bad moon,prodigal sorcerer +graveyard:lightning bolt +[PLAYER2] +[END] \ No newline at end of file diff --git a/projects/mtg/bin/Res/test/liability.txt b/projects/mtg/bin/Res/test/liability.txt new file mode 100644 index 000000000..4786245f6 --- /dev/null +++ b/projects/mtg/bin/Res/test/liability.txt @@ -0,0 +1,18 @@ +#Bug: depleting shouldn't trigger liability +[INIT] +FIRSTMAIN +[PLAYER1] +inplay:ambassador laquatus,liability +manapool:{3} +[PLAYER2] +library:swamp,mountain,plains +[DO] +ambassador laquatus +p2 +[ASSERT] +FIRSTMAIN +[PLAYER1] +inplay:ambassador laquatus,liability +[PLAYER2] +graveyard:swamp,mountain,plains +[END] \ No newline at end of file diff --git a/projects/mtg/bin/Res/test/terror2.txt b/projects/mtg/bin/Res/test/terror2.txt new file mode 100644 index 000000000..a47bd2cfb --- /dev/null +++ b/projects/mtg/bin/Res/test/terror2.txt @@ -0,0 +1,19 @@ +#Bug: terror can be cast on black creatures +[INIT] +FIRSTMAIN +[PLAYER1] +hand:Terror +manapool:{B}{B} +[PLAYER2] +inplay:bog wraith +[DO] +terror +bog wraith +[ASSERT] +FIRSTMAIN +[PLAYER1] +hand:Terror +manapool:{B}{B} +[PLAYER2] +inplay:bog wraith +[END] \ No newline at end of file diff --git a/projects/mtg/include/AllAbilities.h b/projects/mtg/include/AllAbilities.h index 4b90d9062..7231ffc11 100644 --- a/projects/mtg/include/AllAbilities.h +++ b/projects/mtg/include/AllAbilities.h @@ -3915,14 +3915,13 @@ class AInstantControlSteal: public InstantAbility{ Player * TheftController; AInstantControlSteal(int _id , MTGCardInstance * _source, MTGCardInstance * _target):InstantAbility(_id, _source, _target){ TrueController = _target->controller(); - // TrueController->game->putInZone(_target, TrueController->game->inPlay, source->controller()->game->inPlay); - TheftController = source->controller(); - MTGCardInstance * copy = _target->changeController(game->currentlyActing()); + TheftController = source->controller(); + MTGCardInstance * copy = _target->changeController(game->currentlyActing()); target = copy; source->target = copy; - - + copy->summoningSickness = 0; } + int destroy(){ MTGCardInstance * _target = (MTGCardInstance *) target; if (TheftController && TheftController->game->inPlay->hasCard(_target)){ //if the target is still in game -> spell was destroyed diff --git a/projects/mtg/src/Credits.cpp b/projects/mtg/src/Credits.cpp index 5ccb6b5c8..811c62ade 100644 --- a/projects/mtg/src/Credits.cpp +++ b/projects/mtg/src/Credits.cpp @@ -55,6 +55,8 @@ void Credits::compute(Player * _p1, Player * _p2, GameApp * _app){ } int diff = p1->life - p2->life; + if (diff < 0) diff = 0; + if (diff > 500) diff = 500; if (diff){ CreditBonus * b = NEW CreditBonus(diff, _("Life Delta Bonus")); bonus.push_back(b); @@ -65,6 +67,11 @@ void Credits::compute(Player * _p1, Player * _p2, GameApp * _app){ bonus.push_back(b); } + if ((p2->game->library->nb_cards == 0) && p1->game->library->nb_cards) { + CreditBonus * b = NEW CreditBonus(p1->game->library->nb_cards * 3, _("Miller Bonus")); + bonus.push_back(b); + } + if (g->turn < 15) { CreditBonus * b = NEW CreditBonus((20 - g->turn)*17, _("'Fast and Furious' Bonus")); bonus.push_back(b); diff --git a/projects/mtg/src/MTGAbility.cpp b/projects/mtg/src/MTGAbility.cpp index 741026941..384d92cea 100644 --- a/projects/mtg/src/MTGAbility.cpp +++ b/projects/mtg/src/MTGAbility.cpp @@ -1518,7 +1518,7 @@ void AbilityFactory::addAbilities(int _id, Spell * spell){ case 130553:// Beacon of Immortality { Player * player = spell->getNextPlayerTarget(); - player->life+=player->life; + if (player->life < (INT_MAX / 4) ) player->life += player->life; zones->putInZone(card,zones->stack,zones->library); zones->library->shuffle(); break; diff --git a/projects/mtg/src/MTGCardInstance.cpp b/projects/mtg/src/MTGCardInstance.cpp index 38ad15d14..a496e241e 100644 --- a/projects/mtg/src/MTGCardInstance.cpp +++ b/projects/mtg/src/MTGCardInstance.cpp @@ -276,6 +276,7 @@ MTGCardInstance * MTGCardInstance::changeController(Player * newController){ Player * originalOwner = controller(); if (originalOwner == newController) return 0; MTGCardInstance * copy = originalOwner->game->putInZone(this, originalOwner->game->inPlay, newController->game->inPlay); + copy->summoningSickness = 1; return copy; }