Commit d9dc2f56 authored by DailyShana's avatar DailyShana

fix limit material group become invalid in special summon process in effect

parent d5aace84
...@@ -327,7 +327,9 @@ int32 scriptlib::duel_synchro_summon(lua_State *L) { ...@@ -327,7 +327,9 @@ int32 scriptlib::duel_synchro_summon(lua_State *L) {
if(lua_gettop(L) >= 4) { if(lua_gettop(L) >= 4) {
if(!lua_isnil(L, 4)) { if(!lua_isnil(L, 4)) {
check_param(L, PARAM_TYPE_GROUP, 4); check_param(L, PARAM_TYPE_GROUP, 4);
mg = *(group**) lua_touserdata(L, 4); group* pgroup = *(group**) lua_touserdata(L, 4);
mg = pduel->new_group(pgroup->container);
mg->is_readonly = TRUE;
} }
} }
int32 minc = 0; int32 minc = 0;
...@@ -361,7 +363,9 @@ int32 scriptlib::duel_xyz_summon(lua_State *L) { ...@@ -361,7 +363,9 @@ int32 scriptlib::duel_xyz_summon(lua_State *L) {
group* materials = 0; group* materials = 0;
if(!lua_isnil(L, 3)) { if(!lua_isnil(L, 3)) {
check_param(L, PARAM_TYPE_GROUP, 3); check_param(L, PARAM_TYPE_GROUP, 3);
materials = *(group**)lua_touserdata(L, 3); group* pgroup = *(group**)lua_touserdata(L, 3);
materials = pduel->new_group(pgroup->container);
materials->is_readonly = TRUE;
} }
int32 minc = 0; int32 minc = 0;
if(lua_gettop(L) >= 4) if(lua_gettop(L) >= 4)
...@@ -394,7 +398,9 @@ int32 scriptlib::duel_link_summon(lua_State *L) { ...@@ -394,7 +398,9 @@ int32 scriptlib::duel_link_summon(lua_State *L) {
card* lcard = 0; card* lcard = 0;
if(!lua_isnil(L, 3)) { if(!lua_isnil(L, 3)) {
check_param(L, PARAM_TYPE_GROUP, 3); check_param(L, PARAM_TYPE_GROUP, 3);
materials = *(group**)lua_touserdata(L, 3); group* pgroup = *(group**)lua_touserdata(L, 3);
materials = pduel->new_group(pgroup->container);
materials->is_readonly = TRUE;
} }
if(lua_gettop(L) >= 4) { if(lua_gettop(L) >= 4) {
if(!lua_isnil(L, 4)) { if(!lua_isnil(L, 4)) {
......
...@@ -2694,7 +2694,6 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card* target, uin ...@@ -2694,7 +2694,6 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card* target, uin
pduel->lua->add_param(core.limit_tuner, PARAM_TYPE_CARD); pduel->lua->add_param(core.limit_tuner, PARAM_TYPE_CARD);
pduel->lua->add_param(core.limit_syn, PARAM_TYPE_GROUP); pduel->lua->add_param(core.limit_syn, PARAM_TYPE_GROUP);
core.limit_tuner = 0; core.limit_tuner = 0;
core.limit_syn = 0;
if(core.limit_syn_minc) { if(core.limit_syn_minc) {
pduel->lua->add_param(core.limit_syn_minc, PARAM_TYPE_INT); pduel->lua->add_param(core.limit_syn_minc, PARAM_TYPE_INT);
pduel->lua->add_param(core.limit_syn_maxc, PARAM_TYPE_INT); pduel->lua->add_param(core.limit_syn_maxc, PARAM_TYPE_INT);
...@@ -2704,7 +2703,6 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card* target, uin ...@@ -2704,7 +2703,6 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card* target, uin
} }
if(core.limit_xyz) { if(core.limit_xyz) {
pduel->lua->add_param(core.limit_xyz, PARAM_TYPE_GROUP); pduel->lua->add_param(core.limit_xyz, PARAM_TYPE_GROUP);
core.limit_xyz = 0;
if(core.limit_xyz_minc) { if(core.limit_xyz_minc) {
pduel->lua->add_param(core.limit_xyz_minc, PARAM_TYPE_INT); pduel->lua->add_param(core.limit_xyz_minc, PARAM_TYPE_INT);
pduel->lua->add_param(core.limit_xyz_maxc, PARAM_TYPE_INT); pduel->lua->add_param(core.limit_xyz_maxc, PARAM_TYPE_INT);
...@@ -2715,7 +2713,6 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card* target, uin ...@@ -2715,7 +2713,6 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card* target, uin
if(core.limit_link || core.limit_link_card) { if(core.limit_link || core.limit_link_card) {
pduel->lua->add_param(core.limit_link, PARAM_TYPE_GROUP); pduel->lua->add_param(core.limit_link, PARAM_TYPE_GROUP);
pduel->lua->add_param(core.limit_link_card, PARAM_TYPE_CARD); pduel->lua->add_param(core.limit_link_card, PARAM_TYPE_CARD);
core.limit_link = 0;
core.limit_link_card = 0; core.limit_link_card = 0;
if(core.limit_link_minc) { if(core.limit_link_minc) {
pduel->lua->add_param(core.limit_link_minc, PARAM_TYPE_INT); pduel->lua->add_param(core.limit_link_minc, PARAM_TYPE_INT);
...@@ -2731,6 +2728,18 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card* target, uin ...@@ -2731,6 +2728,18 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card* target, uin
return FALSE; return FALSE;
} }
case 4: { case 4: {
if(core.limit_syn) {
pduel->delete_group(core.limit_syn);
core.limit_syn = 0;
}
if(core.limit_xyz) {
pduel->delete_group(core.limit_xyz);
core.limit_xyz = 0;
}
if(core.limit_link) {
pduel->delete_group(core.limit_link);
core.limit_link = 0;
}
effect* peffect = core.units.begin()->peffect; effect* peffect = core.units.begin()->peffect;
uint8 targetplayer = sumplayer; uint8 targetplayer = sumplayer;
uint8 positions = POS_FACEUP; uint8 positions = POS_FACEUP;
......
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