Commit 690afddc authored by mercury233's avatar mercury233 Committed by GitHub

check count limit for player effect (#384)

parent c554b0d4
...@@ -1732,22 +1732,18 @@ int32 scriptlib::card_is_has_effect(lua_State *L) { ...@@ -1732,22 +1732,18 @@ int32 scriptlib::card_is_has_effect(lua_State *L) {
} }
effect_set eset; effect_set eset;
pcard->filter_effect(code, &eset); pcard->filter_effect(code, &eset);
int32 size = eset.size();
if(!size) {
lua_pushnil(L);
return 1;
}
int32 check_player = PLAYER_NONE; int32 check_player = PLAYER_NONE;
if(lua_gettop(L) >= 3) { if(lua_gettop(L) >= 3) {
check_player = (int32)lua_tointeger(L, 3); check_player = (int32)lua_tointeger(L, 3);
if(check_player > PLAYER_NONE) if(check_player > PLAYER_NONE)
check_player = PLAYER_NONE; check_player = PLAYER_NONE;
} }
int32 size = 0;
for(int32 i = 0; i < eset.size(); ++i) { for(int32 i = 0; i < eset.size(); ++i) {
if(check_player == PLAYER_NONE || eset[i]->check_count_limit(check_player)) if(check_player == PLAYER_NONE || eset[i]->check_count_limit(check_player)) {
interpreter::effect2value(L, eset[i]); interpreter::effect2value(L, eset[i]);
else size++;
size--; }
} }
if(!size) { if(!size) {
lua_pushnil(L); lua_pushnil(L);
......
...@@ -3951,13 +3951,17 @@ int32 scriptlib::duel_is_player_affected_by_effect(lua_State *L) { ...@@ -3951,13 +3951,17 @@ int32 scriptlib::duel_is_player_affected_by_effect(lua_State *L) {
int32 code = (int32)lua_tointeger(L, 2); int32 code = (int32)lua_tointeger(L, 2);
effect_set eset; effect_set eset;
pduel->game_field->filter_player_effect(playerid, code, &eset); pduel->game_field->filter_player_effect(playerid, code, &eset);
int32 size = eset.size(); int32 size = 0;
for(int32 i = 0; i < eset.size(); ++i) {
if(eset[i]->check_count_limit(playerid)) {
interpreter::effect2value(L, eset[i]);
size++;
}
}
if(!size) { if(!size) {
lua_pushnil(L); lua_pushnil(L);
return 1; return 1;
} }
for(int32 i = 0; i < size; ++i)
interpreter::effect2value(L, eset[i]);
return size; return size;
} }
int32 scriptlib::duel_is_player_can_draw(lua_State * L) { int32 scriptlib::duel_is_player_can_draw(lua_State * L) {
......
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