Commit 8d6bd431 authored by argon.sun's avatar argon.sun

fix

parent 2b711b12
...@@ -1634,8 +1634,7 @@ int32 field::process_point_event(int16 step, int32 special, int32 skip_new) { ...@@ -1634,8 +1634,7 @@ int32 field::process_point_event(int16 step, int32 special, int32 skip_new) {
core.ntpchain.clear(); core.ntpchain.clear();
for (auto clit = core.flip_chain.begin(); clit != core.flip_chain.end(); ++clit) { for (auto clit = core.flip_chain.begin(); clit != core.flip_chain.end(); ++clit) {
if(clit->triggering_effect->is_chainable(clit->triggering_player) if(clit->triggering_effect->is_chainable(clit->triggering_player)
&& clit->triggering_effect->is_activateable(clit->triggering_player, clit->evt, TRUE) && clit->triggering_effect->is_activateable(clit->triggering_player, clit->evt, TRUE)) {
&& ((clit->triggering_location & 0x3) || !(clit->triggering_effect->handler->current.location & 0x3))) {
if(clit->triggering_player == infos.turn_player) if(clit->triggering_player == infos.turn_player)
core.tpchain.push_back(*clit); core.tpchain.push_back(*clit);
else else
...@@ -1670,7 +1669,7 @@ int32 field::process_point_event(int16 step, int32 special, int32 skip_new) { ...@@ -1670,7 +1669,7 @@ int32 field::process_point_event(int16 step, int32 special, int32 skip_new) {
uint8 tp = clit->triggering_player; uint8 tp = clit->triggering_player;
bool act = true; bool act = true;
if(peffect->is_chainable(tp) && peffect->is_activateable(tp, clit->evt, TRUE) if(peffect->is_chainable(tp) && peffect->is_activateable(tp, clit->evt, TRUE)
&& ((clit->triggering_location & 0x3) || !(peffect->handler->current.location & 0x3))) { && ((peffect->code == EVENT_FLIP) || (clit->triggering_location & 0x3) || !(peffect->handler->current.location & 0x3) || peffect->handler->is_status(STATUS_IS_PUBLIC))) {
if(peffect->flag & EFFECT_FLAG_CHAIN_UNIQUE) { if(peffect->flag & EFFECT_FLAG_CHAIN_UNIQUE) {
if(tp == infos.turn_player) { if(tp == infos.turn_player) {
for(auto tpit = core.tpchain.begin(); tpit != core.tpchain.end(); ++tpit) { for(auto tpit = core.tpchain.begin(); tpit != core.tpchain.end(); ++tpit) {
...@@ -1749,7 +1748,8 @@ int32 field::process_point_event(int16 step, int32 special, int32 skip_new) { ...@@ -1749,7 +1748,8 @@ int32 field::process_point_event(int16 step, int32 special, int32 skip_new) {
uint8 tp = clit->triggering_player; uint8 tp = clit->triggering_player;
bool act = true; bool act = true;
if(clit->triggering_effect->is_chainable(tp) && clit->triggering_effect->is_activateable(tp, clit->evt, TRUE) if(clit->triggering_effect->is_chainable(tp) && clit->triggering_effect->is_activateable(tp, clit->evt, TRUE)
&& ((clit->triggering_location & 0x3) || !(clit->triggering_effect->handler->current.location & 0x3))) { && ((clit->triggering_effect->code == EVENT_FLIP) || (clit->triggering_location & 0x3)
|| !(clit->triggering_effect->handler->current.location & 0x3) || clit->triggering_effect->handler->is_status(STATUS_IS_PUBLIC))) {
if(tp == infos.turn_player) { if(tp == infos.turn_player) {
for(auto tpit = core.tpchain.begin(); tpit != core.tpchain.end(); ++tpit) { for(auto tpit = core.tpchain.begin(); tpit != core.tpchain.end(); ++tpit) {
if(!(clit->triggering_effect->flag & EFFECT_FLAG_MULTIACT_HAND)) { if(!(clit->triggering_effect->flag & EFFECT_FLAG_MULTIACT_HAND)) {
......
...@@ -20,7 +20,7 @@ function c19163116.filter(c,e,tp) ...@@ -20,7 +20,7 @@ function c19163116.filter(c,e,tp)
end end
function c19163116.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function c19163116.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c19163116.filter(chkc,e,tp) end if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c19163116.filter(chkc,e,tp) end
if chk==0 then return not e:GetHandler():IsLocation(LOCATION_HAND+LOCATION_DECK) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.IsExistingTarget(c19163116.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end and Duel.IsExistingTarget(c19163116.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectTarget(tp,c19163116.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) local g=Duel.SelectTarget(tp,c19163116.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp)
......
...@@ -32,7 +32,7 @@ function c37104630.desfilter(c) ...@@ -32,7 +32,7 @@ function c37104630.desfilter(c)
end end
function c37104630.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function c37104630.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and c37104630.desfilter(chkc) end if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and c37104630.desfilter(chkc) end
if chk==0 then return not e:GetHandler():IsLocation(LOCATION_HAND+LOCATION_DECK) end if chk==0 then return true end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY)
local g=Duel.SelectTarget(tp,c37104630.desfilter,tp,0,LOCATION_ONFIELD,1,1,nil) local g=Duel.SelectTarget(tp,c37104630.desfilter,tp,0,LOCATION_ONFIELD,1,1,nil)
Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0)
......
...@@ -25,7 +25,7 @@ function c69293721.filter(c,e,tp) ...@@ -25,7 +25,7 @@ function c69293721.filter(c,e,tp)
end end
function c69293721.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function c69293721.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c69293721.filter(chkc,e,tp) end if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c69293721.filter(chkc,e,tp) end
if chk==0 then return not e:GetHandler():IsLocation(LOCATION_HAND+LOCATION_DECK) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.IsExistingTarget(c69293721.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end and Duel.IsExistingTarget(c69293721.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectTarget(tp,c69293721.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) local g=Duel.SelectTarget(tp,c69293721.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp)
......
...@@ -51,7 +51,7 @@ function c706925.desfilter(c) ...@@ -51,7 +51,7 @@ function c706925.desfilter(c)
end end
function c706925.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function c706925.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and c706925.desfilter(chkc) end if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and c706925.desfilter(chkc) end
if chk==0 then return not e:GetHandler():IsLocation(LOCATION_HAND+LOCATION_DECK) end if chk==0 then return true end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY)
local g=Duel.SelectTarget(tp,c706925.desfilter,tp,0,LOCATION_ONFIELD,1,1,nil) local g=Duel.SelectTarget(tp,c706925.desfilter,tp,0,LOCATION_ONFIELD,1,1,nil)
Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0)
......
...@@ -30,7 +30,7 @@ function c74311226.thfilter(c) ...@@ -30,7 +30,7 @@ function c74311226.thfilter(c)
return not c:IsCode(74311226) and c:IsRace(RACE_SEASERPENT) and c:IsAbleToHand() return not c:IsCode(74311226) and c:IsRace(RACE_SEASERPENT) and c:IsAbleToHand()
end end
function c74311226.thtg(e,tp,eg,ep,ev,re,r,rp,chk) function c74311226.thtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return not e:GetHandler():IsLocation(LOCATION_HAND+LOCATION_DECK) end if chk==0 then return true end
Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK)
end end
function c74311226.thop(e,tp,eg,ep,ev,re,r,rp,c) function c74311226.thop(e,tp,eg,ep,ev,re,r,rp,c)
......
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