Commit fdd6be87 authored by VanillaSalt's avatar VanillaSalt

fix

parent 7abe2778
......@@ -35,7 +35,8 @@ function c29087919.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
local maxg,maxc=exg:GetMaxGroup(c29087919.xyzct)
if ct>mct then ct=mct end
if ct>maxc then ct=maxc end
if chk==0 then return ct>1 and Duel.IsExistingMatchingCard(c29087919.xyzfilter,tp,LOCATION_EXTRA,0,1,nil,mg,ct) end
if chk==0 then return Duel.IsPlayerCanSpecialSummonCount(tp,2)
and ct>1 and Duel.IsExistingMatchingCard(c29087919.xyzfilter,tp,LOCATION_EXTRA,0,1,nil,mg,ct) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local sg1=mg:FilterSelect(tp,c29087919.mfilter1,1,1,nil,exg)
local tc1=sg1:GetFirst()
......
......@@ -51,13 +51,13 @@ end
c45627618.pendulum_level=7
function c45627618.pctg(e,tp,eg,ep,ev,re,r,rp,chk)
local seq=e:GetHandler():GetSequence()
if chk==0 then return Duel.CheckLocation(tp,LOCATION_SZONE,13-seq)==true
if chk==0 then return Duel.CheckLocation(tp,LOCATION_SZONE,13-seq)
and Duel.IsExistingMatchingCard(Card.IsType,tp,LOCATION_DECK,0,1,nil,TYPE_PENDULUM) end
end
function c45627618.pcop(e,tp,eg,ep,ev,re,r,rp)
if not e:GetHandler():IsRelateToEffect(e) then return end
local seq=e:GetHandler():GetSequence()
if Duel.CheckLocation(tp,LOCATION_SZONE,13-seq)==false then return end
if not Duel.CheckLocation(tp,LOCATION_SZONE,13-seq) then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD)
local g=Duel.SelectMatchingCard(tp,Card.IsType,tp,LOCATION_DECK,0,1,1,nil,TYPE_PENDULUM)
if g:GetCount()>0 then
......
......@@ -96,68 +96,6 @@ function c82734805.op(e,tp,eg,ep,ev,re,r,rp)
Duel.SendtoGrave(g1,REASON_EFFECT)
end
end
--[[function c82734805.extg(tp)
return Duel.IsExistingMatchingCard(Card.IsAbleToGrave,tp,LOCATION_EXTRA,0,3,nil)
and Duel.IsExistingMatchingCard(Card.IsAbleToGrave,tp,0,LOCATION_EXTRA,3,nil)
Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,6,PLAYER_ALL,LOCATION_EXTRA)
end
function c82734805.exop(e,tp,eg,ep,ev,re,r,rp)
local g1=Duel.GetMatchingGroup(Card.IsAbleToGrave,tp,LOCATION_EXTRA,0,nil)
local sg1=nil
if g1:GetCount()>=3 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
sg1=g1:Select(tp,3,3,nil)
else sg1=g1 end
local g2=Duel.GetMatchingGroup(Card.IsAbleToGrave,tp,0,LOCATION_EXTRA,nil)
local sg2=nil
if g2:GetCount()>=3 then
Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_TOGRAVE)
sg2=g2:Select(1-tp,3,3,nil)
else sg2=g2 end
sg1:Merge(sg2)
if sg1:GetCount()>0 then
Duel.SendtoGrave(sg1,REASON_EFFECT)
end
end
function c82734805.decktg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,3) and Duel.IsPlayerCanDiscardDeck(1-tp,3) end
Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,PLAYER_ALL,6)
end
function c82734805.deckop(e,tp,eg,ep,ev,re,r,rp)
Duel.DiscardDeck(tp,3,REASON_EFFECT)
Duel.DiscardDeck(1-tp,3,REASON_EFFECT)
end
function c82734805.rettg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_REMOVED,0,1,nil) and Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_REMOVED,1,nil) end
Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,2,PLAYER_ALL,LOCATION_REMOVED)
end
function c82734805.retop(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g1=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,LOCATION_REMOVED,0,1,3,nil)
Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_TOGRAVE)
local g2=Duel.SelectMatchingCard(1-tp,Card.IsFaceup,1-tp,LOCATION_REMOVED,0,1,3,nil)
g1:Merge(g2)
if g1:GetCount()>0 then
Duel.SendtoGrave(g1,REASON_EFFECT+REASON_RETURN)
end
end
function c82734805.handtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_HAND,LOCATION_HAND)>0 end
if Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)==0 then
Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,1-tp,0)
Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,1-tp,LOCATION_HAND)
elseif Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)==0 then
Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,tp,0)
Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_HAND)
else
Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,PLAYER_ALL,0)
Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,PLAYER_ALL,LOCATION_HAND)
end
end
function c82734805.handop(e,tp,eg,ep,ev,re,r,rp)
local g1=Duel.GetFieldGroup(tp,LOCATION_HAND,LOCATION_HAND)
Duel.SendtoGrave(g1,REASON_EFFECT)
end--]]
function c82734805.fcfilter1(c,code1,code2,g)
local code=c:GetCode()
return (code==code1 or code==code2) and g:IsExists(Card.IsSetCard,1,c,0xbb)
......@@ -169,183 +107,142 @@ function c82734805.fcfilter3(c,g)
return ((c:IsCode(14799437) or c:IsHasEffect(EFFECT_FUSION_SUBSTITUTE)) and g:IsExists(Card.IsCode,1,c,23440231))
or ((c:IsCode(23440231) or c:IsHasEffect(EFFECT_FUSION_SUBSTITUTE)) and g:IsExists(Card.IsCode,1,c,14799437))
end
function c82734805.fcfilter4(c,code)
return c:IsCode(code) or c:IsHasEffect(EFFECT_FUSION_SUBSTITUTE)
end
function c82734805.fcfilter5(c,g,ct)
if c:IsSetCard(0xbb) then ct=ct-1 end
if c:IsCode(14799437) then
return g:IsExists(c82734805.fcfilter6,1,c,g,ct,true)
elseif c:IsHasEffect(EFFECT_FUSION_SUBSTITUTE) then
return g:IsExists(c82734805.fcfilter6,1,c,g,ct,false)
else
return false
end
end
function c82734805.fcfilter6(c,g,ct,sub)
if c:IsSetCard(0xbb) then ct=ct-1 end
return ct>0 and (c:IsCode(23440231) or (sub and c:IsHasEffect(EFFECT_FUSION_SUBSTITUTE)))
end
function c82734805.fcfilter7(c,chkf)
return aux.FConditionCheckF(tc,chkf) and (c:IsSetCard(0xbb) or c:IsHasEffect(EFFECT_FUSION_SUBSTITUTE))
end
function c82734805.fscon(e,g,gc,chkf)
if g==nil then return true end
if gc then
local mg=g:Clone()
mg:RemoveCard(gc)
if gc:IsHasEffect(EFFECT_FUSION_SUBSTITUTE) then
return g:IsExists(c82734805.fcfilter1,1,gc,14799437,23440231,g)
return mg:IsExists(c82734805.fcfilter1,1,nil,14799437,23440231,mg)
elseif gc:IsCode(14799437) then
return g:IsExists(c82734805.fcfilter2,1,gc,23440231,g)
return mg:IsExists(c82734805.fcfilter2,1,nil,23440231,mg)
elseif gc:IsCode(23440231) then
return g:IsExists(c82734805.fcfilter2,1,gc,14799437,g)
return mg:IsExists(c82734805.fcfilter2,1,nil,14799437,mg)
elseif gc:IsSetCard(0xbb) then
return g:IsExists(c82734805.fcfilter3,1,gc,g)
return mg:IsExists(c82734805.fcfilter3,1,nil,mg)
else
return false
end
end
local b1=0 local b2=0 local bs=0
local g1=Group.CreateGroup() local g2=Group.CreateGroup() local fs=false
local b1=0 local b2=0 local b3=0 local bs=0
local fs=false
local tc=g:GetFirst()
while tc do
if tc:IsCode(14799437) then
b1=1 g1:AddCard(tc) if aux.FConditionCheckF(tc,chkf) then fs=true end end
if tc:IsCode(23440231) then
b2=1 g1:AddCard(tc) if aux.FConditionCheckF(tc,chkf) then fs=true end end
if tc:IsHasEffect(EFFECT_FUSION_SUBSTITUTE) then
bs=1 g1:AddCard(tc) if aux.FConditionCheckF(tc,chkf) then fs=true end end
if tc:IsSetCard(0xbb) then
g2:AddCard(tc) if aux.FConditionCheckF(tc,chkf) then fs=true end end
bs=1 if aux.FConditionCheckF(tc,chkf) then fs=true end
elseif tc:IsCode(14799437) then
if b1==0 then b1=1 else b3=1 end if aux.FConditionCheckF(tc,chkf) then fs=true end
elseif tc:IsCode(23440231) then
if b2==0 then b2=1 else b3=1 end if aux.FConditionCheckF(tc,chkf) then fs=true end
elseif tc:IsSetCard(0xbb) then
b3=1 if aux.FConditionCheckF(tc,chkf) then fs=true end
end
tc=g:GetNext()
end
if chkf~=PLAYER_NONE then
return fs and b1+b2+bs>=2 and g2:GetCount()>=3-bs
return fs and b1+b2+bs>=2 and b3>=1
else
return b1+b2+bs>=2 and g2:GetCount()>=3-bs
return b1+b2+bs>=2 and b3>=1
end
end
function c82734805.fsop(e,tp,eg,ep,ev,re,r,rp,gc,chkf)
local g1=Group.CreateGroup()
if not gc and chkf~=PLAYER_NONE then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
gc=eg:FilterSelect(tp,c82734805.fcfilter7,1,1,nil,chkf):GetFirst()
g1:AddCard(gc)
end
local mg=eg:Clone()
mg:RemoveCard(gc)
local ok=false
if gc then
local sg=eg local g1=nil local g2=nil local g3=nil
if gc:IsHasEffect(EFFECT_FUSION_SUBSTITUTE) then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
g1=eg:FilterSelect(tp,aux.FConditionFilter21,1,1,gc,14799437,23440231)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
g2=eg:FilterSelect(tp,Card.IsSetCard,1,99,g1:GetFirst(),0xbb)
g1:Merge(g2)
Duel.SetFusionMaterial(g1)
return
local sg=mg:FilterSelect(tp,c82734805.fcfilter1,1,1,nil,14799437,23440231,mg)
g1:Merge(sg)
elseif gc:IsCode(14799437) then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
g1=eg:FilterSelect(tp,Card.IsCode,1,1,gc,23440231)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
g2=eg:FilterSelect(tp,Card.IsSetCard,1,99,g1:GetFirst(),0xbb)
g1:Merge(g2)
Duel.SetFusionMaterial(g1)
return
local sg=mg:FilterSelect(tp,c82734805.fcfilter2,1,1,nil,23440231,mg)
g1:Merge(sg)
elseif gc:IsCode(23440231) then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
g1=eg:FilterSelect(tp,Card.IsCode,1,1,gc,14799437)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
g2=eg:FilterSelect(tp,Card.IsSetCard,1,99,g1:GetFirst(),0xbb)
g1:Merge(g2)
Duel.SetFusionMaterial(g1)
return
local sg=mg:FilterSelect(tp,c82734805.fcfilter2,1,1,nil,14799437,mg)
g1:Merge(sg)
elseif gc:IsSetCard(0xbb) then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
g1=sg:FilterSelect(tp,aux.FConditionFilter21,1,1,gc,14799437,23440231)
local code1=g1:GetCode() local code2=nil
if code1==14799437 then code2=23440231 else code2=14799437 end
local sg=mg:FilterSelect(tp,c82734805.fcfilter3,1,1,nil,14799437,23440231,mg)
g1:Merge(sg)
local tc1=sg:GetFirst()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
g2=sg:FilterSelect(tp,Card.IsCode,1,1,gc,code2)
g1:Merge(g2)
sg:Sub(g1)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
g3=sg:FilterSelect(tp,Card.IsSetCard,1,99,nil,0xbb)
g1:Merge(g3)
Duel.SetFusionMaterial(g1)
return
end
end
local sg1=Group.CreateGroup() local sg2=Group.CreateGroup() local fs=false
local tc=eg:GetFirst()
while tc do
if tc:IsCode(14799437) or tc:IsCode(23440231) or tc:IsHasEffect(EFFECT_FUSION_SUBSTITUTE) then sg1:AddCard(tc) end
if tc:IsSetCard(0xbb) then sg2:AddCard(tc) if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end end
tc=eg:GetNext()
end
local g1=nil local g2=nil local g3=nil local g4=nil
if chkf~=PLAYER_NONE then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
if fs then g1=sg1:Select(tp,1,1,nil)
else g1=sg1:FilterSelect(tp,Auxiliary.FConditionCheckF,1,1,nil,chkf) end
local tc1=g1:GetFirst()
if tc1:IsHasEffect(EFFECT_FUSION_SUBSTITUTE) then
sg1:Remove(Card.IsHasEffect,nil,EFFECT_FUSION_SUBSTITUTE)
else sg1:Remove(Card.IsCode,nil,tc1:GetCode()) end
sg2:RemoveCard(tc1)
if Auxiliary.FConditionCheckF(tc1,chkf) or fs then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
g2=sg1:Select(tp,1,1,nil)
else g2=sg1:FilterSelect(tp,Auxiliary.FConditionCheckF,1,1,nil,chkf) end
g1:Merge(g2)
local tc2=g2:GetFirst()
sg2:RemoveCard(tc2)
if aux.FConditionCheckF(tc1,chkf) or aux.FConditionCheckF(tc2,chkf) then
if e:GetHandler():GetFlagEffect(31444249)~=0 and Duel.SelectYesNo(tp,aux.Stringid(31444249,0)) then
local dsg2=sg2:Filter(Card.IsLocation,nil,LOCATION_DECK)
sg2:Sub(dsg2)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
g3=dsg2:Select(tp,1,6-g1:FilterCount(Card.IsLocation,nil,LOCATION_DECK),nil)
g1:Merge(g3)
if sg2:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(31444249,1)) then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
g4=sg2:Select(tp,1,99,nil)
g1:Merge(g4)
end
if tc1:IsCode(14799437) then
local sg=mg:FilterSelect(tp,c82734805.fcfilter4,1,1,nil,23440231)
g1:Merge(sg)
elseif tc1:IsCode(23440231) then
local sg=mg:FilterSelect(tp,c82734805.fcfilter4,1,1,nil,14799437)
g1:Merge(sg)
else
if e:GetHandler():GetFlagEffect(31444249)~=0 then
sg2:Remove(Card.IsLocation,nil,LOCATION_DECK)
end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
g3=sg2:Select(tp,1,99,nil)
g1:Merge(g3)
end
else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
g3=sg2:FilterSelect(tp,aux.FConditionCheckF,1,1,nil,chkf)
g1:Merge(g3)
sg2:RemoveCard(g3:GetFirst())
if e:GetHandler():GetFlagEffect(31444249)~=0 and Duel.SelectYesNo(tp,aux.Stringid(31444249,0)) then
local dsg2=sg2:Filter(Card.IsLocation,nil,LOCATION_DECK)
sg2:Sub(dsg2)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
g4=dsg2:Select(tp,1,6-g1:FilterCount(Card.IsLocation,nil,LOCATION_DECK),nil)
g1:Merge(g4)
if sg2:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(31444249,1)) then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local g5=sg2:Select(tp,1,99,nil)
g1:Merge(g5)
end
else
if e:GetHandler():GetFlagEffect(31444249)~=0 then
sg2:Remove(Card.IsLocation,nil,LOCATION_DECK)
end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
g4=sg2:Select(tp,1,99,nil)
g1:Merge(g4)
local sg=mg:FilterSelect(tp,aux.FConditionFilter21,1,1,nil,14799437,23440231)
g1:Merge(sg)
end
ok=true
end
Duel.SetFusionMaterial(g1)
else
local ct=mg:FilterCount(Card.IsSetCard,nil,0xbb)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
g1=sg1:Select(tp,1,1,nil)
g1=mg:FilterSelect(tp,c82734805.fcfilter5,1,1,nil,mg,ct)
local tc1=g1:GetFirst()
if tc1:IsHasEffect(EFFECT_FUSION_SUBSTITUTE) then
sg1:Remove(Card.IsHasEffect,nil,EFFECT_FUSION_SUBSTITUTE)
else sg1:Remove(Card.IsCode,nil,tc1:GetCode()) end
sg2:RemoveCard(tc1)
if tc1:IsSetCard(0xbb) then ct=ct-1 end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
g2=sg1:Select(tp,1,1,nil)
sg2:RemoveCard(g2:GetFirst())
g1:Merge(g2)
if e:GetHandler():GetFlagEffect(31444249)~=0 and Duel.SelectYesNo(tp,aux.Stringid(31444249,0)) then
local dsg2=sg2:Filter(Card.IsLocation,nil,LOCATION_DECK)
sg2:Sub(dsg2)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
g3=dsg2:Select(tp,1,6-g1:FilterCount(Card.IsLocation,nil,LOCATION_DECK),nil)
g1:Merge(g3)
if sg2:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(31444249,1)) then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
g4=sg2:Select(tp,1,99,nil)
g1:Merge(g4)
end
if tc1:IsCode(14799437) then
local sg=mg:FilterSelect(tp,c82734805.fcfilter6,1,1,tc1,mg,ct,true)
g1:Merge(sg)
else
if e:GetHandler():GetFlagEffect(31444249)~=0 then
sg2:Remove(Card.IsLocation,nil,LOCATION_DECK)
end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
g3=sg2:Select(tp,1,99,nil)
g1:Merge(g3)
local sg=mg:FilterSelect(tp,c82734805.fcfilter6,1,1,tc1,mg,ct,false)
g1:Merge(sg)
end
end
mg:Sub(g1)
mg=mg:Filter(Card.IsSetCard,nil,0xbb)
if mg:GetCount()==0 or (ok and not Duel.SelectYesNo(tp,93)) then
Duel.SetFusionMaterial(g1)
return
end
ok=false
local dmg=mg:Filter(Card.IsLocation,nil,LOCATION_DECK)
if dmg:GetCount()>0 and e:GetHandler():GetFlagEffect(31444249)~=0 and Duel.SelectYesNo(tp,aux.Stringid(31444249,0)) then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local sg=dmg:Select(tp,1,6-g1:FilterCount(Card.IsLocation,nil,LOCATION_DECK),nil)
g1:Merge(sg)
ok=true
end
mg:Remove(Card.IsLocation,nil,LOCATION_DECK)
if mg:GetCount()==0 or (ok and not Duel.SelectYesNo(tp,93)) then
Duel.SetFusionMaterial(g1)
return
end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local sg=mg:Select(tp,1,99,nil)
g1:Merge(sg)
Duel.SetFusionMaterial(g1)
return
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