diff --git a/projects/mtg/include/AllAbilities.h b/projects/mtg/include/AllAbilities.h index 92c8faa03..052457e95 100644 --- a/projects/mtg/include/AllAbilities.h +++ b/projects/mtg/include/AllAbilities.h @@ -2708,6 +2708,11 @@ public: a->forceDestroy = 1; continue; } + if (dynamic_cast (af.getCoreAbility(a))) + { + a->forceDestroy = 1; + continue; + } //we generally dont want to pass oneShot tokencreators to the cards //we equip... a->addToGame(); diff --git a/projects/mtg/include/MTGGameZones.h b/projects/mtg/include/MTGGameZones.h index a2fab5992..ca41e762f 100644 --- a/projects/mtg/include/MTGGameZones.h +++ b/projects/mtg/include/MTGGameZones.h @@ -208,7 +208,7 @@ public: MTGCardInstance * putInExile(MTGCardInstance * card); MTGCardInstance * putInLibrary(MTGCardInstance * card); MTGCardInstance * putInHand(MTGCardInstance * card); - MTGCardInstance * putInZone(MTGCardInstance * card, MTGGameZone * from, MTGGameZone * to); + MTGCardInstance * putInZone(MTGCardInstance * card, MTGGameZone * from, MTGGameZone * to,bool sendEvent = true); int isInPlay(MTGCardInstance * card); int isInGrave(MTGCardInstance * card); int isInZone(MTGCardInstance * card,MTGGameZone * zone); diff --git a/projects/mtg/src/MTGGameZones.cpp b/projects/mtg/src/MTGGameZones.cpp index 6e20f1358..3a4db53e5 100644 --- a/projects/mtg/src/MTGGameZones.cpp +++ b/projects/mtg/src/MTGGameZones.cpp @@ -303,7 +303,7 @@ MTGCardInstance * MTGPlayerCards::putInHand(MTGCardInstance * card) // Moves a card from one zone to another // If the card is not actually in the expected "from" zone, does nothing and returns null -MTGCardInstance * MTGPlayerCards::putInZone(MTGCardInstance * card, MTGGameZone * from, MTGGameZone * to) +MTGCardInstance * MTGPlayerCards::putInZone(MTGCardInstance * card, MTGGameZone * from, MTGGameZone * to,bool sendEvent) { MTGCardInstance * copy = NULL; GameObserver *g = owner->getObserver(); @@ -369,10 +369,11 @@ MTGCardInstance * MTGPlayerCards::putInZone(MTGCardInstance * card, MTGGameZone SAFE_DELETE(previous); } } - + if(sendEvent) + { WEvent * e = NEW WEventZoneChange(copy, from, to); g->receiveEvent(e); - + } return ret; }