Commit 34a65db9 authored by salix5's avatar salix5 Committed by GitHub

Remove upper limit of Duel.SortDecktop (#801)

parent ade04cf7
...@@ -1084,14 +1084,14 @@ int32_t scriptlib::duel_confirm_cards(lua_State *L) { ...@@ -1084,14 +1084,14 @@ int32_t scriptlib::duel_confirm_cards(lua_State *L) {
int32_t scriptlib::duel_sort_decktop(lua_State *L) { int32_t scriptlib::duel_sort_decktop(lua_State *L) {
check_action_permission(L); check_action_permission(L);
check_param_count(L, 3); check_param_count(L, 3);
uint32_t sort_player = (uint32_t)lua_tointeger(L, 1); int32_t sort_player = (int32_t)lua_tointeger(L, 1);
uint32_t target_player = (uint32_t)lua_tointeger(L, 2); int32_t target_player = (int32_t)lua_tointeger(L, 2);
uint32_t count = (uint32_t)lua_tointeger(L, 3); int32_t count = (int32_t)lua_tointeger(L, 3);
if(sort_player != 0 && sort_player != 1) if (!check_playerid(sort_player))
return 0; return 0;
if(target_player != 0 && target_player != 1) if (!check_playerid(target_player))
return 0; return 0;
if(count < 1 || count > 16) if (count < 1)
return 0; return 0;
duel* pduel = interpreter::get_duel_info(L); duel* pduel = interpreter::get_duel_info(L);
pduel->game_field->add_process(PROCESSOR_SORT_DECK, 0, 0, 0, sort_player + (target_player << 16), count); pduel->game_field->add_process(PROCESSOR_SORT_DECK, 0, 0, 0, sort_player + (target_player << 16), count);
......
...@@ -675,15 +675,15 @@ uint32_t field::process() { ...@@ -675,15 +675,15 @@ uint32_t field::process() {
++it->step; ++it->step;
} else { } else {
if(returns.bvalue[0] != 0xff) { if(returns.bvalue[0] != 0xff) {
card* tc[16]; card* tc[256];
for(i = 0; i < count; ++i) for(i = 0; i < count; ++i)
player[target_player].list_main.pop_back(); player[target_player].list_main.pop_back();
for(i = 0; i < count; ++i) for(i = 0; i < count; ++i)
tc[returns.bvalue[i]] = core.select_cards[i]; tc[returns.bvalue[i]] = core.select_cards[i];
for(i = 0; i < count; ++i) { for(i = 0; i < count; ++i) {
player[target_player].list_main.push_back(tc[count - i - 1]); player[target_player].list_main.push_back(tc[count - 1 - i]);
tc[count - i - 1]->current.sequence = (uint8_t)player[target_player].list_main.size() - 1;
} }
reset_sequence(target_player, LOCATION_DECK);
auto clit = player[target_player].list_main.rbegin(); auto clit = player[target_player].list_main.rbegin();
for(i = 0; i < count; ++i, ++clit) { for(i = 0; i < count; ++i, ++clit) {
card* pcard = *clit; card* pcard = *clit;
......
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