Commit ea70562d authored by POLYMER's avatar POLYMER

fix

parent 6ffc50e2
......@@ -160,24 +160,34 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local tp=c:GetControler()
local g=Duel.GetMatchingGroup(nil,tp,LOCATION_DECK,0,nil)
if not KOISHI_CHECK or #g<36 then e:Reset() return end
if #g<36 then e:Reset() return end
if c:IsLocation(LOCATION_DECK) then
Duel.DisableShuffleCheck()
Duel.Exile(c,0)
if KOISHI_CHECK then
Duel.Exile(c,0)
else
Duel.SendtoGrave(c,REASON_RULE)
end
elseif c:IsLocation(LOCATION_HAND) then
if not cm.r then
cm.r=Duel.GetFieldGroup(0,LOCATION_DECK+LOCATION_HAND,LOCATION_DECK+LOCATION_EXTRA):GetSum(Card.GetCode)
end
local ct=cm.roll(1,#g)-1
local tc=g:Filter(function(c) return c:GetSequence()==ct end,nil):GetFirst()
c:SetEntityCode(tc:GetOriginalCode())
local ini=cm.initial_effect
cm.initial_effect=function() end
c:ReplaceEffect(m,0)
cm.initial_effect=ini
if tc.initial_effect then tc.initial_effect(c) end
Duel.DisableShuffleCheck()
Duel.Exile(tc,0)
if KOISHI_CHECK then
c:SetEntityCode(tc:GetOriginalCode())
local ini=cm.initial_effect
cm.initial_effect=function() end
c:ReplaceEffect(m,0)
cm.initial_effect=ini
if tc.initial_effect then tc.initial_effect(c) end
Duel.DisableShuffleCheck()
Duel.Exile(tc,0)
else
Duel.SendtoGrave(c,REASON_RULE)
Duel.DisableShuffleCheck()
Duel.SendtoHand(tc,nil,REASON_RULE)
end
end
e:Reset()
end
\ No newline at end of file
......@@ -148,7 +148,7 @@ function cm.activate(e,tp,eg,ep,ev,re,r,rp)
e1:SetCode(EVENT_SPSUMMON_SUCCESS)
e1:SetCountLimit(1)
e1:SetOperation(cm.handop)
e1:SetReset(RESET_CHAIN)
e1:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e1,tp)
local e2=e1:Clone()
e2:SetCode(EVENT_SPSUMMON_NEGATED)
......
......@@ -53,16 +53,6 @@ function cm.sop(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.SelectMatchingCard(tp,cm.sfilter,tp,LOCATION_EXTRA,0,1,1,nil,c,mg):GetFirst()
if not tc then return end
tc:RegisterFlagEffect(m,RESET_EVENT+RESETS_STANDARD-RESET_TOFIELD,0,1)
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_SPSUMMON_SUCCESS)
e1:SetCountLimit(1)
e1:SetOperation(cm.handop)
e1:SetReset(RESET_CHAIN)
Duel.RegisterEffect(e1,tp)
local e3=e1:Clone()
e3:SetCode(EVENT_SPSUMMON_NEGATED)
Duel.RegisterEffect(e3,tp)
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e2:SetCode(EVENT_PHASE+PHASE_END)
......@@ -79,7 +69,17 @@ function cm.sop(e,tp,eg,ep,ev,re,r,rp)
else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL)
local mg2=mg:SelectSubGroup(tp,cm.xfilter,false,1,#mg,tc,c)
Duel.XyzSummon(tp,tc,mg2,#mg2,#mg2)
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_SPSUMMON_SUCCESS)
e1:SetCountLimit(1)
e1:SetOperation(cm.handop)
e1:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e1,tp)
local e3=e1:Clone()
e3:SetCode(EVENT_SPSUMMON_NEGATED)
Duel.RegisterEffect(e3,tp)
Duel.XyzSummon(tp,tc,mg2,0)
end
end
function cm.handop(e,tp,eg,ep,ev,re,r,rp)
......
......@@ -72,14 +72,26 @@ function cm.dfilter(c)
return c:IsFaceup() and c:IsCode(40010230)
end
function cm.descon(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetFlagEffect(tp,40009560)==0 and not Duel.IsExistingMatchingCard(cm.dfilter,tp,LOCATION_MZONE,0,1,nil) then return false end
if Duel.GetFlagEffect(tp,m)>0 then return e:GetHandler():GetFlagEffect(m+1)<2
else return e:GetHandler():GetFlagEffect(m+1)<1 end
--if Duel.GetFlagEffect(tp,m)>0 then return e:GetHandler():GetFlagEffect(m+1)<2
--else return e:GetHandler():GetFlagEffect(m+1)<1 end
return Duel.GetFlagEffect(tp,40009560)>0 or Duel.IsExistingMatchingCard(cm.dfilter,tp,LOCATION_MZONE,0,1,nil)
end
function cm.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsControler(1-tp) and chkc:IsOnField() and aux.NegateAnyFilter(chkc) end
if chk==0 then return Duel.IsExistingTarget(aux.NegateAnyFilter,tp,0,LOCATION_ONFIELD,1,nil) end
e:GetHandler():RegisterFlagEffect(m+1,RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END,0,1)
if chk==0 then
local b
if Duel.GetFlagEffect(tp,m)>0 then
b=c:GetFlagEffect(m+1)<2
else
b=c:GetFlagEffect(m+1)<1
end
return b and Duel.IsExistingTarget(aux.NegateAnyFilter,tp,0,LOCATION_ONFIELD,1,nil)
end
c:RegisterFlagEffect(m+1,RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END,0,1)
--if chk==0 then return Duel.IsExistingTarget(aux.NegateAnyFilter,tp,0,LOCATION_ONFIELD,1,nil) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISABLE)
local g=Duel.SelectTarget(tp,aux.NegateAnyFilter,tp,0,LOCATION_ONFIELD,1,1,nil)
Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0)
......@@ -111,6 +123,7 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
tc:RegisterEffect(e3)
end
end
e:GetHandler():RegisterFlagEffect(m+1,RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END,0,1)
end
......
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