Commit 89904413 authored by TanakaKotoha's avatar TanakaKotoha

wdnmd

parent b15b2db7
...@@ -14,7 +14,7 @@ function cm.initial_effect(c) ...@@ -14,7 +14,7 @@ function cm.initial_effect(c)
e2:SetOperation(cm.spop) e2:SetOperation(cm.spop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
local e2=Effect.CreateEffect(c) local e2=Effect.CreateEffect(c)
e2:SetDescription(m*16) e2:SetDescription(aux.Stringid(m,0))
e2:SetType(EFFECT_TYPE_IGNITION) e2:SetType(EFFECT_TYPE_IGNITION)
e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e2:SetRange(LOCATION_MZONE) e2:SetRange(LOCATION_MZONE)
...@@ -34,9 +34,8 @@ function cm.initial_effect(c) ...@@ -34,9 +34,8 @@ function cm.initial_effect(c)
end) end)
c:RegisterEffect(e2) c:RegisterEffect(e2)
local e2=Effect.CreateEffect(c) local e2=Effect.CreateEffect(c)
e2:SetDescription(m*16) e2:SetDescription(aux.Stringid(m,1))
e2:SetType(EFFECT_TYPE_QUICK_O) e2:SetType(EFFECT_TYPE_IGNITION)
e2:SetCode(EVENT_FREE_CHAIN)
e2:SetRange(LOCATION_MZONE) e2:SetRange(LOCATION_MZONE)
e2:SetCountLimit(1,m) e2:SetCountLimit(1,m)
e2:SetCost(function(e,tp,eg,ep,ev,re,r,rp,chk) e2:SetCost(function(e,tp,eg,ep,ev,re,r,rp,chk)
...@@ -47,49 +46,52 @@ function cm.initial_effect(c) ...@@ -47,49 +46,52 @@ function cm.initial_effect(c)
if chk==0 then return Duel.IsExistingMatchingCard(v_filter,tp,0,LOCATION_HAND+LOCATION_ONFIELD,1,nil) end if chk==0 then return Duel.IsExistingMatchingCard(v_filter,tp,0,LOCATION_HAND+LOCATION_ONFIELD,1,nil) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CODE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CODE)
cm.announce_filter={TYPE_FUSION+TYPE_SYNCHRO+TYPE_XYZ+TYPE_LINK,OPCODE_ISTYPE,OPCODE_NOT} cm.announce_filter={TYPE_FUSION+TYPE_SYNCHRO+TYPE_XYZ+TYPE_LINK,OPCODE_ISTYPE,OPCODE_NOT}
local ac=Duel.AnnounceCard(tp,table.unpack(cm.announce_filter)) local ac=Duel.AnnounceCardFilter(tp,table.unpack(cm.announce_filter))
Duel.SetTargetParam(ac) Duel.SetTargetParam(ac)
Duel.SetOperationInfo(0,CATEGORY_ANNOUNCE,nil,0,tp,ANNOUNCE_CARD_FILTER) Duel.SetOperationInfo(0,CATEGORY_ANNOUNCE,nil,0,tp,ANNOUNCE_CARD_FILTER)
end) end)
e2:SetOperation(function(e,tp,eg,ep,ev,re,r,rp) e2:SetOperation(function(e,tp,eg,ep,ev,re,r,rp)
local tg=Duel.GetMatchingGroup(v_filter,tp,0,LOCATION_HAND+LOCATION_ONFIELD,nil)
Duel.ConfirmCards(tp,tg)
local ac=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) local ac=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM)
local g=Duel.GetMatchingGroup(v_filter,tp,0,LOCATION_HAND+LOCATION_ONFIELD,nil):Filter(Card.IsCode,nil,ac) local g=tg:Filter(Card.IsCode,nil,ac)
if g:GetCount()>0 then if g:GetCount()>0 then
Duel.Destroy(g,REASON_EFFECT) Duel.Destroy(g,REASON_EFFECT)
end end
Duel.ShuffleHand(1-tp)
end) end)
c:RegisterEffect(e2) c:RegisterEffect(e2)
end end
function cm.rfilter(c,tp,sc) function cm.spfilter(c,fc)
return c:IsFaceup() and c:IsAttack(2000) and c:IsReleasable() and Duel.GetLocationCountFromEx(tp,tp,c,sc)>0 and c:IsCanBeFusionMaterial(sc,SUMMON_TYPE_SPECIAL) return c:IsAttack(2000) and c:IsCanBeFusionMaterial(fc)
end
function cm.spfilter_(c,fc)
return c:IsAttack(2000) and c:IsCanBeFusionMaterial(fc) and c:IsFaceup()
end
function cm.spfilter1(c,tp,g)
return g:IsExists(cm.spfilter2,1,c,tp,c)
end end
function cm.mzfilter(c,tp,sc) function cm.spfilter2(c,tp,mc)
return c:IsFaceup() and c:IsAttack(2000) and c:IsReleasable() and Duel.GetLocationCountFromEx(tp,tp,c,sc)>0 and c:IsCanBeFusionMaterial(sc,SUMMON_TYPE_SPECIAL) return Duel.GetLocationCountFromEx(tp,tp,Group.FromCards(c,mc))>0
end end
function cm.spcon(e,c) function cm.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local g=Duel.GetReleaseGroup(tp):Filter(cm.spfilter,nil,c)
local ct=-ft+1 local g2=Duel.GetReleaseGroup(1-tp):Filter(cm.spfilter_,nil,c)
if ct>2 then return false end g:Merge(g2)
if ct>0 and not Duel.IsExistingMatchingCard(cm.mzfilter,tp,LOCATION_MZONE,0,ct,nil) then return false end return g:IsExists(cm.spfilter1,1,nil,tp,g)
return Duel.IsExistingMatchingCard(cm.rfilter,tp,LOCATION_MZONE,LOCATION_MZONE,2,nil)
end end
function cm.spop(e,tp,eg,ep,ev,re,r,rp,c) function cm.spop(e,tp,eg,ep,ev,re,r,rp,c)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local g=Duel.GetReleaseGroup(tp):Filter(cm.spfilter,nil,c)
local ct=-ft+1 local g2=Duel.GetReleaseGroup(1-tp):Filter(cm.spfilter_,nil,c)
if ct<0 then ct=0 end g:Merge(g2)
local g=Group.CreateGroup() Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
if ct>0 then local g1=g:FilterSelect(tp,cm.spfilter1,1,1,nil,tp,g)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) local mc=g1:GetFirst()
local sg=Duel.SelectMatchingCard(tp,cm.mzfilter,tp,LOCATION_MZONE,0,ct,ct,nil) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g:Merge(sg) local g2=g:FilterSelect(tp,cm.spfilter2,1,1,mc,tp,mc)
end g1:Merge(g2)
if ct<2 then c:SetMaterial(g1)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) Duel.Release(g1,REASON_COST+REASON_FUSION+REASON_MATERIAL)
local sg=Duel.SelectMatchingCard(tp,cm.rfilter,tp,LOCATION_MZONE,LOCATION_MZONE,2-ct,2-ct,g:GetFirst()) end
g:Merge(sg) \ No newline at end of file
end
c:SetMaterial(g)
Duel.Release(g,REASON_COST)
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