Commit b254f2e1 authored by Fluorohydride's avatar Fluorohydride

Merge pull request #711 from sidschingis/patch-2

fix
parents 1bf27c99 d1561688
...@@ -1934,15 +1934,53 @@ int32 field::process_quick_effect(int16 step, int32 special, uint8 priority) { ...@@ -1934,15 +1934,53 @@ int32 field::process_quick_effect(int16 step, int32 special, uint8 priority) {
core.ntpchain.clear(); core.ntpchain.clear();
if(!core.quick_f_chain.size()) if(!core.quick_f_chain.size())
return FALSE; return FALSE;
bool act = true;
for(auto ifit = core.quick_f_chain.begin(); ifit != core.quick_f_chain.end(); ++ifit) { 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){
if(ifit->second.triggering_player == infos.turn_player) act = true;
core.tpchain.push_back(ifit->second); if (peffect->flag & EFFECT_FLAG_CHAIN_UNIQUE) {
else for (auto cait = core.ntpchain.begin(); cait != core.ntpchain.end(); ++cait) {
core.ntpchain.push_back(ifit->second); if (cait->triggering_effect->handler->data.code == peffect->handler->data.code) {
peffect->handler->set_status(STATUS_CHAINING, TRUE); 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)) {
act = false;
break;
}
}
}
if (act){
core.tpchain.push_back(ifit->second);
peffect->handler->set_status(STATUS_CHAINING, TRUE);
}
}
else{
act = true;
if (peffect->flag & EFFECT_FLAG_CHAIN_UNIQUE) {
for (auto cait = core.ntpchain.begin(); cait != core.ntpchain.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)) {
act = false;
break;
}
}
}
if (act){
core.ntpchain.push_back(ifit->second);
peffect->handler->set_status(STATUS_CHAINING, TRUE);
}
}
} }
core.quick_f_chain.clear(); core.quick_f_chain.clear();
if(core.tpchain.size() > 1) 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