diff --git a/libduel.cpp b/libduel.cpp index 84748eeab..88c9b4993 100644 --- a/libduel.cpp +++ b/libduel.cpp @@ -3172,9 +3172,19 @@ int32 scriptlib::duel_get_synchro_material(lua_State *L) { int32 playerid = (int32)lua_tointeger(L, 1); if(playerid != 0 && playerid != 1) return 0; + uint32 facedown = FALSE; + if (lua_gettop(L) >= 2) + facedown = lua_toboolean(L, 2); duel* pduel = interpreter::get_duel_info(L); + group::card_set mats; + pduel->game_field->get_synchro_material(playerid, &mats); group* pgroup = pduel->new_group(); - pduel->game_field->get_synchro_material(playerid, &pgroup->container); + for (auto cit = mats.begin(); cit != mats.end(); ++cit) { + card* pcard = *cit; + if (pcard->current.location == LOCATION_MZONE && !pcard->is_position(POS_FACEUP) && !facedown) + continue; + pgroup->container.insert(*cit); + } interpreter::group2value(L, pgroup); return 1; }