Commit 333ca51d authored by Huangnan's avatar Huangnan

fix

parent 6e8587c4
Pipeline #42533 passed with stage
in 3 minutes and 26 seconds
...@@ -50,7 +50,7 @@ function c12008023.spop(e,tp,eg,ep,ev,re,r,rp,mg) ...@@ -50,7 +50,7 @@ function c12008023.spop(e,tp,eg,ep,ev,re,r,rp,mg)
Duel.SendtoDeck(td,nil,2,REASON_EFFECT) Duel.SendtoDeck(td,nil,2,REASON_EFFECT)
local tt=Duel.GetOperatedGroup():GetCount() local tt=Duel.GetOperatedGroup():GetCount()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND)
local g=Duel.SelectMatchingCard(tp,c12008023.thfilter2,tp,LOCATION_DECK,0,1,tt,nil) local g=Duel.SelectMatchingCard(tp,c12008023.thfilter2,tp,LOCATION_DECK,0,1,tt+1,nil)
if g:GetCount()>0 then if g:GetCount()>0 then
Duel.SendtoHand(g,nil,REASON_EFFECT) Duel.SendtoHand(g,nil,REASON_EFFECT)
Duel.ConfirmCards(1-tp,g) Duel.ConfirmCards(1-tp,g)
......
...@@ -135,7 +135,7 @@ function s.desop(e,tp,eg,ep,ev,re,r,rp) ...@@ -135,7 +135,7 @@ function s.desop(e,tp,eg,ep,ev,re,r,rp)
end end
end end
function s.descon1(e,tp,eg,ep,ev,re,r,rp) function s.descon1(e,tp,eg,ep,ev,re,r,rp)
return not e:GetLabel()==1 return e:GetLabel()==0
end end
function s.descon2(e,tp,eg,ep,ev,re,r,rp) function s.descon2(e,tp,eg,ep,ev,re,r,rp)
return e:GetLabel()==1 return e:GetLabel()==1
......
...@@ -101,7 +101,7 @@ end ...@@ -101,7 +101,7 @@ end
function s.rmop(e,tp,eg,ep,ev,re,r,rp) function s.rmop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local tc=Duel.GetFirstTarget() local tc=Duel.GetFirstTarget()
if Duel.Remove(tc,0,REASON_EFFECT+REASON_TEMPORARY)~=0 then if tc:IsRelateToEffect(e) and Duel.Remove(tc,0,REASON_EFFECT+REASON_TEMPORARY)~=0 then
if c:IsPreviousLocation(LOCATION_ONFIELD) and Duel.SelectYesNo(tp,aux.Stringid(id,0)) then if c:IsPreviousLocation(LOCATION_ONFIELD) and Duel.SelectYesNo(tp,aux.Stringid(id,0)) then
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(id,2)) e1:SetDescription(aux.Stringid(id,2))
......
...@@ -137,33 +137,27 @@ function s.resetop(e,tp,eg,ep,ev,re,r,rp) ...@@ -137,33 +137,27 @@ function s.resetop(e,tp,eg,ep,ev,re,r,rp)
end end
--五难题 --五难题
function s.quecost(e,tp,eg,ep,ev,re,r,rp,chk) function s.quecost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.CheckReleaseGroup(tp,nil,1,nil) end local atts=Duel.GetFlagEffectLabel(tp,id+1) or 0
local g=Duel.SelectReleaseGroup(tp,nil,1,1,nil) if chk==0 then return Duel.CheckReleaseGroup(tp,s.rmfilter,1,nil,atts) end
e:SetLabel(g:GetFirst():GetAttribute()) local g=Duel.SelectReleaseGroup(tp,s.rmfilter,1,1,nil,atts)
local att=g:GetFirst():GetAttribute()
atts=bit.bor(att,atts)
Duel.ResetFlagEffect(tp,id+1)
Duel.RegisterFlagEffect(tp,id+1,0,0,1,atts)
Duel.Release(g,REASON_COST) Duel.Release(g,REASON_COST)
Duel.PayLPCost(tp,1000) Duel.PayLPCost(tp,1000)
Duel.RegisterFlagEffect(tp,13700777,0,0,1) Duel.RegisterFlagEffect(tp,13700777,0,0,1)
end end
function s.rmlimit(e,c,tp,r,re) function s.rmfilter(c,atts)
return c:IsAttribute(e:GetLabel()) and re and re:IsActiveType(TYPE_MONSTER) and re:GetHandler():IsCode(13700777) and r==REASON_COST return c:GetAttribute()&atts==0
end end
function s.queop(e,tp,eg,ep,ev,re,r,rp) function s.queop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() Duel.ConfirmCards(1-tp,e:GetHandler())
Duel.ConfirmCards(1-tp,c) end
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD) function s.spcon(e,tp,eg,ep,ev,re,r,rp)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e1:SetCode(EFFECT_CANNOT_RELEASE)
e1:SetTargetRange(1,0)
e1:SetTarget(s.rmlimit)
e1:SetLabel(e:GetLabel())
Duel.RegisterEffect(e1,tp)
end
function s.spcon(e)
local tp=e:GetHandler():GetOwner()
return Duel.GetFlagEffect(tp,13700777)>=5 return Duel.GetFlagEffect(tp,13700777)>=5
end end
......
...@@ -41,8 +41,8 @@ end ...@@ -41,8 +41,8 @@ end
function cm.rlcheck(c,tp) function cm.rlcheck(c,tp)
local re_tab={Duel.IsPlayerAffectedByEffect(tp,EFFECT_CANNOT_RELEASE)} local re_tab={Duel.IsPlayerAffectedByEffect(tp,EFFECT_CANNOT_RELEASE)}
for _,ve in ipairs(re_tab) do for _,ve in ipairs(re_tab) do
local val=ve:GetValue() or aux.TRUE local val=ve:GetValue()
if val(ve,c) then if not val or val(ve,c) then
return false return false
end end
end end
......
...@@ -38,8 +38,8 @@ end ...@@ -38,8 +38,8 @@ end
function cm.rlcheck(c,tp) function cm.rlcheck(c,tp)
local re_tab={Duel.IsPlayerAffectedByEffect(tp,EFFECT_CANNOT_RELEASE)} local re_tab={Duel.IsPlayerAffectedByEffect(tp,EFFECT_CANNOT_RELEASE)}
for _,ve in ipairs(re_tab) do for _,ve in ipairs(re_tab) do
local val=ve:GetValue() or aux.TRUE local val=ve:GetValue()
if val(ve,c) then if not val or val(ve,c) then
return false return false
end end
end end
......
...@@ -40,8 +40,8 @@ end ...@@ -40,8 +40,8 @@ end
function cm.rlcheck(c,tp) function cm.rlcheck(c,tp)
local re_tab={Duel.IsPlayerAffectedByEffect(tp,EFFECT_CANNOT_RELEASE)} local re_tab={Duel.IsPlayerAffectedByEffect(tp,EFFECT_CANNOT_RELEASE)}
for _,ve in ipairs(re_tab) do for _,ve in ipairs(re_tab) do
local val=ve:GetValue() or aux.TRUE local val=ve:GetValue()
if val(ve,c) then if not val or val(ve,c) then
return false return false
end end
end end
...@@ -52,8 +52,8 @@ function cm.rlcheck2(c,tp) ...@@ -52,8 +52,8 @@ function cm.rlcheck2(c,tp)
if not c:IsSetCard(0x3cc7) then return false end if not c:IsSetCard(0x3cc7) then return false end
local re_tab={Duel.IsPlayerAffectedByEffect(tp,EFFECT_CANNOT_RELEASE)} local re_tab={Duel.IsPlayerAffectedByEffect(tp,EFFECT_CANNOT_RELEASE)}
for _,ve in ipairs(re_tab) do for _,ve in ipairs(re_tab) do
local val=ve:GetValue() or aux.TRUE local val=ve:GetValue()
if val(ve,c) then if not val or val(ve,c) then
return false return false
end end
end end
......
...@@ -33,7 +33,7 @@ function cm.check_effect_usable(e,te,tp,eg,ep,ev,re,r,rp) ...@@ -33,7 +33,7 @@ function cm.check_effect_usable(e,te,tp,eg,ep,ev,re,r,rp)
else else
local tg=e:GetTarget() or aux.TRUE local tg=e:GetTarget() or aux.TRUE
local op=e:GetOperation() local op=e:GetOperation()
return op~=nil and tg(te,tp,eg,ep,ev,re,r,rp,0) return op~=nil and (not tg or tg(te,tp,eg,ep,ev,re,r,rp,0))
end end
end end
function cm.rlcheck2(c,tp) function cm.rlcheck2(c,tp)
...@@ -41,8 +41,8 @@ function cm.rlcheck2(c,tp) ...@@ -41,8 +41,8 @@ function cm.rlcheck2(c,tp)
if not c:IsSetCard(0x3cc7) or not Duel.IsPlayerAffectedByEffect(tp,16170021) then return false end if not c:IsSetCard(0x3cc7) or not Duel.IsPlayerAffectedByEffect(tp,16170021) then return false end
local re_tab={Duel.IsPlayerAffectedByEffect(tp,EFFECT_CANNOT_RELEASE)} local re_tab={Duel.IsPlayerAffectedByEffect(tp,EFFECT_CANNOT_RELEASE)}
for _,ve in ipairs(re_tab) do for _,ve in ipairs(re_tab) do
local val=ve:GetValue() or aux.TRUE local val=ve:GetValue()
if val(ve,c) then if not val or val(ve,c) then
return false return false
end end
end end
...@@ -53,8 +53,8 @@ function cm.rlcheck(c,tp) ...@@ -53,8 +53,8 @@ function cm.rlcheck(c,tp)
if not c:IsSetCard(0x3cc7) then return false end if not c:IsSetCard(0x3cc7) then return false end
local re_tab={Duel.IsPlayerAffectedByEffect(tp,EFFECT_CANNOT_RELEASE)} local re_tab={Duel.IsPlayerAffectedByEffect(tp,EFFECT_CANNOT_RELEASE)}
for _,ve in ipairs(re_tab) do for _,ve in ipairs(re_tab) do
local val=ve:GetValue() or aux.TRUE local val=ve:GetValue()
if val(ve,c) then if not val or val(ve,c) then
return false return false
end end
end end
......
...@@ -69,8 +69,8 @@ end ...@@ -69,8 +69,8 @@ end
function cm.rlcheck(c,tp) function cm.rlcheck(c,tp)
local re_tab={Duel.IsPlayerAffectedByEffect(tp,EFFECT_CANNOT_RELEASE)} local re_tab={Duel.IsPlayerAffectedByEffect(tp,EFFECT_CANNOT_RELEASE)}
for _,ve in ipairs(re_tab) do for _,ve in ipairs(re_tab) do
local val=ve:GetValue() or aux.TRUE local val=ve:GetValue()
if val(ve,c) then if not val or val(ve,c) then
return false return false
end end
end end
...@@ -90,8 +90,8 @@ function cm.rlcheck2(c,tp) ...@@ -90,8 +90,8 @@ function cm.rlcheck2(c,tp)
if c:IsLocation(LOCATION_DECK) and (not c:IsSetCard(0x3cc7) or not Duel.IsPlayerAffectedByEffect(tp,16170021)) then return false end if c:IsLocation(LOCATION_DECK) and (not c:IsSetCard(0x3cc7) or not Duel.IsPlayerAffectedByEffect(tp,16170021)) then return false end
local re_tab={Duel.IsPlayerAffectedByEffect(tp,EFFECT_CANNOT_RELEASE)} local re_tab={Duel.IsPlayerAffectedByEffect(tp,EFFECT_CANNOT_RELEASE)}
for _,ve in ipairs(re_tab) do for _,ve in ipairs(re_tab) do
local val=ve:GetValue() or aux.TRUE local val=ve:GetValue()
if val(ve,c) then if not val or val(ve,c) then
return false return false
end end
end end
......
...@@ -82,8 +82,8 @@ function cm.rlcheck2(c,tp) ...@@ -82,8 +82,8 @@ function cm.rlcheck2(c,tp)
if c:IsLocation(LOCATION_DECK) and (not c:IsSetCard(0x3cc7) or not Duel.IsPlayerAffectedByEffect(tp,16170021)) then return false end if c:IsLocation(LOCATION_DECK) and (not c:IsSetCard(0x3cc7) or not Duel.IsPlayerAffectedByEffect(tp,16170021)) then return false end
local re_tab={Duel.IsPlayerAffectedByEffect(tp,EFFECT_CANNOT_RELEASE)} local re_tab={Duel.IsPlayerAffectedByEffect(tp,EFFECT_CANNOT_RELEASE)}
for _,ve in ipairs(re_tab) do for _,ve in ipairs(re_tab) do
local val=ve:GetValue() or aux.TRUE local val=ve:GetValue()
if val(ve,c) then if not val or val(ve,c) then
return false return false
end end
end end
......
...@@ -34,8 +34,8 @@ function cm.rlcheck2(c,tp) ...@@ -34,8 +34,8 @@ function cm.rlcheck2(c,tp)
if not c:IsSetCard(0x3cc7) or not Duel.IsPlayerAffectedByEffect(tp,16170021) then return false end if not c:IsSetCard(0x3cc7) or not Duel.IsPlayerAffectedByEffect(tp,16170021) then return false end
local re_tab={Duel.IsPlayerAffectedByEffect(tp,EFFECT_CANNOT_RELEASE)} local re_tab={Duel.IsPlayerAffectedByEffect(tp,EFFECT_CANNOT_RELEASE)}
for _,ve in ipairs(re_tab) do for _,ve in ipairs(re_tab) do
local val=ve:GetValue() or aux.TRUE local val=ve:GetValue()
if val(ve,c) then if not val or val(ve,c) then
return false return false
end end
end end
...@@ -45,8 +45,8 @@ end ...@@ -45,8 +45,8 @@ end
function cm.rlcheck(c,tp) function cm.rlcheck(c,tp)
local re_tab={Duel.IsPlayerAffectedByEffect(tp,EFFECT_CANNOT_RELEASE)} local re_tab={Duel.IsPlayerAffectedByEffect(tp,EFFECT_CANNOT_RELEASE)}
for _,ve in ipairs(re_tab) do for _,ve in ipairs(re_tab) do
local val=ve:GetValue() or aux.TRUE local val=ve:GetValue()
if val(ve,c) then if not val or val(ve,c) then
return false return false
end end
end end
......
...@@ -38,8 +38,8 @@ function cm.rlcheck2(c,tp) ...@@ -38,8 +38,8 @@ function cm.rlcheck2(c,tp)
if not c:IsSetCard(0x3cc7) then return false end if not c:IsSetCard(0x3cc7) then return false end
local re_tab={Duel.IsPlayerAffectedByEffect(tp,EFFECT_CANNOT_RELEASE)} local re_tab={Duel.IsPlayerAffectedByEffect(tp,EFFECT_CANNOT_RELEASE)}
for _,ve in ipairs(re_tab) do for _,ve in ipairs(re_tab) do
local val=ve:GetValue() or aux.TRUE local val=ve:GetValue()
if val(ve,c) then if not val or val(ve,c) then
return false return false
end end
end end
...@@ -49,8 +49,8 @@ end ...@@ -49,8 +49,8 @@ end
function cm.rlcheck(c,tp) function cm.rlcheck(c,tp)
local re_tab={Duel.IsPlayerAffectedByEffect(tp,EFFECT_CANNOT_RELEASE)} local re_tab={Duel.IsPlayerAffectedByEffect(tp,EFFECT_CANNOT_RELEASE)}
for _,ve in ipairs(re_tab) do for _,ve in ipairs(re_tab) do
local val=ve:GetValue() or aux.TRUE local val=ve:GetValue()
if val(ve,c) then if not val or val(ve,c) then
return false return false
end end
end end
......
...@@ -124,8 +124,8 @@ function cm.rlcheck2(c,tp) ...@@ -124,8 +124,8 @@ function cm.rlcheck2(c,tp)
if not c:IsSetCard(0x3cc7) then return false end if not c:IsSetCard(0x3cc7) then return false end
local re_tab={Duel.IsPlayerAffectedByEffect(tp,EFFECT_CANNOT_RELEASE)} local re_tab={Duel.IsPlayerAffectedByEffect(tp,EFFECT_CANNOT_RELEASE)}
for _,ve in ipairs(re_tab) do for _,ve in ipairs(re_tab) do
local val=ve:GetValue() or aux.TRUE local val=ve:GetValue()
if val(ve,c) then if not val or val(ve,c) then
return false return false
end end
end end
......
...@@ -12,7 +12,7 @@ function cm.initial_effect(c) ...@@ -12,7 +12,7 @@ function cm.initial_effect(c)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
function cm.ritual(c,e,tp,mg) function cm.ritual(c,e,tp,mg)
local flag=mg:CheckSubGroup(cm.race_do,1,tc:GetLevel(),tc:GetLevel()) local flag=mg:CheckSubGroup(cm.race_do,1,c:GetLevel(),c:GetLevel())
return c:IsType(TYPE_RITUAL) and flag and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,false,true) return c:IsType(TYPE_RITUAL) and flag and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,false,true)
end end
function cm.race_do(g,lv) function cm.race_do(g,lv)
......
...@@ -40,6 +40,16 @@ function s.initial_effect(c) ...@@ -40,6 +40,16 @@ function s.initial_effect(c)
e4:SetTarget(s.destg) e4:SetTarget(s.destg)
e4:SetOperation(s.desop) e4:SetOperation(s.desop)
c:RegisterEffect(e4) c:RegisterEffect(e4)
--
local e5=Effect.CreateEffect(c)
e5:SetDescription(1118)
e5:SetCategory(CATEGORY_SPECIAL_SUMMON)
e5:SetType(EFFECT_TYPE_IGNITION)
e5:SetRange(LOCATION_GRAVE)
e5:SetCost(s.spcost)
e5:SetTarget(s.sptg)
e5:SetOperation(s.spop)
c:RegisterEffect(e5)
end end
function s.eqlimit(e,c) function s.eqlimit(e,c)
return c:IsRace(RACE_DRAGON) return c:IsRace(RACE_DRAGON)
...@@ -75,4 +85,30 @@ end ...@@ -75,4 +85,30 @@ end
function s.desop(e,tp,eg,ep,ev,re,r,rp) function s.desop(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget() local tc=Duel.GetFirstTarget()
if tc:IsRelateToEffect(e) then Duel.Destroy(tc,REASON_EFFECT) end if tc:IsRelateToEffect(e) then Duel.Destroy(tc,REASON_EFFECT) end
end
function s.cfilter(c,tp)
return c:IsAbleToRemoveAsCost() and c:IsRace(RACE_DRAGON) and c:IsAttribute(ATTRIBUTE_DARK) and c:IsFaceup() and s.BLASTER(c)
and Duel.GetMZoneCount(tp,c)>0
end
function s.spcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsAbleToRemove() and Duel.IsExistingMatchingCard(s.cfilter,tp,LOCATION_MZONE+LOCATION_GRAVE,0,1,nil,tp) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local g=Duel.SelectMatchingCard(tp,s.cfilter,tp,LOCATION_MZONE+LOCATION_GRAVE,0,1,1,nil,tp)
g:AddCard(e:GetHandler())
Duel.Remove(g,POS_FACEUP,REASON_COST)
end
function s.spfilter(c,e,tp)
return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsRace(RACE_WARRIOR) and c:IsFaceup() and s.BLASTER(c)
end
function s.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(s.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp) end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE)
end
function s.spop(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(s.spfilter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp)
if #g>0 then
if g:GetFirst():IsLocation(LOCATION_GRAVE) then Duel.HintSelection(g) end
Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP)
end
end end
\ No newline at end of file
...@@ -111,8 +111,8 @@ end ...@@ -111,8 +111,8 @@ end
function s.tg2(e,tp,eg,ep,ev,re,r,rp,chk) function s.tg2(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler() local c=e:GetHandler()
if chk==0 then return true end
local q=e:GetLabel() local q=e:GetLabel()
if chk==0 then return q>=1 and q<=3 end
Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0)
if q==1 then if q==1 then
Duel.RegisterFlagEffect(tp,id,RESET_PHASE+PHASE_END,0,1) Duel.RegisterFlagEffect(tp,id,RESET_PHASE+PHASE_END,0,1)
......
...@@ -63,24 +63,22 @@ function s.f6(c) ...@@ -63,24 +63,22 @@ function s.f6(c)
end end
function s.cost1(e,tp,eg,ep,ev,re,r,rp,chk) function s.cost1(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsDiscardable() end local c=e:GetHandler()
Duel.SendtoGrave(e:GetHandler(),REASON_COST+REASON_DISCARD) local g=Duel.GetMatchingGroup(s.f1,tp,LOCATION_HAND,0,c)
if chk==0 then return c:IsDiscardable() and g:GetCount()>0 end
local sg=g:Select(tp,1,1,c)
Duel.ConfirmCards(1-tp,sg)
Duel.SendtoGrave(c,REASON_COST+REASON_DISCARD)
end end
function s.tg1(e,tp,eg,ep,ev,re,r,rp,chk) function s.tg1(e,tp,eg,ep,ev,re,r,rp,chk)
local g=Duel.GetMatchingGroup(s.f1,tp,LOCATION_HAND,0,nil) if chk==0 then return true end
if chk==0 then return g:GetCount()>0 end
Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,3,0,LOCATION_DECK) Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,3,0,LOCATION_DECK)
end end
function s.op1(e,tp,eg,ep,ev,re,r,rp) function s.op1(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetMatchingGroup(s.f1,tp,LOCATION_HAND,0,nil) local g=Duel.GetDecktopGroup(tp,3)
if g:GetCount()>0 then Duel.Remove(g,POS_FACEUP,REASON_EFFECT)
local ag=g:Select(tp,1,1,nil)
Duel.ConfirmCards(1-tp,ag)
local g1=Duel.GetDecktopGroup(tp,3)
Duel.Remove(g1,POS_FACEUP,REASON_EFFECT)
end
end end
function s.con2(e,tp,eg,ep,ev,re,r,rp) function s.con2(e,tp,eg,ep,ev,re,r,rp)
......
...@@ -52,6 +52,12 @@ function s.initial_effect(c) ...@@ -52,6 +52,12 @@ function s.initial_effect(c)
e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e4:SetCost(s.cost4) e4:SetCost(s.cost4)
c:RegisterEffect(e4) c:RegisterEffect(e4)
local e5=Effect.CreateEffect(c)
e5:SetType(EFFECT_TYPE_SINGLE)
e5:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e5:SetCode(EFFECT_SPSUMMON_CONDITION)
e5:SetValue(s.splimit)
c:RegisterEffect(e5)
end end
function s.f1(c) function s.f1(c)
...@@ -123,4 +129,10 @@ end ...@@ -123,4 +129,10 @@ end
function s.cost4(e,c,tp,st) function s.cost4(e,c,tp,st)
if st&SUMMON_TYPE_SPECIAL~=SUMMON_TYPE_SPECIAL then return true end if st&SUMMON_TYPE_SPECIAL~=SUMMON_TYPE_SPECIAL then return true end
return Duel.GetFlagEffect(tp,id)>5 return Duel.GetFlagEffect(tp,id)>5
end
function s.splimit(e,se,sp,st)
local c=e:GetHandler()
if c:IsLocation(LOCATION_EXTRA) then return st&SUMMON_TYPE_FUSION==SUMMON_TYPE_FUSION end
return true
end end
\ No newline at end of file
...@@ -33,6 +33,7 @@ function c61200110.initial_effect(c) ...@@ -33,6 +33,7 @@ function c61200110.initial_effect(c)
e4:SetCategory(CATEGORY_SPECIAL_SUMMON) e4:SetCategory(CATEGORY_SPECIAL_SUMMON)
e4:SetType(EFFECT_TYPE_IGNITION) e4:SetType(EFFECT_TYPE_IGNITION)
e4:SetRange(LOCATION_MZONE) e4:SetRange(LOCATION_MZONE)
e4:SetCountLimit(1)
e4:SetCondition(s.con4) e4:SetCondition(s.con4)
e4:SetCost(s.cost4) e4:SetCost(s.cost4)
e4:SetTarget(s.tg4) e4:SetTarget(s.tg4)
......
...@@ -39,6 +39,10 @@ function c61200300.initial_effect(c) ...@@ -39,6 +39,10 @@ function c61200300.initial_effect(c)
end end
function s.f0(c)
return c:IsAbleToRemove()
end
function s.f1(c) function s.f1(c)
return c:IsSetCard(0x3480) return c:IsSetCard(0x3480)
end end
...@@ -56,15 +60,19 @@ function s.f4(c,e,tp) ...@@ -56,15 +60,19 @@ function s.f4(c,e,tp)
and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false)
end end
function s.f5(c)
return c:IsDestructable()
end
function s.tg1(e,tp,eg,ep,ev,re,r,rp,chk) function s.tg1(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(aux.TRUE,tp,LOCATION_DECK,0,1,nil) end if chk==0 then return Duel.IsExistingMatchingCard(s.f0,tp,LOCATION_DECK,0,1,nil) end
Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,tp,nil) Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,tp,nil)
Duel.SetOperationInfo(0,CATEGORY_DESTROY,nil,1,tp,nil) Duel.SetOperationInfo(0,CATEGORY_DESTROY,nil,1,tp,nil)
end end
function s.op1(e,tp,eg,ep,ev,re,r,rp) function s.op1(e,tp,eg,ep,ev,re,r,rp)
local g1=Duel.GetDecktopGroup(tp,2) local g1=Duel.GetDecktopGroup(tp,2)
local g2=Duel.GetMatchingGroup(aux.TRUE,tp,0,LOCATION_ONFIELD,nil) local g2=Duel.GetMatchingGroup(s.f5,tp,0,LOCATION_ONFIELD,nil)
if g1:GetCount()>0 then if g1:GetCount()>0 then
if Duel.Remove(g1,POS_FACEUP,REASON_EFFECT)>0 then if Duel.Remove(g1,POS_FACEUP,REASON_EFFECT)>0 then
if g1:Filter(s.f1,nil):GetCount()>0 and g2:GetCount()>0 then if g1:Filter(s.f1,nil):GetCount()>0 and g2:GetCount()>0 then
......
...@@ -5,7 +5,7 @@ function c61200401.initial_effect(c) ...@@ -5,7 +5,7 @@ function c61200401.initial_effect(c)
c:EnableReviveLimit() c:EnableReviveLimit()
local tp=c:GetControler() local tp=c:GetControler()
--融合素材 --融合素材
aux.AddFusionProcCodeFunRep(c,61200101,aux.FilterBoolFunction(s.f1,c),1,99,false,true) aux.AddFusionProcCodeFunRep(c,61200101,aux.FilterBoolFunction(s.f1,c),1,99,false,false)
--召唤限制 --召唤限制
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
...@@ -38,7 +38,7 @@ function c61200401.initial_effect(c) ...@@ -38,7 +38,7 @@ function c61200401.initial_effect(c)
e4:SetType(EFFECT_TYPE_QUICK_O) e4:SetType(EFFECT_TYPE_QUICK_O)
e4:SetRange(LOCATION_MZONE) e4:SetRange(LOCATION_MZONE)
e4:SetProperty(EFFECT_FLAG_COUNT_LIMIT) e4:SetProperty(EFFECT_FLAG_COUNT_LIMIT)
e4:SetCode(EVENT_BECOME_TARGET) e4:SetCode(EVENT_CHAINING)
e4:SetCountLimit(1,61200047+EFFECT_COUNT_CODE_OATH) e4:SetCountLimit(1,61200047+EFFECT_COUNT_CODE_OATH)
e4:SetCondition(s.con4) e4:SetCondition(s.con4)
e4:SetTarget(s.tg4) e4:SetTarget(s.tg4)
...@@ -59,19 +59,23 @@ function s.f3(c) ...@@ -59,19 +59,23 @@ function s.f3(c)
return c:IsType(TYPE_MONSTER) and c:IsSetCard(0x3480) return c:IsType(TYPE_MONSTER) and c:IsSetCard(0x3480)
end end
function s.f4(c,tp)
return c:IsFaceup() and c:IsControler(tp) and c:IsLocation(LOCATION_MZONE)
end
function s.con2(e,tp,eg,ep,ev,re,r,rp) function s.con2(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsSummonType(SUMMON_TYPE_FUSION) return e:GetHandler():IsSummonType(SUMMON_TYPE_FUSION)
end end
function s.tg2(e,tp,eg,ep,ev,re,r,rp,chk) function s.tg2(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(s.f2,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil) end if chk==0 then return Duel.IsExistingMatchingCard(aux.NecroValleyFilter(s.f2),tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil) end
local g=Duel.GetMatchingGroup(s.f2,tp,LOCATION_GRAVE,LOCATION_GRAVE,nil) local g=Duel.GetMatchingGroup(aux.NecroValleyFilter(s.f2),tp,LOCATION_GRAVE,LOCATION_GRAVE,nil)
Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0)
end end
function s.op2(e,tp,eg,ep,ev,re,r,rp) function s.op2(e,tp,eg,ep,ev,re,r,rp)
local g1=Duel.GetMatchingGroup(s.f2,tp,LOCATION_GRAVE,LOCATION_GRAVE,nil) local g1=Duel.GetMatchingGroup(aux.NecroValleyFilter(s.f2),tp,LOCATION_GRAVE,LOCATION_GRAVE,nil)
local g2=Duel.GetMatchingGroup(aux.TRUE,tp,0,LOCATION_HAND,nil) local g2=Duel.GetMatchingGroup(s.f2,tp,0,LOCATION_HAND,nil)
if Duel.Remove(g1,POS_FACEUP,REASON_EFFECT)>0 and Duel.GetTurnPlayer()==tp then if Duel.Remove(g1,POS_FACEUP,REASON_EFFECT)>0 and Duel.GetTurnPlayer()==tp then
if g2:GetCount()>0 then if g2:GetCount()>0 then
Duel.Remove(g2:RandomSelect(tp,1),POS_FACEUP,REASON_EFFECT) Duel.Remove(g2:RandomSelect(tp,1),POS_FACEUP,REASON_EFFECT)
...@@ -93,7 +97,9 @@ function s.va3(e,c) ...@@ -93,7 +97,9 @@ function s.va3(e,c)
end end
function s.con4(e,tp,eg,ep,ev,re,r,rp) function s.con4(e,tp,eg,ep,ev,re,r,rp)
return true if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end
local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS)
return g and g:IsExists(s.f4,1,nil,tp)
end end
function s.tg4(e,tp,eg,ep,ev,re,r,rp,chk) function s.tg4(e,tp,eg,ep,ev,re,r,rp,chk)
......
...@@ -146,7 +146,6 @@ ...@@ -146,7 +146,6 @@
!setname 0x3503 叶月 !setname 0x3503 叶月
!setname 0x6503 真美 !setname 0x6503 真美
!setname 0x504 来自未来的 !setname 0x504 来自未来的
!setname 0x3548 H.S
#AddCodeList(10044001) 混沌游戏管理员 卡名记述 #AddCodeList(10044001) 混沌游戏管理员 卡名记述
#AddCodeList(10050001) 永远梦想的少女爱丽丝卡名记述 #AddCodeList(10050001) 永远梦想的少女爱丽丝卡名记述
#AddCodeList(10060001) 观测者 贝奥 卡名记述 #AddCodeList(10060001) 观测者 贝奥 卡名记述
......
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