Commit 3b16a5a7 authored by VanillaSalt's avatar VanillaSalt

fix

parent a2076282
......@@ -810,8 +810,9 @@ void field::reset_chain() {
void field::filter_field_effect(uint32 code, effect_set* eset, uint8 sort) {
effect* peffect;
auto rg = effects.aura_effect.equal_range(code);
for (; rg.first != rg.second; ++rg.first) {
for (; rg.first != rg.second; ) {
peffect = rg.first->second;
++rg.first;
if (peffect->is_available())
eset->add_item(peffect);
}
......
......@@ -2341,7 +2341,8 @@ int32 scriptlib::duel_overlay(lua_State *L) {
target->xyz_overlay(&cset);
} else
target->xyz_overlay(&pgroup->container);
target->pduel->game_field->adjust_all();
if(target->current.location == LOCATION_MZONE)
target->pduel->game_field->adjust_all();
return lua_yield(L, 0);
}
int32 scriptlib::duel_get_overlay_group(lua_State *L) {
......
......@@ -964,6 +964,14 @@ int32 field::control_adjust(uint16 step) {
return FALSE;
}
case 2: {
for(auto cit = core.control_adjust_set[0].begin(); cit != core.control_adjust_set[0].end(); ++cit) {
if((*cit)->unique_code)
remove_unique_card(*cit);
}
for(auto cit = core.control_adjust_set[1].begin(); cit != core.control_adjust_set[1].end(); ++cit) {
if((*cit)->unique_code)
remove_unique_card(*cit);
}
auto cit1 = core.control_adjust_set[0].begin();
auto cit2 = core.control_adjust_set[1].begin();
while(cit1 != core.control_adjust_set[0].end() && cit2 != core.control_adjust_set[1].end()) {
......@@ -1009,6 +1017,8 @@ int32 field::control_adjust(uint16 step) {
core.control_adjust_set[0].insert(core.control_adjust_set[1].begin(), core.control_adjust_set[1].end());
for(auto cit = core.control_adjust_set[0].begin(); cit != core.control_adjust_set[0].end(); ++cit) {
(*cit)->filter_disable_related_cards();
if((*cit)->unique_code)
add_unique_card(*cit);
raise_single_event((*cit), 0, EVENT_CONTROL_CHANGED, 0, REASON_RULE, 0, 0, 0);
}
raise_event(&core.control_adjust_set[0], EVENT_CONTROL_CHANGED, 0, 0, 0, 0, 0);
......
......@@ -1936,19 +1936,20 @@ int32 field::process_quick_effect(int16 step, int32 special, uint8 priority) {
return FALSE;
bool act = true;
for(auto ifit = core.quick_f_chain.begin(); ifit != core.quick_f_chain.end(); ++ifit) {
peffect = ifit->first;
peffect = ifit->first;
if(peffect->is_chainable(ifit->second.triggering_player) && peffect->handler->is_has_relation(peffect)) {
if (ifit->second.triggering_player == infos.turn_player){
act = true;
if (peffect->flag & EFFECT_FLAG_CHAIN_UNIQUE) {
for (auto cait = core.ntpchain.begin(); cait != core.ntpchain.end(); ++cait) {
for (auto cait = core.tpchain.begin(); cait != core.tpchain.end(); ++cait) {
if (cait->triggering_effect->handler->data.code == peffect->handler->data.code) {
act = false;
break;
}
}
for (auto cait = core.current_chain.begin(); cait != core.current_chain.end(); ++cait) {
if ((cait->triggering_effect->handler->data.code == peffect->handler->data.code) &&
(cait->triggering_effect->get_owner_player() == infos.turn_player)) {
if ((cait->triggering_effect->handler->data.code == peffect->handler->data.code)
&& (cait->triggering_player == infos.turn_player)) {
act = false;
break;
}
......@@ -1958,8 +1959,7 @@ int32 field::process_quick_effect(int16 step, int32 special, uint8 priority) {
core.tpchain.push_back(ifit->second);
peffect->handler->set_status(STATUS_CHAINING, TRUE);
}
}
else{
} else {
act = true;
if (peffect->flag & EFFECT_FLAG_CHAIN_UNIQUE) {
for (auto cait = core.ntpchain.begin(); cait != core.ntpchain.end(); ++cait) {
......@@ -1969,8 +1969,8 @@ int32 field::process_quick_effect(int16 step, int32 special, uint8 priority) {
}
}
for (auto cait = core.current_chain.begin(); cait != core.current_chain.end(); ++cait) {
if ((cait->triggering_effect->handler->data.code == peffect->handler->data.code) &&
(cait->triggering_effect->get_owner_player() != infos.turn_player)) {
if ((cait->triggering_effect->handler->data.code == peffect->handler->data.code)
&& (cait->triggering_player != infos.turn_player)) {
act = false;
break;
}
......@@ -1981,6 +1981,7 @@ int32 field::process_quick_effect(int16 step, int32 special, uint8 priority) {
peffect->handler->set_status(STATUS_CHAINING, TRUE);
}
}
}
}
core.quick_f_chain.clear();
if(core.tpchain.size() > 1)
......
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