Commit 555bfa8c authored by VanillaSalt's avatar VanillaSalt

fix

parent d4f84633
......@@ -1317,6 +1317,9 @@ int32 field::summon(uint16 step, uint8 sumplayer, card * target, effect * proc,
}
}
}
effect* pextra = 0;
if(!ignore_count && !core.extra_summon[sumplayer])
pextra = target->is_affected_by_effect(EFFECT_EXTRA_SUMMON_COUNT);
if(returns.bvalue[0]) {
card_set tributes;
for(int32 i = 0; i < returns.bvalue[0]; ++i) {
......@@ -1335,9 +1338,13 @@ int32 field::summon(uint16 step, uint8 sumplayer, card * target, effect * proc,
target->current.reason_effect = 0;
target->current.reason_player = sumplayer;
core.units.begin()->step = 4;
core.temp_var[0] = (ptr)pextra;
return FALSE;
}
case 4: {
effect* pextra = 0;
if(!ignore_count && !core.extra_summon[sumplayer])
pextra = target->is_affected_by_effect(EFFECT_EXTRA_SUMMON_COUNT);
target->summon_info = (proc->get_value(target) & 0xfffffff) | SUMMON_TYPE_NORMAL | (LOCATION_HAND << 16);
target->current.reason_effect = proc;
target->current.reason_player = sumplayer;
......@@ -1347,6 +1354,7 @@ int32 field::summon(uint16 step, uint8 sumplayer, card * target, effect * proc,
add_process(PROCESSOR_EXECUTE_OPERATION, 0, proc, 0, sumplayer, 0);
}
proc->dec_count(sumplayer);
core.temp_var[0] = (ptr)pextra;
return FALSE;
}
case 5: {
......@@ -1354,12 +1362,10 @@ int32 field::summon(uint16 step, uint8 sumplayer, card * target, effect * proc,
if(core.summon_depth)
return TRUE;
break_effect();
core.temp_var[0] = 0;
if(!ignore_count) {
returns.ivalue[0] = FALSE;
effect* pextra = core.extra_summon[sumplayer] ? 0 : target->is_affected_by_effect(EFFECT_EXTRA_SUMMON_COUNT);
effect* pextra = (effect*)core.temp_var[0];
if(pextra) {
core.temp_var[0] = (ptr)pextra;
if((pextra->flag & EFFECT_FLAG_FUNC_VALUE) && (core.summon_count[sumplayer] < get_summon_count_limit(sumplayer)))
add_process(PROCESSOR_SELECT_YESNO, 0, 0, 0, sumplayer, 91);
else if(!(pextra->flag & EFFECT_FLAG_FUNC_VALUE) && ((int32)target->material_cards.size() < pextra->get_value()))
......@@ -1751,6 +1757,9 @@ int32 field::mset(uint16 step, uint8 setplayer, card * target, effect * proc, ui
return FALSE;
}
case 3: {
effect* pextra = 0;
if(!ignore_count && !core.extra_summon[setplayer])
pextra = target->is_affected_by_effect(EFFECT_EXTRA_SET_COUNT);
if(returns.bvalue[0]) {
card_set tributes;
for(int32 i = 0; i < returns.bvalue[0]; ++i) {
......@@ -1770,9 +1779,13 @@ int32 field::mset(uint16 step, uint8 setplayer, card * target, effect * proc, ui
target->current.reason_effect = 0;
target->current.reason_player = setplayer;
core.units.begin()->step = 4;
core.temp_var[0] = (ptr)pextra;
return FALSE;
}
case 4: {
effect* pextra = 0;
if(!ignore_count && !core.extra_summon[setplayer])
pextra = target->is_affected_by_effect(EFFECT_EXTRA_SET_COUNT);
target->summon_info = (proc->get_value(target) & 0xfffffff) | SUMMON_TYPE_NORMAL | (LOCATION_HAND << 16);
target->current.reason_effect = proc;
target->current.reason_player = setplayer;
......@@ -1780,16 +1793,15 @@ int32 field::mset(uint16 step, uint8 setplayer, card * target, effect * proc, ui
core.sub_solving_event.push_back(nil_event);
add_process(PROCESSOR_EXECUTE_OPERATION, 0, proc, 0, setplayer, 0);
proc->dec_count(setplayer);
core.temp_var[0] = (ptr)pextra;
return FALSE;
}
case 5: {
core.temp_var[0] = 0;
break_effect();
if(!ignore_count) {
returns.ivalue[0] = FALSE;
effect* pextra = core.extra_summon[setplayer] ? 0 : target->is_affected_by_effect(EFFECT_EXTRA_SET_COUNT);
effect* pextra = (effect*)core.temp_var[0];
if(pextra) {
core.temp_var[0] = (ptr)pextra;
if((pextra->flag & EFFECT_FLAG_FUNC_VALUE) && (core.summon_count[setplayer] < get_summon_count_limit(setplayer)))
add_process(PROCESSOR_SELECT_YESNO, 0, 0, 0, setplayer, 91);
else if(!(pextra->flag & EFFECT_FLAG_FUNC_VALUE) && ((int32)target->material_cards.size() < pextra->get_value()))
......
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