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

fix check_tuner_material, select_synchro_material (#513)

parent 6d842e3c
...@@ -2656,10 +2656,16 @@ int32 field::check_tuner_material(card* pcard, card* tuner, int32 findex1, int32 ...@@ -2656,10 +2656,16 @@ 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) {
pduel->lua->add_param(ptuner, PARAM_TYPE_EFFECT); if(ptuner->target) {
pduel->lua->add_param(smat, PARAM_TYPE_CARD); pduel->lua->add_param(ptuner, PARAM_TYPE_EFFECT);
if(!pduel->lua->get_function_value(ptuner->target, 2)) { pduel->lua->add_param(smat, PARAM_TYPE_CARD);
if(!pduel->lua->get_function_value(ptuner->target, 2)) {
pduel->restore_assumes();
return FALSE;
}
}
if(ptuner->value && !(smat->current.location & location)) {
pduel->restore_assumes(); pduel->restore_assumes();
return FALSE; return FALSE;
} }
...@@ -2701,10 +2707,16 @@ int32 field::check_tuner_material(card* pcard, card* tuner, int32 findex1, int32 ...@@ -2701,10 +2707,16 @@ 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) {
pduel->lua->add_param(ptuner, PARAM_TYPE_EFFECT); if(ptuner->target) {
pduel->lua->add_param(mcard, PARAM_TYPE_CARD); pduel->lua->add_param(ptuner, PARAM_TYPE_EFFECT);
if(!pduel->lua->get_function_value(ptuner->target, 2)) { pduel->lua->add_param(mcard, PARAM_TYPE_CARD);
if(!pduel->lua->get_function_value(ptuner->target, 2)) {
pduel->restore_assumes();
return FALSE;
}
}
if(ptuner->value && !(mcard->current.location & location)) {
pduel->restore_assumes(); pduel->restore_assumes();
return FALSE; return FALSE;
} }
...@@ -2720,10 +2732,14 @@ int32 field::check_tuner_material(card* pcard, card* tuner, int32 findex1, int32 ...@@ -2720,10 +2732,14 @@ 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) {
pduel->lua->add_param(ptuner, PARAM_TYPE_EFFECT); if(ptuner->target) {
pduel->lua->add_param(pm, PARAM_TYPE_CARD); pduel->lua->add_param(ptuner, PARAM_TYPE_EFFECT);
if(!pduel->lua->get_function_value(ptuner->target, 2)) 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; continue;
} }
if(pcheck) if(pcheck)
......
...@@ -5388,10 +5388,14 @@ int32 field::select_synchro_material(int16 step, uint8 playerid, card* pcard, in ...@@ -5388,10 +5388,14 @@ 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) {
pduel->lua->add_param(ptuner, PARAM_TYPE_EFFECT); if(ptuner->target) {
pduel->lua->add_param(pm, PARAM_TYPE_CARD); pduel->lua->add_param(ptuner, PARAM_TYPE_EFFECT);
if(!pduel->lua->get_function_value(ptuner->target, 2)) 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; continue;
} }
if(pcheck) if(pcheck)
......
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