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
pduel->restore_assumes();
return FALSE;
}
if(ptuner && ptuner->target) {
if(ptuner) {
if(ptuner->target) {
pduel->lua->add_param(ptuner, PARAM_TYPE_EFFECT);
pduel->lua->add_param(smat, PARAM_TYPE_CARD);
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
return FALSE;
}
}
if(ptuner->value && !(smat->current.location & location)) {
pduel->restore_assumes();
return FALSE;
}
}
--min;
--max;
nsyn.push_back(smat);
......@@ -2701,7 +2707,8 @@ int32 field::check_tuner_material(card* pcard, card* tuner, int32 findex1, int32
pduel->restore_assumes();
return FALSE;
}
if(ptuner && ptuner->target) {
if(ptuner) {
if(ptuner->target) {
pduel->lua->add_param(ptuner, PARAM_TYPE_EFFECT);
pduel->lua->add_param(mcard, PARAM_TYPE_CARD);
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
return FALSE;
}
}
if(ptuner->value && !(mcard->current.location & location)) {
pduel->restore_assumes();
return FALSE;
}
}
--min;
--max;
nsyn.push_back(mcard);
......@@ -2720,12 +2732,16 @@ int32 field::check_tuner_material(card* pcard, card* tuner, int32 findex1, int32
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))
continue;
if(ptuner && ptuner->target) {
if(ptuner) {
if(ptuner->target) {
pduel->lua->add_param(ptuner, PARAM_TYPE_EFFECT);
pduel->lua->add_param(pm, PARAM_TYPE_CARD);
if(!pduel->lua->get_function_value(ptuner->target, 2))
continue;
}
if(ptuner->value && !(pm->current.location & location))
continue;
}
if(pcheck)
pcheck->get_value(pm);
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
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))
continue;
if(ptuner && ptuner->target) {
if(ptuner) {
if(ptuner->target) {
pduel->lua->add_param(ptuner, PARAM_TYPE_EFFECT);
pduel->lua->add_param(pm, PARAM_TYPE_CARD);
if(!pduel->lua->get_function_value(ptuner->target, 2))
continue;
}
if(ptuner->value && !(pm->current.location & location))
continue;
}
if(pcheck)
pcheck->get_value(pm);
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