Commit f82ce59c authored by nanahira's avatar nanahira

updc

parent cb5b9c31
...@@ -935,21 +935,58 @@ int32 scriptlib::duel_is_environment(lua_State *L) { ...@@ -935,21 +935,58 @@ int32 scriptlib::duel_is_environment(lua_State *L) {
uint32 playerid = PLAYER_ALL; uint32 playerid = PLAYER_ALL;
if(lua_gettop(L) >= 2) if(lua_gettop(L) >= 2)
playerid = lua_tointeger(L, 2); playerid = lua_tointeger(L, 2);
uint32 loc = LOCATION_FZONE + LOCATION_ONFIELD;
if(lua_gettop(L) >= 3)
loc = lua_tointeger(L, 3);
if(playerid != 0 && playerid != 1 && playerid != PLAYER_ALL) if(playerid != 0 && playerid != 1 && playerid != PLAYER_ALL)
return 0; return 0;
duel* pduel = interpreter::get_duel_info(L); duel* pduel = interpreter::get_duel_info(L);
int32 ret = 0, fc = 0; int32 ret = 0, fc = 0;
card* pcard = pduel->game_field->player[0].list_szone[5]; if(loc & LOCATION_FZONE) {
if(pcard && pcard->is_position(POS_FACEUP) && pcard->get_status(STATUS_EFFECT_ENABLED)) { card* pcard = pduel->game_field->player[0].list_szone[5];
fc = 1; if(pcard && pcard->is_position(POS_FACEUP) && pcard->get_status(STATUS_EFFECT_ENABLED)) {
if(code == pcard->get_code() && (playerid == 0 || playerid == PLAYER_ALL)) fc = 1;
ret = 1; if(code == pcard->get_code() && (playerid == 0 || playerid == PLAYER_ALL))
} ret = 1;
pcard = pduel->game_field->player[1].list_szone[5]; }
if(pcard && pcard->is_position(POS_FACEUP) && pcard->get_status(STATUS_EFFECT_ENABLED)) { pcard = pduel->game_field->player[1].list_szone[5];
fc = 1; if(pcard && pcard->is_position(POS_FACEUP) && pcard->get_status(STATUS_EFFECT_ENABLED)) {
if(code == pcard->get_code() && (playerid == 1 || playerid == PLAYER_ALL)) fc = 1;
ret = 1; if(code == pcard->get_code() && (playerid == 1 || playerid == PLAYER_ALL))
ret = 1;
}
}
if(!ret && (loc & LOCATION_SZONE)) {
if(playerid == 0 || playerid == PLAYER_ALL) {
for(auto cit = pduel->game_field->player[0].list_szone.begin(); cit != pduel->game_field->player[0].list_szone.end(); ++cit) {
card* pcard = *cit;
if(pcard && pcard->is_position(POS_FACEUP) && pcard->get_status(STATUS_EFFECT_ENABLED) && code == pcard->get_code())
ret = 1;
}
}
if(playerid == 1 || playerid == PLAYER_ALL) {
for(auto cit = pduel->game_field->player[1].list_szone.begin(); cit != pduel->game_field->player[1].list_szone.end(); ++cit) {
card* pcard = *cit;
if(pcard && pcard->is_position(POS_FACEUP) && pcard->get_status(STATUS_EFFECT_ENABLED) && code == pcard->get_code())
ret = 1;
}
}
}
if(!ret && (loc & LOCATION_MZONE)) {
if(playerid == 0 || playerid == PLAYER_ALL) {
for(auto cit = pduel->game_field->player[0].list_mzone.begin(); cit != pduel->game_field->player[0].list_mzone.end(); ++cit) {
card* pcard = *cit;
if(pcard && pcard->is_position(POS_FACEUP) && pcard->get_status(STATUS_EFFECT_ENABLED) && code == pcard->get_code())
ret = 1;
}
}
if(playerid == 1 || playerid == PLAYER_ALL) {
for(auto cit = pduel->game_field->player[1].list_mzone.begin(); cit != pduel->game_field->player[1].list_mzone.end(); ++cit) {
card* pcard = *cit;
if(pcard && pcard->is_position(POS_FACEUP) && pcard->get_status(STATUS_EFFECT_ENABLED) && code == pcard->get_code())
ret = 1;
}
}
} }
if(!fc) { if(!fc) {
effect_set eset; effect_set eset;
......
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