Commit 039cd2f1 authored by VanillaSalt's avatar VanillaSalt

fix

parent 01699cf3
...@@ -2446,7 +2446,7 @@ int32 card::is_can_be_synchro_material(card* scard, card* tuner) { ...@@ -2446,7 +2446,7 @@ int32 card::is_can_be_synchro_material(card* scard, card* tuner) {
return FALSE; return FALSE;
if(!(get_type() & TYPE_MONSTER)) if(!(get_type() & TYPE_MONSTER))
return FALSE; return FALSE;
if(scard && current.controler != scard->current.controler && !is_affected_by_effect(EFFECT_SYNCHRO_MATERIAL)) if(scard && current.location == LOCATION_MZONE && current.controler != scard->current.controler && !is_affected_by_effect(EFFECT_SYNCHRO_MATERIAL))
return FALSE; return FALSE;
if(is_affected_by_effect(EFFECT_FORBIDDEN)) if(is_affected_by_effect(EFFECT_FORBIDDEN))
return FALSE; return FALSE;
......
...@@ -1733,6 +1733,13 @@ int32 field::check_synchro_material(card* pcard, int32 findex1, int32 findex2, i ...@@ -1733,6 +1733,13 @@ int32 field::check_synchro_material(card* pcard, int32 findex1, int32 findex2, i
if(eset.size()) if(eset.size())
return check_tuner_material(pcard, eset[0]->handler, findex1, findex2, min, max, smat, mg); return check_tuner_material(pcard, eset[0]->handler, findex1, findex2, min, max, smat, mg);
} }
if(mg) {
for(auto cit = mg->container.begin(); cit != mg->container.end(); ++cit) {
tuner = *cit;
if(check_tuner_material(pcard, tuner, findex1, findex2, min, max, smat, mg))
return TRUE;
}
} else {
for(uint8 p = 0; p < 2; ++p) { for(uint8 p = 0; p < 2; ++p) {
for(int32 i = 0; i < 5; ++i) { for(int32 i = 0; i < 5; ++i) {
tuner = player[p].list_mzone[i]; tuner = player[p].list_mzone[i];
...@@ -1740,11 +1747,12 @@ int32 field::check_synchro_material(card* pcard, int32 findex1, int32 findex2, i ...@@ -1740,11 +1747,12 @@ int32 field::check_synchro_material(card* pcard, int32 findex1, int32 findex2, i
return TRUE; return TRUE;
} }
} }
}
return FALSE; return FALSE;
} }
int32 field::check_tuner_material(card* pcard, card* tuner, int32 findex1, int32 findex2, int32 min, int32 max, card* smat, group* mg) { int32 field::check_tuner_material(card* pcard, card* tuner, int32 findex1, int32 findex2, int32 min, int32 max, card* smat, group* mg) {
effect* peffect; effect* peffect;
if(tuner && tuner->is_position(POS_FACEUP) && (tuner->get_type()&TYPE_TUNER) && tuner->is_can_be_synchro_material(pcard)) { if(tuner && tuner->is_position(POS_FACEUP) && (tuner->get_type() & TYPE_TUNER) && tuner->is_can_be_synchro_material(pcard)) {
effect* pcheck = tuner->is_affected_by_effect(EFFECT_SYNCHRO_CHECK); effect* pcheck = tuner->is_affected_by_effect(EFFECT_SYNCHRO_CHECK);
if(pcheck) if(pcheck)
pcheck->get_value(tuner); pcheck->get_value(tuner);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment