Commit d233210f authored by Uytrewq's avatar Uytrewq Committed by GitHub

fix check_tuner_material, select_synchro_material (#513)

parent 6d842e3c
...@@ -2656,7 +2656,8 @@ int32 field::check_tuner_material(card* pcard, card* tuner, int32 findex1, int32 ...@@ -2656,7 +2656,8 @@ int32 field::check_tuner_material(card* pcard, card* tuner, int32 findex1, int32
pduel->restore_assumes(); pduel->restore_assumes();
return FALSE; return FALSE;
} }
if(ptuner && ptuner->target) { if(ptuner) {
if(ptuner->target) {
pduel->lua->add_param(ptuner, PARAM_TYPE_EFFECT); pduel->lua->add_param(ptuner, PARAM_TYPE_EFFECT);
pduel->lua->add_param(smat, PARAM_TYPE_CARD); pduel->lua->add_param(smat, PARAM_TYPE_CARD);
if(!pduel->lua->get_function_value(ptuner->target, 2)) { if(!pduel->lua->get_function_value(ptuner->target, 2)) {
...@@ -2664,6 +2665,11 @@ int32 field::check_tuner_material(card* pcard, card* tuner, int32 findex1, int32 ...@@ -2664,6 +2665,11 @@ int32 field::check_tuner_material(card* pcard, card* tuner, int32 findex1, int32
return FALSE; return FALSE;
} }
} }
if(ptuner->value && !(smat->current.location & location)) {
pduel->restore_assumes();
return FALSE;
}
}
--min; --min;
--max; --max;
nsyn.push_back(smat); nsyn.push_back(smat);
...@@ -2701,7 +2707,8 @@ int32 field::check_tuner_material(card* pcard, card* tuner, int32 findex1, int32 ...@@ -2701,7 +2707,8 @@ int32 field::check_tuner_material(card* pcard, card* tuner, int32 findex1, int32
pduel->restore_assumes(); pduel->restore_assumes();
return FALSE; return FALSE;
} }
if(ptuner && ptuner->target) { if(ptuner) {
if(ptuner->target) {
pduel->lua->add_param(ptuner, PARAM_TYPE_EFFECT); pduel->lua->add_param(ptuner, PARAM_TYPE_EFFECT);
pduel->lua->add_param(mcard, PARAM_TYPE_CARD); pduel->lua->add_param(mcard, PARAM_TYPE_CARD);
if(!pduel->lua->get_function_value(ptuner->target, 2)) { if(!pduel->lua->get_function_value(ptuner->target, 2)) {
...@@ -2709,6 +2716,11 @@ int32 field::check_tuner_material(card* pcard, card* tuner, int32 findex1, int32 ...@@ -2709,6 +2716,11 @@ int32 field::check_tuner_material(card* pcard, card* tuner, int32 findex1, int32
return FALSE; return FALSE;
} }
} }
if(ptuner->value && !(mcard->current.location & location)) {
pduel->restore_assumes();
return FALSE;
}
}
--min; --min;
--max; --max;
nsyn.push_back(mcard); nsyn.push_back(mcard);
...@@ -2720,12 +2732,16 @@ int32 field::check_tuner_material(card* pcard, card* tuner, int32 findex1, int32 ...@@ -2720,12 +2732,16 @@ int32 field::check_tuner_material(card* pcard, card* tuner, int32 findex1, int32
for(auto& pm : mg->container) { for(auto& pm : mg->container) {
if(pm == tuner || pm == smat || must_list.find(pm) != must_list.end() || !pm->is_can_be_synchro_material(pcard, tuner)) if(pm == tuner || pm == smat || must_list.find(pm) != must_list.end() || !pm->is_can_be_synchro_material(pcard, tuner))
continue; continue;
if(ptuner && ptuner->target) { if(ptuner) {
if(ptuner->target) {
pduel->lua->add_param(ptuner, PARAM_TYPE_EFFECT); pduel->lua->add_param(ptuner, PARAM_TYPE_EFFECT);
pduel->lua->add_param(pm, PARAM_TYPE_CARD); pduel->lua->add_param(pm, PARAM_TYPE_CARD);
if(!pduel->lua->get_function_value(ptuner->target, 2)) if(!pduel->lua->get_function_value(ptuner->target, 2))
continue; continue;
} }
if(ptuner->value && !(pm->current.location & location))
continue;
}
if(pcheck) if(pcheck)
pcheck->get_value(pm); pcheck->get_value(pm);
if(pm->current.location == LOCATION_MZONE && !pm->is_position(POS_FACEUP)) if(pm->current.location == LOCATION_MZONE && !pm->is_position(POS_FACEUP))
......
...@@ -5388,12 +5388,16 @@ int32 field::select_synchro_material(int16 step, uint8 playerid, card* pcard, in ...@@ -5388,12 +5388,16 @@ int32 field::select_synchro_material(int16 step, uint8 playerid, card* pcard, in
for(auto& pm : mg->container) { for(auto& pm : mg->container) {
if(pm == tuner || pm == smat || must_list.find(pm) != must_list.end() || !pm->is_can_be_synchro_material(pcard, tuner)) if(pm == tuner || pm == smat || must_list.find(pm) != must_list.end() || !pm->is_can_be_synchro_material(pcard, tuner))
continue; continue;
if(ptuner && ptuner->target) { if(ptuner) {
if(ptuner->target) {
pduel->lua->add_param(ptuner, PARAM_TYPE_EFFECT); pduel->lua->add_param(ptuner, PARAM_TYPE_EFFECT);
pduel->lua->add_param(pm, PARAM_TYPE_CARD); pduel->lua->add_param(pm, PARAM_TYPE_CARD);
if(!pduel->lua->get_function_value(ptuner->target, 2)) if(!pduel->lua->get_function_value(ptuner->target, 2))
continue; continue;
} }
if(ptuner->value && !(pm->current.location & location))
continue;
}
if(pcheck) if(pcheck)
pcheck->get_value(pm); pcheck->get_value(pm);
if(pm->current.location == LOCATION_MZONE && !pm->is_position(POS_FACEUP)) if(pm->current.location == LOCATION_MZONE && !pm->is_position(POS_FACEUP))
......
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