Commit 482ec512 authored by nanahira's avatar nanahira

Merge branch 'fh'

parents 39fa84ee 55c542ec
...@@ -586,6 +586,7 @@ static const struct luaL_Reg duellib[] = { ...@@ -586,6 +586,7 @@ static const struct luaL_Reg duellib[] = {
{ "IsPlayerCanSendtoHand", scriptlib::duel_is_player_can_send_to_hand }, { "IsPlayerCanSendtoHand", scriptlib::duel_is_player_can_send_to_hand },
{ "IsPlayerCanSendtoGrave", scriptlib::duel_is_player_can_send_to_grave }, { "IsPlayerCanSendtoGrave", scriptlib::duel_is_player_can_send_to_grave },
{ "IsPlayerCanSendtoDeck", scriptlib::duel_is_player_can_send_to_deck }, { "IsPlayerCanSendtoDeck", scriptlib::duel_is_player_can_send_to_deck },
{ "IsPlayerCanAdditionalSummon", scriptlib::duel_is_player_can_additional_summon },
{ "IsChainNegatable", scriptlib::duel_is_chain_negatable }, { "IsChainNegatable", scriptlib::duel_is_chain_negatable },
{ "IsChainDisablable", scriptlib::duel_is_chain_disablable }, { "IsChainDisablable", scriptlib::duel_is_chain_disablable },
{ "CheckChainTarget", scriptlib::duel_check_chain_target }, { "CheckChainTarget", scriptlib::duel_check_chain_target },
......
...@@ -3656,23 +3656,14 @@ int32 scriptlib::duel_is_player_can_summon(lua_State * L) { ...@@ -3656,23 +3656,14 @@ int32 scriptlib::duel_is_player_can_summon(lua_State * L) {
return 1; return 1;
} }
duel* pduel = interpreter::get_duel_info(L); duel* pduel = interpreter::get_duel_info(L);
int32 check_additional; if(lua_gettop(L) == 1)
if(lua_gettop(L) <= 2) { lua_pushboolean(L, pduel->game_field->is_player_can_summon(playerid));
check_additional = lua_toboolean(L, 2); else {
if(check_additional && pduel->game_field->core.extra_summon[playerid])
lua_pushboolean(L, 0);
else
lua_pushboolean(L, pduel->game_field->is_player_can_summon(playerid));
} else {
check_param_count(L, 3); check_param_count(L, 3);
check_param(L, PARAM_TYPE_CARD, 3); check_param(L, PARAM_TYPE_CARD, 3);
int32 sumtype = lua_tointeger(L, 2); int32 sumtype = lua_tointeger(L, 2);
card* pcard = *(card**) lua_touserdata(L, 3); card* pcard = *(card**) lua_touserdata(L, 3);
check_additional = lua_toboolean(L, 4); lua_pushboolean(L, pduel->game_field->is_player_can_summon(sumtype, playerid, pcard));
if(check_additional && pduel->game_field->core.extra_summon[playerid])
lua_pushboolean(L, 0);
else
lua_pushboolean(L, pduel->game_field->is_player_can_summon(sumtype, playerid, pcard));
} }
return 1; return 1;
} }
...@@ -3826,6 +3817,20 @@ int32 scriptlib::duel_is_player_can_send_to_deck(lua_State * L) { ...@@ -3826,6 +3817,20 @@ int32 scriptlib::duel_is_player_can_send_to_deck(lua_State * L) {
lua_pushboolean(L, pduel->game_field->is_player_can_send_to_deck(playerid, pcard)); lua_pushboolean(L, pduel->game_field->is_player_can_send_to_deck(playerid, pcard));
return 1; return 1;
} }
int32 scriptlib::duel_is_player_can_additional_summon(lua_State * L) {
check_param_count(L, 1);
int32 playerid = lua_tointeger(L, 1);
if(playerid != 0 && playerid != 1) {
lua_pushboolean(L, 0);
return 1;
}
duel* pduel = interpreter::get_duel_info(L);
if(pduel->game_field->core.extra_summon[playerid] == 0)
lua_pushboolean(L, 1);
else
lua_pushboolean(L, 0);
return 1;
}
int32 scriptlib::duel_is_chain_negatable(lua_State * L) { int32 scriptlib::duel_is_chain_negatable(lua_State * L) {
check_param_count(L, 1); check_param_count(L, 1);
int32 chaincount = lua_tointeger(L, 1); int32 chaincount = lua_tointeger(L, 1);
......
...@@ -30,9 +30,9 @@ int32 scriptlib::group_from_cards(lua_State *L) { ...@@ -30,9 +30,9 @@ int32 scriptlib::group_from_cards(lua_State *L) {
duel* pduel = interpreter::get_duel_info(L); duel* pduel = interpreter::get_duel_info(L);
group* pgroup = pduel->new_group(); group* pgroup = pduel->new_group();
for(int32 i = 0; i < lua_gettop(L); ++i) { for(int32 i = 0; i < lua_gettop(L); ++i) {
void* p = lua_touserdata(L, i + 1); if(!lua_isnil(L, i + 1)) {
if(p) { check_param(L, PARAM_TYPE_CARD, i + 1);
card* pcard = *(card**)p; card* pcard = *(card**) lua_touserdata(L, i + 1);
pgroup->container.insert(pcard); pgroup->container.insert(pcard);
} }
} }
......
...@@ -576,6 +576,7 @@ public: ...@@ -576,6 +576,7 @@ public:
static int32 duel_is_player_can_send_to_hand(lua_State *L); static int32 duel_is_player_can_send_to_hand(lua_State *L);
static int32 duel_is_player_can_send_to_grave(lua_State *L); static int32 duel_is_player_can_send_to_grave(lua_State *L);
static int32 duel_is_player_can_send_to_deck(lua_State *L); static int32 duel_is_player_can_send_to_deck(lua_State *L);
static int32 duel_is_player_can_additional_summon(lua_State *L);
static int32 duel_is_chain_negatable(lua_State *L); static int32 duel_is_chain_negatable(lua_State *L);
static int32 duel_is_chain_disablable(lua_State *L); static int32 duel_is_chain_disablable(lua_State *L);
static int32 duel_check_chain_target(lua_State *L); static int32 duel_check_chain_target(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