Commit 335dd5ef authored by Huangnan's avatar Huangnan

fix

parent ac10d592
No preview for this file type
...@@ -3,7 +3,7 @@ local s,id,o=GetID() ...@@ -3,7 +3,7 @@ local s,id,o=GetID()
function s.initial_effect(c) function s.initial_effect(c)
aux.AddCodeList(c,12400119) aux.AddCodeList(c,12400119)
--xyz summon --xyz summon
aux.AddXyzProcedure(c,nil,7,3,s.ovfilter,aux.Stringid(id,0),3,s.xyzop) aux.AddXyzProcedure(c,nil,7,2,s.ovfilter,aux.Stringid(id,0),2,s.xyzop)
c:EnableReviveLimit() c:EnableReviveLimit()
--ov --ov
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
...@@ -73,7 +73,7 @@ function s.ovfilter2(c,e) ...@@ -73,7 +73,7 @@ function s.ovfilter2(c,e)
return c:IsCanOverlay() and not (e and c:IsImmuneToEffect(e)) return c:IsCanOverlay() and not (e and c:IsImmuneToEffect(e))
end end
function s.ovfilter3(c) function s.ovfilter3(c)
return c:IsCanOverlay() and c:IsFaceupEx() and (c:IsSetCard(0xaf1b) or aux.IsCodeListed(c,12400119)) return c:IsCanOverlay() and c:IsSetCard(0x62a2,0xaf1b) and c:IsFaceupEx()
end end
function s.ovtg(e,tp,eg,ep,ev,re,r,rp,chk) function s.ovtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsType(TYPE_XYZ) and if chk==0 then return e:GetHandler():IsType(TYPE_XYZ) and
...@@ -100,10 +100,9 @@ function s.ovop(e,tp,eg,ep,ev,re,r,rp) ...@@ -100,10 +100,9 @@ function s.ovop(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_OPERATECARD) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_OPERATECARD)
local sg1=g1:Select(tp,1,1,nil) local sg1=g1:Select(tp,1,1,nil)
local g2=Duel.GetMatchingGroup(aux.NecroValleyFilter(s.ovfilter3),tp,LOCATION_GRAVE+LOCATION_REMOVED,0,nil) local g2=Duel.GetMatchingGroup(aux.NecroValleyFilter(s.ovfilter3),tp,LOCATION_GRAVE+LOCATION_REMOVED,0,nil)
Duel.Overlay(c,sg1) if Duel.Overlay(c,sg1) and #g2>0 and Duel.SelectYesNo(tp,aux.Stringid(id,2)) then
if #g2>0 and Duel.SelectYesNo(tp,aux.Stringid(id,2)) then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_OPERATECARD) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_OPERATECARD)
local sg2=g2:Select(tp,1,1,nil) local sg2=g2:Select(tp,1,2,nil)
Duel.Overlay(c,sg2) Duel.Overlay(c,sg2)
end end
end end
......
...@@ -26,20 +26,14 @@ function s.initial_effect(c) ...@@ -26,20 +26,14 @@ function s.initial_effect(c)
e3:SetCode(EVENT_REMOVE) e3:SetCode(EVENT_REMOVE)
c:RegisterEffect(e3) c:RegisterEffect(e3)
end end
function s.costfilter(c,tp)
return c:IsFaceup() and c:IsCode(12869000)
end
function s.cost(e,tp,eg,ep,ev,re,r,rp,chk) function s.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.CheckReleaseGroup(tp,s.costfilter,1,nil,tp) end if chk==0 then return Duel.CheckReleaseGroup(tp,s.costfilter,1,nil,e,tp) end
local g=Duel.SelectReleaseGroup(tp,s.costfilter,1,1,nil,tp) local g=Duel.SelectReleaseGroup(tp,s.costfilter,1,1,nil,e,tp)
Duel.Release(g,REASON_COST) Duel.Release(g,REASON_COST)
end end
function s.spfilter1(c,e,tp) function s.spfilter1(c,e,tp)
return c:IsSetCard(0x6a70) and c:IsLevelAbove(1) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) return c:IsSetCard(0x6a70) and c:IsLevelAbove(1) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end end
function s.spfilter2(c,e,tp)
return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsLevel(0) and c:IsSetCard(0x6a70)
end
function s.fselect1(g,tp) function s.fselect1(g,tp)
return Duel.IsExistingMatchingCard(s.lkfilter,tp,LOCATION_EXTRA,0,1,nil,g) return Duel.IsExistingMatchingCard(s.lkfilter,tp,LOCATION_EXTRA,0,1,nil,g)
end end
...@@ -49,36 +43,52 @@ end ...@@ -49,36 +43,52 @@ end
function s.lkfilter(c,g) function s.lkfilter(c,g)
return c:IsLinkSummonable(g,nil,g:GetCount(),g:GetCount()) return c:IsLinkSummonable(g,nil,g:GetCount(),g:GetCount())
end end
function s.synfilter(c,mg)
return c:IsSynchroSummonable(nil)
--return c:IsSynchroSummonable(nil,mg,mg:GetCount(),mg:GetCount())
end
function s.chkfilter1(c,tp) function s.chkfilter1(c,tp)
return c:IsType(TYPE_LINK) and Duel.GetLocationCountFromEx(tp,tp,nil,c)>0 return c:IsType(TYPE_LINK) and Duel.GetLocationCountFromEx(tp,tp,nil,c)>0
end end
function s.chkfilter2(c,tp) function s.chkfilter2(c,tp)
return c:IsType(TYPE_LINK) and Duel.GetLocationCountFromEx(tp,tp,nil,c)>0 return c:IsType(TYPE_LINK) and Duel.GetLocationCountFromEx(tp,tp,nil,c)>0
end end
function s.linkcheck(c,g,tc)
return c:IsLinkSummonable(g,nil,g:GetCount(),g:GetCount()) and Duel.GetLocationCountFromEx(tp,tp,tc,c)>0
end
function s.syncheck(c,g)
return c:IsSynchroSummonable(g,nil,g:GetCount()-1,g:GetCount()-1) and Duel.GetLocationCountFromEx(tp,tp,nil,c)>0
end
function s.spcheck(g,tp,tc)
return Duel.GetMZoneCount(tp,tc,tp)>=g:GetCount() and Duel.IsExistingMatchingCard(s.linkcheck,tp,LOCATION_EXTRA,0,1,nil,g,tc)
end
function s.spchk(c,e,tp)
return c:IsFaceupEx() and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsSetCard(0x6a70) and c:IsLevelAbove(1)
end
function s.spchk2(c,e,tp)
return c:IsFaceupEx() and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsLevel(0) and c:IsSetCard(0x6a70)
end
function s.costchecklink(c,e,tp,tc)
local g=Duel.GetMatchingGroup(s.spchk,tp,LOCATION_REMOVED+LOCATION_GRAVE,0,nil,e,tp)
return c:IsCode(12869000) and g and g:CheckSubGroup(s.spcheck,1,#g,tp,c)
end
function s.costfilter(c,e,tp)
return s.costchecklink(c,e,tp) or s.costchecksynchro(c,e,tp)
end
function s.costchecksynchro(c,e,tp)
return c:IsCode(12869000) and Duel.GetMZoneCount(tp,c,tp)>1
end
function s.target(e,tp,eg,ep,ev,re,r,rp,chk) function s.target(e,tp,eg,ep,ev,re,r,rp,chk)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
if chk==0 then ft=ft+1 end
if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end
local b1=false local g=Duel.GetMatchingGroup(s.spchk,tp,LOCATION_REMOVED+LOCATION_GRAVE,0,nil,e,tp)
local b2=false local g2=Duel.GetMatchingGroup(s.spchk2,tp,LOCATION_REMOVED+LOCATION_GRAVE,0,nil,e,tp)
local cg1=Duel.GetMatchingGroup(s.chkfilter1,tp,LOCATION_EXTRA,0,nil,tp) local b1=g:CheckSubGroup(s.spcheck,1,ft,tp,nil)
if #cg1>0 then local b2=ft>0 and g2:GetCount()>1
local _,maxlink=cg1:GetMaxGroup(Card.GetLink) local b3=ft>1 and g2:GetCount()>1
if maxlink>ft then maxlink=ft end
local g1=Duel.GetMatchingGroup(s.spfilter1,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,nil,e,tp)
b1=g1:CheckSubGroup(s.fselect1,1,maxlink,tp)
end
local g2=Duel.GetMatchingGroup(s.spfilter2,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,nil,e,tp)
b2=g2:GetCount()>=2 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0
if chk==0 then if chk==0 then
if not Duel.IsPlayerCanSpecialSummonCount(tp,2) then return false end if e:IsCostChecked() then
if ft<=0 then return false end return b1 or b2
return b1 or b2 else
end return b1 or b3
end
end
local op=aux.SelectFromOptions(tp, local op=aux.SelectFromOptions(tp,
{b1,aux.Stringid(id,1)}, {b1,aux.Stringid(id,1)},
{b2,aux.Stringid(id,2)}) {b2,aux.Stringid(id,2)})
...@@ -119,31 +129,19 @@ function s.activate(e,tp,eg,ep,ev,re,r,rp) ...@@ -119,31 +129,19 @@ function s.activate(e,tp,eg,ep,ev,re,r,rp)
end end
end end
elseif op==2 then elseif op==2 then
local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(s.spfilter2),tp,LOCATION_GRAVE+LOCATION_REMOVED,0,2,2,nil,e,tp) local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(s.spchk2),tp,LOCATION_GRAVE+LOCATION_REMOVED,0,2,2,nil,e,tp)
for tc in aux.Next(g) do for tc in aux.Next(g) do
Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP)
end end
Duel.SpecialSummonComplete() Duel.SpecialSummonComplete()
local og=Duel.GetOperatedGroup()
og:KeepAlive()
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL)
e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_IMMUNE)
e1:SetTargetRange(0xff,0xff)
e1:SetTarget(s.synlimit)
e1:SetLabelObject(og)
e1:SetValue(1)
e1:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e1,tp)
Duel.AdjustAll() Duel.AdjustAll()
local og=Duel.GetOperatedGroup()
if og:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)<g:GetCount() then return end if og:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)<g:GetCount() then return end
local tg=Duel.GetMatchingGroup(s.synfilter,tp,LOCATION_EXTRA,0,nil,og) local tg=Duel.GetMatchingGroup(s.syncheck,tp,LOCATION_EXTRA,0,nil,og)
if og:GetCount()==g:GetCount() and tg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(id,3)) then if og:GetCount()==g:GetCount() and tg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(id,3)) then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local rg=tg:Select(tp,1,1,nil) local rg=tg:Select(tp,1,1,nil)
Duel.SynchroSummon(tp,rg:GetFirst(),nil,og) Duel.SynchroSummon(tp,rg:GetFirst(),nil,rg)
--Duel.SynchroSummon(tp,rg:GetFirst(),nil,og,#og,#og)
end end
e1:Reset() e1:Reset()
end end
...@@ -154,13 +152,11 @@ end ...@@ -154,13 +152,11 @@ end
function s.settg(e,tp,eg,ep,ev,re,r,rp,chk) function s.settg(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler() local c=e:GetHandler()
if chk==0 then return c:IsSSetable() end if chk==0 then return c:IsSSetable() end
if c:IsLocation(LOCATION_GRAVE) then Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,c,1,0,0)
Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,c,1,0,0)
end
end end
function s.setop(e,tp,eg,ep,ev,re,r,rp) function s.setop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
if c:IsRelateToEffect(e) and aux.NecroValleyFilter()(c) then Duel.SSet(tp,c) end if c:IsRelateToEffect(e) then Duel.SSet(tp,c) end
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(id,4)) e1:SetDescription(aux.Stringid(id,4))
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
......
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