diff --git a/CHANGELOG.md b/CHANGELOG.md index d6877bbbd..5372bb3cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,9 @@ ## [master] (https://github.com/WagicProject/wagic/tree/master) ### 03/11/21 -- *Committed:* Fixed primitives, added new ability "exploits" to sacrifice a creature, added new trigger "exploited" and improved all primitives with Exploit ability, improved "tokencreated" and "sacrificed" triggers to allow "turnlimited" option, improved "flip" ability in order to keep track of current zone before flip. ([Vitty85](https://github.com/Vitty85)) +- *Committed:* Fixed a bug related to the "turnlimited" option on several ability triggers (e.g. Vampired, Discarded, etc.), restored some test of regression suite after this bug resolution. ([Vitty85](https://github.com/Vitty85)) + +- *Committed:* Fixed primitives, added new ability "exploits" to sacrifice a creature, added new trigger "exploited" and improved all primitives with Exploit ability, improved "tokencreated" and "sacrificed" triggers to allow "turnlimited" option, improved "flip" ability in order to keep track of current zone before flip. https://github.com/WagicProject/wagic/commit/79e560e2b299d763fde9783a098e55b4d8a08c9d ([Vitty85](https://github.com/Vitty85)) ### 31/10/21 - *Committed:* Fixed primitives, added new macro "_TRAINING_" for new ability "Training", added new trigger "trained", added "trainer" restriction to check if player controls an attacking creature with greater power than the current one, improved "ninjutsu" ability when the targeted card is already in play (e.g. "Olivia, Crimson Bride"), improved "flip" ability in order to add the "andability" option and in ordeer to prevent flipped auras go to graveyard, improved "andability" option for "imprint", "haunt" and "conjure" ability, improved "retarget" and "newtarget" keywords with "fromplay" option (to use with flipped auras e.g. "Vengeful Strangler"), replaced old "praidcount" and "oraidcount" with new keywords "pattackedcount" and "oattackedcount". https://github.com/WagicProject/wagic/commit/3baa6acaaf8a994b0fea3c142d14d99d20246da5 ([Vitty85](https://github.com/Vitty85)) diff --git a/projects/mtg/bin/Res/test/_tests.txt b/projects/mtg/bin/Res/test/_tests.txt index 538485411..f6ed6a895 100644 --- a/projects/mtg/bin/Res/test/_tests.txt +++ b/projects/mtg/bin/Res/test/_tests.txt @@ -583,7 +583,7 @@ reinforcements_1.txt Rending_Vines.txt Rending_Vines2.txt Replenish.txt -#resounding_roar.txt +resounding_roar.txt resurrection.txt resuscitate_i210.txt restinpeace.txt @@ -709,7 +709,7 @@ unwilling_recruit.txt urzas_lands.txt urzas_lands2.txt urzas_mine_i287.txt -#[at]Vampired#1.txt +[at]Vampired#1.txt vampire_bats.txt vampiric_link.txt vanishing.txt diff --git a/projects/mtg/include/AllAbilities.h b/projects/mtg/include/AllAbilities.h index 70d22175e..7f1a2601d 100644 --- a/projects/mtg/include/AllAbilities.h +++ b/projects/mtg/include/AllAbilities.h @@ -167,7 +167,7 @@ public: int triggeredTurn; TrCardAddedToZone(GameObserver* observer, int id, MTGCardInstance * source, TargetZoneChooser * toTcZone, TargetChooser * toTcCard, TargetZoneChooser * fromTcZone = NULL, TargetChooser * fromTcCard = NULL, bool once = false, bool sourceUntapped = false, bool isSuspended = false, bool limitOnceATurn = false) : - Trigger(observer, id, source, once), toTcZone(toTcZone), fromTcZone(fromTcZone), toTcCard(toTcCard), fromTcCard(fromTcCard),sourceUntapped(sourceUntapped),isSuspended(isSuspended),limitOnceATurn(limitOnceATurn) + Trigger(observer, id, source, once), toTcZone(toTcZone), fromTcZone(fromTcZone), toTcCard(toTcCard), fromTcCard(fromTcCard), sourceUntapped(sourceUntapped), isSuspended(isSuspended), limitOnceATurn(limitOnceATurn) { triggeredTurn = -1; }; @@ -490,7 +490,7 @@ class TrplayerEnergized: public Trigger public: bool thiscontroller, thisopponent; TrplayerEnergized(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, bool once = false, bool thiscontroller = false, bool thisopponent = false) : - Trigger(observer, id, source,once, tc),thiscontroller(thiscontroller),thisopponent(thisopponent) + Trigger(observer, id, source, once, tc),thiscontroller(thiscontroller),thisopponent(thisopponent) { } @@ -519,7 +519,7 @@ class TrplayerExperienced: public Trigger public: bool thiscontroller, thisopponent; TrplayerExperienced(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, bool once = false, bool thiscontroller = false, bool thisopponent = false) : - Trigger(observer, id, source,once, tc),thiscontroller(thiscontroller),thisopponent(thisopponent) + Trigger(observer, id, source, once, tc),thiscontroller(thiscontroller),thisopponent(thisopponent) { } @@ -608,7 +608,7 @@ public: bool limitOnceATurn; int triggeredTurn; TrcardDrawn(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, bool once = false, bool thiscontroller = false, bool thisopponent = false, bool limitOnceATurn = false) : - Trigger(observer, id, source,once, tc),thiscontroller(thiscontroller),thisopponent(thisopponent),limitOnceATurn(limitOnceATurn) + Trigger(observer, id, source, once, tc), thiscontroller(thiscontroller), thisopponent(thisopponent), limitOnceATurn(limitOnceATurn) { triggeredTurn = -1; } @@ -642,7 +642,7 @@ public: bool limitOnceATurn; int triggeredTurn; TrCardMutated(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, bool once = false, bool limitOnceATurn = false) : - Trigger(observer, id, source,once, tc),limitOnceATurn(limitOnceATurn) + Trigger(observer, id, source, once, tc), limitOnceATurn(limitOnceATurn) { triggeredTurn = -1; } @@ -670,8 +670,9 @@ public: bool limitOnceATurn; int triggeredTurn; TrCardExplored(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, bool once = false, bool limitOnceATurn = false) : - Trigger(observer, id, source,once, tc),limitOnceATurn(limitOnceATurn) + Trigger(observer, id, source, once, tc), limitOnceATurn(limitOnceATurn) { + triggeredTurn = -1; } int triggerOnEventImpl(WEvent * event) @@ -697,8 +698,9 @@ public: bool limitOnceATurn; int triggeredTurn; TrCardBoasted(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, bool once = false, bool limitOnceATurn = false) : - Trigger(observer, id, source,once, tc),limitOnceATurn(limitOnceATurn) + Trigger(observer, id, source, once, tc), limitOnceATurn(limitOnceATurn) { + triggeredTurn = -1; } int triggerOnEventImpl(WEvent * event) @@ -724,8 +726,9 @@ public: bool limitOnceATurn; int triggeredTurn; TrCardSurveiled(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, bool once = false, bool limitOnceATurn = false) : - Trigger(observer, id, source,once, tc),limitOnceATurn(limitOnceATurn) + Trigger(observer, id, source, once, tc), limitOnceATurn(limitOnceATurn) { + triggeredTurn = -1; } int triggerOnEventImpl(WEvent * event) @@ -751,8 +754,9 @@ public: bool limitOnceATurn; int triggeredTurn; TrCardForetold(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, bool once = false, bool limitOnceATurn = false) : - Trigger(observer, id, source,once, tc),limitOnceATurn(limitOnceATurn) + Trigger(observer, id, source, once, tc), limitOnceATurn(limitOnceATurn) { + triggeredTurn = -1; } int triggerOnEventImpl(WEvent * event) @@ -778,8 +782,9 @@ public: bool limitOnceATurn; int triggeredTurn; TrCardTrained(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, bool once = false, bool limitOnceATurn = false) : - Trigger(observer, id, source,once, tc),limitOnceATurn(limitOnceATurn) + Trigger(observer, id, source, once, tc), limitOnceATurn(limitOnceATurn) { + triggeredTurn = -1; } int triggerOnEventImpl(WEvent * event) @@ -805,8 +810,9 @@ public: bool limitOnceATurn; int triggeredTurn; TrCardScryed(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, bool once = false, bool limitOnceATurn = false) : - Trigger(observer, id, source,once, tc),limitOnceATurn(limitOnceATurn) + Trigger(observer, id, source, once, tc), limitOnceATurn(limitOnceATurn) { + triggeredTurn = -1; } int triggerOnEventImpl(WEvent * event) @@ -836,8 +842,9 @@ public: int totaldng; string playerName; TrCardDungeonCompleted(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, bool once = false, bool limitOnceATurn = false, int totaldng = 0, string playerName = "") : - Trigger(observer, id, source,once, tc),limitOnceATurn(limitOnceATurn), totaldng(totaldng), playerName(playerName) + Trigger(observer, id, source, once, tc), limitOnceATurn(limitOnceATurn), totaldng(totaldng), playerName(playerName) { + triggeredTurn = -1; } int triggerOnEventImpl(WEvent * event) @@ -869,8 +876,9 @@ public: int rollresult; string playerName; TrCardRolledDie(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, bool once = false, bool limitOnceATurn = false, int rollresult = 0, string playerName = "") : - Trigger(observer, id, source,once, tc),limitOnceATurn(limitOnceATurn), rollresult(rollresult), playerName(playerName) + Trigger(observer, id, source, once, tc), limitOnceATurn(limitOnceATurn), rollresult(rollresult), playerName(playerName) { + triggeredTurn = -1; } int triggerOnEventImpl(WEvent * event) @@ -904,8 +912,9 @@ public: int flipresult; string playerName; TrCardFlippedCoin(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, bool once = false, bool limitOnceATurn = false, int flipresult = -1, string playerName = "") : - Trigger(observer, id, source,once, tc),limitOnceATurn(limitOnceATurn), flipresult(flipresult), playerName(playerName) + Trigger(observer, id, source, once, tc), limitOnceATurn(limitOnceATurn), flipresult(flipresult), playerName(playerName) { + triggeredTurn = -1; } int triggerOnEventImpl(WEvent * event) @@ -940,8 +949,9 @@ public: bool limitOnceATurn; int triggeredTurn; TrTokenCreated(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, bool once = false, bool limitOnceATurn = false) : - Trigger(observer, id, source,once, tc) + Trigger(observer, id, source, once, tc), limitOnceATurn(limitOnceATurn) { + triggeredTurn = -1; } int triggerOnEventImpl(WEvent * event) @@ -967,8 +977,9 @@ public: bool limitOnceATurn; int triggeredTurn; TrCardSacrificed(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, bool once = false, bool limitOnceATurn = false) : - Trigger(observer, id, source, once, tc) + Trigger(observer, id, source, once, tc), limitOnceATurn(limitOnceATurn) { + triggeredTurn = -1; } int triggerOnEventImpl(WEvent * event) @@ -1008,8 +1019,9 @@ public: bool limitOnceATurn; int triggeredTurn; TrCardExploited(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, bool once = false, bool limitOnceATurn = false) : - Trigger(observer, id, source, once, tc) + Trigger(observer, id, source, once, tc), limitOnceATurn(limitOnceATurn) { + triggeredTurn = -1; } int triggerOnEventImpl(WEvent * event) @@ -1050,8 +1062,9 @@ public: int triggeredTurn; bool cycledTrigger; TrCardDiscarded(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, bool once = false, bool limitOnceATurn = false, bool cycledTrigger = false) : - Trigger(observer, id, source, once, tc),cycledTrigger(cycledTrigger) + Trigger(observer, id, source, once, tc), limitOnceATurn(limitOnceATurn), cycledTrigger(cycledTrigger) { + triggeredTurn = -1; } int triggerOnEventImpl(WEvent * event) @@ -1093,7 +1106,7 @@ public: bool thiscontroller; bool thisopponent; TrDamaged(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, TargetChooser * fromTc = NULL, int type = 0, bool sourceUntapped = false, bool limitOnceATurn = false, bool once = false, bool thiscontroller = false, bool thisopponent = false) : - Trigger(observer, id, source, once, tc), fromTc(fromTc), type(type) , sourceUntapped(sourceUntapped),limitOnceATurn(limitOnceATurn),thiscontroller(thiscontroller),thisopponent(thisopponent) + Trigger(observer, id, source, once, tc), fromTc(fromTc), type(type), sourceUntapped(sourceUntapped), limitOnceATurn(limitOnceATurn), thiscontroller(thiscontroller), thisopponent(thisopponent) { triggeredTurn = -1; } @@ -1153,7 +1166,7 @@ public: int triggeredTurn; MTGCardInstance * gainException; //added exception to avid a gainlife loop (eg. Angels of Vitality) TrLifeGained(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, TargetChooser * fromTc = NULL, int type = 0, bool sourceUntapped = false, bool once = false, bool thiscontroller = false, bool thisopponent = false, bool limitOnceATurn = false, MTGCardInstance * gainException = NULL) : - Trigger(observer, id, source, once , tc), fromTc(fromTc), type(type) , sourceUntapped(sourceUntapped), thiscontroller(thiscontroller), thisopponent(thisopponent), limitOnceATurn(limitOnceATurn), gainException(gainException) + Trigger(observer, id, source, once , tc), fromTc(fromTc), type(type), sourceUntapped(sourceUntapped), thiscontroller(thiscontroller), thisopponent(thisopponent), limitOnceATurn(limitOnceATurn), gainException(gainException) { triggeredTurn = -1; } @@ -1204,8 +1217,9 @@ public: bool limitOnceATurn; int triggeredTurn; TrVampired(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, TargetChooser * fromTc = NULL, bool once = false, bool limitOnceATurn = false) : - Trigger(observer, id, source, once, tc), fromTc(fromTc) + Trigger(observer, id, source, once, tc), fromTc(fromTc), limitOnceATurn(limitOnceATurn) { + triggeredTurn = -1; } int triggerOnEventImpl(WEvent * event) @@ -1246,8 +1260,9 @@ public: bool limitOnceATurn; int triggeredTurn; TrTargeted(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, TargetChooser * fromTc = NULL, int type = 0, bool once = false, bool limitOnceATurn = false) : - Trigger(observer, id, source, once, tc), fromTc(fromTc), type(type) + Trigger(observer, id, source, once, tc), fromTc(fromTc), type(type), limitOnceATurn(limitOnceATurn) { + triggeredTurn = -1; } int triggerOnEventImpl(WEvent * event)