Commit 7c1a1ac1 authored by mercury233's avatar mercury233
parents 0632b0a0 5ba39d79
...@@ -2226,6 +2226,20 @@ int32 scriptlib::duel_get_first_target(lua_State *L) { ...@@ -2226,6 +2226,20 @@ int32 scriptlib::duel_get_first_target(lua_State *L) {
interpreter::card2value(L, pcard); interpreter::card2value(L, pcard);
return (int32)ch->target_cards->container.size(); return (int32)ch->target_cards->container.size();
} }
int32 scriptlib::duel_get_targets_relate_to_chain(lua_State* L) {
duel* pduel = interpreter::get_duel_info(L);
group* pgroup = pduel->new_group();
chain* ch = pduel->game_field->get_chain(0);
if(ch && ch->target_cards && ch->target_cards->container.size() > 0) {
for(auto& pcard : ch->target_cards->container) {
if(pcard->is_has_relation(*ch)) {
pgroup->container.insert(pcard);
}
}
}
interpreter::group2value(L, pgroup);
return 1;
}
int32 scriptlib::duel_get_current_phase(lua_State *L) { int32 scriptlib::duel_get_current_phase(lua_State *L) {
duel* pduel = interpreter::get_duel_info(L); duel* pduel = interpreter::get_duel_info(L);
lua_pushinteger(L, pduel->game_field->infos.phase); lua_pushinteger(L, pduel->game_field->infos.phase);
...@@ -4675,6 +4689,7 @@ static const struct luaL_Reg duellib[] = { ...@@ -4675,6 +4689,7 @@ static const struct luaL_Reg duellib[] = {
{ "GetChainInfo", scriptlib::duel_get_chain_info }, { "GetChainInfo", scriptlib::duel_get_chain_info },
{ "GetChainEvent", scriptlib::duel_get_chain_event }, { "GetChainEvent", scriptlib::duel_get_chain_event },
{ "GetFirstTarget", scriptlib::duel_get_first_target }, { "GetFirstTarget", scriptlib::duel_get_first_target },
{ "GetTargetsRelateToChain", scriptlib::duel_get_targets_relate_to_chain },
{ "GetCurrentPhase", scriptlib::duel_get_current_phase }, { "GetCurrentPhase", scriptlib::duel_get_current_phase },
{ "SkipPhase", scriptlib::duel_skip_phase }, { "SkipPhase", scriptlib::duel_skip_phase },
{ "IsDamageCalculated", scriptlib::duel_is_damage_calculated }, { "IsDamageCalculated", scriptlib::duel_is_damage_calculated },
......
...@@ -4187,7 +4187,6 @@ int32 field::add_chain(uint16 step) { ...@@ -4187,7 +4187,6 @@ int32 field::add_chain(uint16 step) {
&& phandler->is_has_relation(clit) && phandler->current.location == LOCATION_SZONE && phandler->is_has_relation(clit) && phandler->current.location == LOCATION_SZONE
&& !peffect->is_flag(EFFECT_FLAG_FIELD_ONLY)) && !peffect->is_flag(EFFECT_FLAG_FIELD_ONLY))
clit.flag |= CHAIN_CONTINUOUS_CARD; clit.flag |= CHAIN_CONTINUOUS_CARD;
core.phase_action = TRUE;
pduel->write_buffer8(MSG_CHAINED); pduel->write_buffer8(MSG_CHAINED);
pduel->write_buffer8(clit.chain_count); pduel->write_buffer8(clit.chain_count);
raise_event(phandler, EVENT_CHAINING, peffect, 0, clit.triggering_player, clit.triggering_player, clit.chain_count); raise_event(phandler, EVENT_CHAINING, peffect, 0, clit.triggering_player, clit.triggering_player, clit.chain_count);
...@@ -4305,6 +4304,7 @@ int32 field::solve_chain(uint16 step, uint32 chainend_arg1, uint32 chainend_arg2 ...@@ -4305,6 +4304,7 @@ int32 field::solve_chain(uint16 step, uint32 chainend_arg1, uint32 chainend_arg2
auto cait = core.current_chain.rbegin(); auto cait = core.current_chain.rbegin();
switch(step) { switch(step) {
case 0: { case 0: {
core.phase_action = TRUE;
pduel->write_buffer8(MSG_CHAIN_SOLVING); pduel->write_buffer8(MSG_CHAIN_SOLVING);
pduel->write_buffer8(cait->chain_count); pduel->write_buffer8(cait->chain_count);
add_to_disable_check_list(cait->triggering_effect->get_handler()); add_to_disable_check_list(cait->triggering_effect->get_handler());
......
...@@ -478,6 +478,7 @@ public: ...@@ -478,6 +478,7 @@ public:
static int32 duel_get_chain_info(lua_State *L); static int32 duel_get_chain_info(lua_State *L);
static int32 duel_get_chain_event(lua_State *L); static int32 duel_get_chain_event(lua_State *L);
static int32 duel_get_first_target(lua_State *L); static int32 duel_get_first_target(lua_State *L);
static int32 duel_get_targets_relate_to_chain(lua_State *L);
static int32 duel_get_current_phase(lua_State *L); static int32 duel_get_current_phase(lua_State *L);
static int32 duel_skip_phase(lua_State *L); static int32 duel_skip_phase(lua_State *L);
static int32 duel_is_damage_calculated(lua_State *L); static int32 duel_is_damage_calculated(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