Commit 4b4156ef authored by Argon's avatar Argon

fix

parent ad240e74
...@@ -1196,6 +1196,7 @@ int32 field::get_summon_release_list(card* target, card_set* release_list, card_ ...@@ -1196,6 +1196,7 @@ int32 field::get_summon_release_list(card* target, card_set* release_list, card_
} }
} }
int32 ex_count = 0; int32 ex_count = 0;
int32 ex_sum_max = 0;
for(int i = 0; i < 5; ++i) { for(int i = 0; i < 5; ++i) {
pcard = player[1 - p].list_mzone[i]; pcard = player[1 - p].list_mzone[i];
if(!(pcard && pcard->is_releasable_by_summon(p, target))) if(!(pcard && pcard->is_releasable_by_summon(p, target)))
...@@ -1221,10 +1222,12 @@ int32 field::get_summon_release_list(card* target, card_set* release_list, card_ ...@@ -1221,10 +1222,12 @@ int32 field::get_summon_release_list(card* target, card_set* release_list, card_
else else
pcard->operation_param = 1; pcard->operation_param = 1;
ex_count++; ex_count++;
if(ex_sum_max < pcard->operation_param)
ex_sum_max = pcard->operation_param;
} }
} }
if(ex_count) if(ex_count)
rcount++; rcount += ex_sum_max;
return rcount; return rcount;
} }
int32 field::get_summon_count_limit(uint8 playerid) { int32 field::get_summon_count_limit(uint8 playerid) {
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include "interpreter.h" #include "interpreter.h"
#include <algorithm> #include <algorithm>
class filter_summon_procedure;
int32 field::negate_chain(uint8 chaincount) { int32 field::negate_chain(uint8 chaincount) {
if(core.current_chain.size() == 0) if(core.current_chain.size() == 0)
return FALSE; return FALSE;
...@@ -4212,9 +4213,12 @@ int32 field::select_tribute_cards(int16 step, uint8 playerid, uint8 cancelable, ...@@ -4212,9 +4213,12 @@ int32 field::select_tribute_cards(int16 step, uint8 playerid, uint8 cancelable,
rmax += (*cit)->operation_param; rmax += (*cit)->operation_param;
if(rmax < min) if(rmax < min)
returns.ivalue[0] = TRUE; returns.ivalue[0] = TRUE;
else if(!core.release_cards_ex_sum.empty()) else if(!core.release_cards_ex_sum.empty()) {
core.temp_var[0] = 0;
if(rmax == 0 && min == 2)
core.temp_var[0] = 1;
add_process(PROCESSOR_SELECT_YESNO, 0, 0, 0, playerid, 92); add_process(PROCESSOR_SELECT_YESNO, 0, 0, 0, playerid, 92);
else } else
core.units.begin()->step = 2; core.units.begin()->step = 2;
return FALSE; return FALSE;
} }
...@@ -4223,8 +4227,13 @@ int32 field::select_tribute_cards(int16 step, uint8 playerid, uint8 cancelable, ...@@ -4223,8 +4227,13 @@ int32 field::select_tribute_cards(int16 step, uint8 playerid, uint8 cancelable,
core.units.begin()->step = 2; core.units.begin()->step = 2;
return FALSE; return FALSE;
} }
for(auto cit = core.release_cards_ex_sum.begin(); cit != core.release_cards_ex_sum.end(); ++cit) if(core.temp_var[0] == 0)
core.select_cards.push_back(*cit); for(auto cit = core.release_cards_ex_sum.begin(); cit != core.release_cards_ex_sum.end(); ++cit)
core.select_cards.push_back(*cit);
else
for(auto cit = core.release_cards_ex_sum.begin(); cit != core.release_cards_ex_sum.end(); ++cit)
if((*cit)->operation_param == 2)
core.select_cards.push_back(*cit);
pduel->write_buffer8(MSG_HINT); pduel->write_buffer8(MSG_HINT);
pduel->write_buffer8(HINT_SELECTMSG); pduel->write_buffer8(HINT_SELECTMSG);
pduel->write_buffer8(playerid); pduel->write_buffer8(playerid);
...@@ -4262,7 +4271,7 @@ int32 field::select_tribute_cards(int16 step, uint8 playerid, uint8 cancelable, ...@@ -4262,7 +4271,7 @@ int32 field::select_tribute_cards(int16 step, uint8 playerid, uint8 cancelable,
max -= rmin; max -= rmin;
core.units.begin()->arg2 = (max << 16) + min; core.units.begin()->arg2 = (max << 16) + min;
if(min <= 0) { if(min <= 0) {
if(max > 0) if(max > 0 && !core.release_cards.empty())
add_process(PROCESSOR_SELECT_YESNO, 0, 0, 0, playerid, 210); add_process(PROCESSOR_SELECT_YESNO, 0, 0, 0, playerid, 210);
else else
core.units.begin()->step = 6; core.units.begin()->step = 6;
......
...@@ -21,5 +21,5 @@ function c56784842.regop(e,tp,eg,ep,ev,re,r,rp) ...@@ -21,5 +21,5 @@ function c56784842.regop(e,tp,eg,ep,ev,re,r,rp)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
function c56784842.aclimit(e,re,tp) function c56784842.aclimit(e,re,tp)
return re:GetHandler():IsType(TYPE_MONSTER) return re:GetHandler():IsActiveType(TYPE_MONSTER)
end end
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