fix a bug where affinity wasnt triggering on card entering hand

This commit is contained in:
omegablast2002@yahoo.com
2010-10-02 01:19:33 +00:00
parent 508040b3a7
commit 08b762276b

View File

@@ -1281,8 +1281,6 @@ int MTGAffinityRule::receiveEvent(WEvent * event){
for (int i = 0; i < 2 ; i++){
Player * p = game->players[i];
if (e->to == p->game->hand) ok = 1;//affinity card enters hand
if (e->to == p->game->battlefield) ok = 2;//card enters play
if (e->to == p->game->graveyard || e->to == p->game->hand || e->to == p->game->library || e->to == p->game->exile || e->to == p->game->stack || e->to == p->opponent()->game->battlefield) ok = 3;//card leaves play
//---------
//when cards with affinity enter you hand from anywhere a redux is applied to them for the artifacts in play.
if(ok == 1){//enters play from anywhere
@@ -1301,18 +1299,23 @@ int MTGAffinityRule::receiveEvent(WEvent * event){
for (int j = 0; j < nbcards; ++j){
MTGCardInstance * c = z->cards[j];
int check = e->card->getManaCost()->getConvertedCost();
if (c->hasSubtype(type)){
if ((e->card->has(Constants::AFFINITYARTIFACTS) && c->hasSubtype("artifact") )|| ( e->card->has(Constants::AFFINITYSWAMP) && c->hasSubtype("swamp") )|| ( e->card->has(Constants::AFFINITYMOUNTAIN) && c->hasSubtype("moutain") )||( e->card->has(Constants::AFFINITYPLAINS) && c->hasSubtype("plains") )|| ( e->card->has(Constants::AFFINITYISLAND) && c->hasSubtype("island")) || ( e->card->has(Constants::AFFINITYFOREST) && c->hasSubtype("forest") )|| ( e->card->has(Constants::AFFINITYGREENCREATURES) && c->hasColor(1) && c->isCreature())){
if( check > 0){
if(color > 0 && !c->getManaCost()->hasColor(color)){//do nothing if its colored redux and the cards dont have the color
}else{//do normal redux
c->getManaCost()->remove(color,1);
if(color > 0 && !e->card->getManaCost()->hasColor(color)){//do nothing if its colored redux and the cards dont have the color
}else{
//do normal redux
e->card->getManaCost()->remove(color,1);
}//one less colorless to cast
}else{
e->card->reduxamount += 1;
}
}
}//--end of redux bracket
}
}//if ok == 1
//-------------maintaining cost----------------------------------------------------------------
ok = 0;
if (e->to == p->game->battlefield) ok = 2;//card enters play
if(ok == 2){//enters play from anywhere
if (e->from == p->game->graveyard || e->from == p->game->hand || e->from == p->game->library || e->from == p->game->exile || e->from == p->game->stack || e->from == p->opponent()->game->battlefield || e->from == p->game->temp){
//--redux effect
@@ -1341,6 +1344,8 @@ int MTGAffinityRule::receiveEvent(WEvent * event){
}
}//--end of redux bracket ok == 2
//---------
ok = 0;
if (e->to == p->game->graveyard || e->to == p->game->hand || e->to == p->game->library || e->to == p->game->exile || e->to == p->game->stack || e->to == p->opponent()->game->battlefield) ok = 3;//card leaves play
if(ok == 3){//leave play from your battlefield
if (e->from == p->game->battlefield){
int colored = 0;
@@ -1369,7 +1374,6 @@ int MTGAffinityRule::receiveEvent(WEvent * event){
}
}//---ok == 3
//----------------------------------------
}
}
return 0;
@@ -1389,8 +1393,6 @@ MTGAffinityRule * MTGAffinityRule::clone() const{
}
//-------------------------------------------------------------------
MTGTokensCleanup::MTGTokensCleanup(int _id):MTGAbility(_id, NULL){}
int MTGTokensCleanup::receiveEvent(WEvent * e){