Commit 73f8d03d authored by VanillaSalt's avatar VanillaSalt

fix

parent 1d7b766f
...@@ -1604,23 +1604,6 @@ int32 field::check_tuner_material(card* pcard, card* tuner, int32 findex1, int32 ...@@ -1604,23 +1604,6 @@ int32 field::check_tuner_material(card* pcard, card* tuner, int32 findex1, int32
return TRUE; return TRUE;
} }
} else { } else {
card_vector nsyn;
card* pm;
for(uint8 p = 0; p < 2; ++p) {
for(int32 i = 0; i < 5; ++i) {
pm = player[p].list_mzone[i];
if(mg && !mg->has_card(pm))
continue;
if(pm && pm != tuner && pm->is_position(POS_FACEUP) && pm->is_can_be_synchro_material(pcard, tuner)) {
if(pcheck)
pcheck->get_value(pm);
if(!pduel->lua->check_matching(pm, findex2, 0))
continue;
nsyn.push_back(pm);
pm->operation_param = pm->get_synchro_level(pcard);
}
}
}
int32 l = tuner->get_synchro_level(pcard); int32 l = tuner->get_synchro_level(pcard);
int32 l1 = l & 0xffff; int32 l1 = l & 0xffff;
//int32 l2 = l >> 16; //int32 l2 = l >> 16;
...@@ -1631,20 +1614,45 @@ int32 field::check_tuner_material(card* pcard, card* tuner, int32 findex1, int32 ...@@ -1631,20 +1614,45 @@ int32 field::check_tuner_material(card* pcard, card* tuner, int32 findex1, int32
return FALSE; return FALSE;
} }
if(smat) { if(smat) {
if(pcheck)
pcheck->get_value(smat);
if(!pduel->lua->check_matching(smat, findex2, 0)) {
pduel->restore_assumes();
return FALSE;
}
l = smat->get_synchro_level(pcard); l = smat->get_synchro_level(pcard);
l1 = l & 0xffff; l1 = l & 0xffff;
lv -= l1; lv -= l1;
min--; min--;
max--; max--;
pduel->restore_assumes();
if(lv <= 0) { if(lv <= 0) {
pduel->restore_assumes();
if(lv == 0 && min == 0) if(lv == 0 && min == 0)
return TRUE; return TRUE;
return FALSE; return FALSE;
} }
if(max == 0) if(max == 0) {
pduel->restore_assumes();
return FALSE; return FALSE;
} }
}
card_vector nsyn;
card* pm;
for(uint8 p = 0; p < 2; ++p) {
for(int32 i = 0; i < 5; ++i) {
pm = player[p].list_mzone[i];
if(mg && !mg->has_card(pm))
continue;
if(pm && pm != tuner && pm != smat && pm->is_position(POS_FACEUP) && pm->is_can_be_synchro_material(pcard, tuner)) {
if(pcheck)
pcheck->get_value(pm);
if(!pduel->lua->check_matching(pm, findex2, 0))
continue;
nsyn.push_back(pm);
pm->operation_param = pm->get_synchro_level(pcard);
}
}
}
if(check_with_sum_limit(&nsyn, lv, 0, 1, min, max)) { if(check_with_sum_limit(&nsyn, lv, 0, 1, min, max)) {
pduel->restore_assumes(); pduel->restore_assumes();
return TRUE; return TRUE;
......
...@@ -3786,6 +3786,8 @@ int32 field::select_synchro_material(int16 step, uint8 playerid, card* pcard, in ...@@ -3786,6 +3786,8 @@ int32 field::select_synchro_material(int16 step, uint8 playerid, card* pcard, in
if(lv <= 0) if(lv <= 0)
continue; continue;
if(smat) { if(smat) {
if(pcheck)
pcheck->get_value(smat);
l = smat->get_synchro_level(pcard); l = smat->get_synchro_level(pcard);
l1 = l & 0xffff; l1 = l & 0xffff;
lv -= l1; lv -= l1;
...@@ -3862,6 +3864,9 @@ int32 field::select_synchro_material(int16 step, uint8 playerid, card* pcard, in ...@@ -3862,6 +3864,9 @@ int32 field::select_synchro_material(int16 step, uint8 playerid, card* pcard, in
} }
case 3: { case 3: {
card* tuner = (card*)core.units.begin()->ptarget; card* tuner = (card*)core.units.begin()->ptarget;
effect* pcheck = tuner->is_affected_by_effect(EFFECT_SYNCHRO_CHECK);
if(pcheck)
pcheck->get_value(tuner);
int32 l = tuner->get_synchro_level(pcard); int32 l = tuner->get_synchro_level(pcard);
int32 l1 = l & 0xffff; int32 l1 = l & 0xffff;
//int32 l2 = l >> 16; //int32 l2 = l >> 16;
......
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