Erwan
- Partial fix for issue 335. This fixes the general problem of triggers not working in the case @movedTo(Battlefield) from(anywhere), but not the specific case of River kelpie not getting to draw a card after being "persisted"
This commit is contained in:
@@ -398,6 +398,7 @@ resounding_roar.txt
|
|||||||
resurrection.txt
|
resurrection.txt
|
||||||
resuscitate_i210.txt
|
resuscitate_i210.txt
|
||||||
righteous_cause.txt
|
righteous_cause.txt
|
||||||
|
river_kelpie2_i335.txt
|
||||||
rockslide_elemental.txt
|
rockslide_elemental.txt
|
||||||
rootwalla.txt
|
rootwalla.txt
|
||||||
royal_assassin.txt
|
royal_assassin.txt
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
#Bug: moved from Graveyard triggers don't work
|
||||||
|
# see http://code.google.com/p/wagic/issues/detail?id=335
|
||||||
|
# Argivian Restoration: Return target artifact card from your graveyard to the battlefield.
|
||||||
|
# Whenever River Kelpie or another permanent is put onto the battlefield from a graveyard, draw a card.
|
||||||
|
[INIT]
|
||||||
|
FIRSTMAIN
|
||||||
|
[PLAYER1]
|
||||||
|
manapool:{2}{U}{U}
|
||||||
|
inplay:River Kelpie
|
||||||
|
graveyard:Brass man
|
||||||
|
hand:Argivian Restoration
|
||||||
|
library:forest
|
||||||
|
[PLAYER2]
|
||||||
|
[DO]
|
||||||
|
Argivian Restoration
|
||||||
|
Brass man
|
||||||
|
[ASSERT]
|
||||||
|
FIRSTMAIN
|
||||||
|
[PLAYER1]
|
||||||
|
inplay:River Kelpie,Brass man
|
||||||
|
hand:Forest
|
||||||
|
graveyard:Argivian Restoration
|
||||||
|
[PLAYER2]
|
||||||
|
[END]
|
||||||
@@ -212,7 +212,34 @@ MTGCardInstance * MTGPlayerCards::putInZone(MTGCardInstance * card, MTGGameZone
|
|||||||
|
|
||||||
MTGCardInstance * ret = copy;
|
MTGCardInstance * ret = copy;
|
||||||
|
|
||||||
|
|
||||||
to->addCard(copy);
|
to->addCard(copy);
|
||||||
|
|
||||||
|
|
||||||
|
//The "Temp" zone are purely for code purposes, and we don't want the abilities engine to
|
||||||
|
//Trigger when cards move in this zone
|
||||||
|
// Additionally, when they mve "from" this zone,
|
||||||
|
// we trick the engine into believing that they moved from the zone the card was previously in
|
||||||
|
// See http://code.google.com/p/wagic/issues/detail?id=335
|
||||||
|
{
|
||||||
|
if (to == g->players[0]->game->temp || to == g->players[1]->game->temp){
|
||||||
|
//don't send event when moving to temp
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (from == g->players[0]->game->temp || from == g->players[1]->game->temp){
|
||||||
|
//remove temporary stuff
|
||||||
|
MTGCardInstance * previous = copy->previous;
|
||||||
|
MTGCardInstance * previous2 = previous->previous;
|
||||||
|
from = previous->previousZone;
|
||||||
|
copy->previous = previous2;
|
||||||
|
if (previous2) previous2->next = copy;
|
||||||
|
previous->previous = NULL;
|
||||||
|
previous->next = NULL;
|
||||||
|
SAFE_DELETE(previous);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
GameObserver *g = GameObserver::GetInstance();
|
GameObserver *g = GameObserver::GetInstance();
|
||||||
WEvent * e = NEW WEventZoneChange(copy, from, to);
|
WEvent * e = NEW WEventZoneChange(copy, from, to);
|
||||||
g->receiveEvent(e);
|
g->receiveEvent(e);
|
||||||
|
|||||||
Reference in New Issue
Block a user