@@ -2733,8 +2733,10 @@ int32_t field::special_summon_rule(uint16_t step, uint8_t sumplayer, card* targe
27332733 info.limit_link_maxc = core.limit_link_maxc ;
27342734 target->filter_spsummon_procedure (sumplayer, &eset, summon_type, info);
27352735 target->filter_spsummon_procedure_g (sumplayer, &eset);
2736- if (!eset.size ())
2737- return TRUE ;
2736+ if (!eset.size ()) {
2737+ core.units .begin ()->step = 17 ;
2738+ return FALSE ;
2739+ }
27382740 core.select_effects .clear ();
27392741 core.select_options .clear ();
27402742 for (effect_set::size_type i = 0 ; i < eset.size (); ++i) {
@@ -2784,8 +2786,10 @@ int32_t field::special_summon_rule(uint16_t step, uint8_t sumplayer, card* targe
27842786 return FALSE ;
27852787 }
27862788 case 2 : {
2787- if (!returns.ivalue [0 ])
2788- return TRUE ;
2789+ if (!returns.ivalue [0 ]) {
2790+ core.units .begin ()->step = 17 ;
2791+ return FALSE ;
2792+ }
27892793 effect_set eset;
27902794 target->filter_effect (EFFECT_SPSUMMON_COST, &eset);
27912795 if (eset.size ()) {
@@ -3011,6 +3015,27 @@ int32_t field::special_summon_rule(uint16_t step, uint8_t sumplayer, card* targe
30113015 }
30123016 return TRUE ;
30133017 }
3018+ case 18 : {
3019+ if (core.limit_tuner ) {
3020+ core.limit_tuner = 0 ;
3021+ }
3022+ if (core.limit_syn ) {
3023+ pduel->delete_group (core.limit_syn );
3024+ core.limit_syn = 0 ;
3025+ }
3026+ if (core.limit_xyz ) {
3027+ pduel->delete_group (core.limit_xyz );
3028+ core.limit_xyz = 0 ;
3029+ }
3030+ if (core.limit_link_card ) {
3031+ core.limit_link_card = 0 ;
3032+ }
3033+ if (core.limit_link ) {
3034+ pduel->delete_group (core.limit_link );
3035+ core.limit_link = 0 ;
3036+ }
3037+ return TRUE ;
3038+ }
30143039 case 20 : {
30153040 // EFFECT_SPSUMMON_PROC_G (Pendulum Summon)
30163041 effect* peffect = core.units .begin ()->peffect ;
@@ -5361,6 +5386,14 @@ int32_t field::select_synchro_material(int16_t step, uint8_t playerid, card* pca
53615386 case 0 : {
53625387 if (core.select_cards .size () == 0 )
53635388 return TRUE ;
5389+ if (core.summon_cancelable == FALSE && mg && min == max && mg->container .size () == min + 1 ) {
5390+ group* pgroup = pduel->new_group ();
5391+ pgroup->container .insert (mg->container .begin (), mg->container .end ());
5392+ pduel->lua ->add_param (pgroup, PARAM_TYPE_GROUP);
5393+ pduel->restore_assumes ();
5394+ core.limit_tuner = 0 ;
5395+ return TRUE ;
5396+ }
53645397 pduel->write_buffer8 (MSG_HINT);
53655398 pduel->write_buffer8 (HINT_SELECTMSG);
53665399 pduel->write_buffer8 (playerid);
0 commit comments