Commit 887d70fa authored by DailyShana's avatar DailyShana

fix normal summon with specified proc

close #321
parent 182e619a
......@@ -3012,7 +3012,7 @@ int32 card::is_can_be_summoned(uint8 playerid, uint8 ignore_count, effect* peffe
effect_set proc;
int32 res = filter_summon_procedure(playerid, &proc, ignore_count, min_tribute, zone);
if(peffect) {
if(res < 0 || !pduel->game_field->is_player_can_summon(peffect->get_value(), playerid, this, playerid)) {
if(res < 0 || !check_summon_procedure(peffect, playerid, ignore_count, min_tribute, zone)) {
pduel->game_field->restore_lp_cost();
return FALSE;
}
......@@ -3210,7 +3210,7 @@ int32 card::is_setable_mzone(uint8 playerid, uint8 ignore_count, effect* peffect
effect_set eset;
int32 res = filter_set_procedure(playerid, &eset, ignore_count, min_tribute, zone);
if(peffect) {
if(res < 0 || !pduel->game_field->is_player_can_mset(peffect->get_value(), playerid, this, playerid)) {
if(res < 0 || !check_set_procedure(peffect, playerid, ignore_count, min_tribute, zone)) {
pduel->game_field->restore_lp_cost();
return FALSE;
}
......
......@@ -1554,7 +1554,7 @@ int32 field::summon(uint16 step, uint8 sumplayer, card* target, effect* proc, ui
effect_set eset;
int32 res = target->filter_summon_procedure(sumplayer, &eset, ignore_count, min_tribute, zone);
if(proc) {
if(res < 0)
if(res < 0 || !target->check_summon_procedure(proc, sumplayer, ignore_count, min_tribute, zone))
return TRUE;
} else {
if(res == -2)
......@@ -1595,23 +1595,10 @@ int32 field::summon(uint16 step, uint8 sumplayer, card* target, effect* proc, ui
core.units.begin()->ptr1 = 0;
return FALSE;
}
if(proc) {
core.units.begin()->step = 3;
if(!ignore_count && !core.extra_summon[sumplayer]) {
for(int32 i = 0; i < eset.size(); ++i) {
std::vector<int32> retval;
eset[i]->get_value(target, 0, &retval);
if(retval.size() < 2) {
core.units.begin()->ptr1 = eset[i];
return FALSE;
}
}
}
core.units.begin()->ptr1 = 0;
return FALSE;
if(!proc) {
proc = core.select_effects[returns.ivalue[0]];
core.units.begin()->peffect = proc;
}
effect* proc = core.select_effects[returns.ivalue[0]];
core.units.begin()->peffect = proc;
core.select_effects.clear();
core.select_options.clear();
if(ignore_count || core.summon_count[sumplayer] < get_summon_count_limit(sumplayer)) {
......@@ -2137,7 +2124,7 @@ int32 field::mset(uint16 step, uint8 setplayer, card* target, effect* proc, uint
effect_set eset;
int32 res = target->filter_set_procedure(setplayer, &eset, ignore_count, min_tribute, zone);
if(proc) {
if(res < 0)
if(res < 0 || !target->check_set_procedure(proc, setplayer, ignore_count, min_tribute, zone))
return TRUE;
} else {
if(res == -2)
......@@ -2163,23 +2150,10 @@ int32 field::mset(uint16 step, uint8 setplayer, card* target, effect* proc, uint
case 1: {
effect_set eset;
target->filter_effect(EFFECT_EXTRA_SET_COUNT, &eset);
if(proc) {
core.units.begin()->step = 3;
if(!ignore_count && !core.extra_summon[setplayer]) {
for(int32 i = 0; i < eset.size(); ++i) {
std::vector<int32> retval;
eset[i]->get_value(target, 0, &retval);
if(retval.size() < 2) {
core.units.begin()->ptr1 = eset[i];
return FALSE;
}
}
}
core.units.begin()->ptr1 = 0;
return FALSE;
if(!proc) {
proc = core.select_effects[returns.ivalue[0]];
core.units.begin()->peffect = proc;
}
effect* proc = core.select_effects[returns.ivalue[0]];
core.units.begin()->peffect = proc;
core.select_effects.clear();
core.select_options.clear();
if(ignore_count || core.summon_count[setplayer] < get_summon_count_limit(setplayer)) {
......
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