Commit 241dd1ec authored by mercury233's avatar mercury233

update for Lair of Darkness

parent 130c2f2c
...@@ -32,11 +32,17 @@ function c27198001.fselect(c,tp,rg,sg) ...@@ -32,11 +32,17 @@ function c27198001.fselect(c,tp,rg,sg)
if sg:GetCount()<2 then if sg:GetCount()<2 then
res=rg:IsExists(c27198001.fselect,1,sg,tp,rg,sg) res=rg:IsExists(c27198001.fselect,1,sg,tp,rg,sg)
else else
res=Duel.GetMZoneCount(tp,sg)>0 res=c27198001.fgoal(tp,sg)
end end
sg:RemoveCard(c) sg:RemoveCard(c)
return res return res
end end
function c27198001.fgoal(tp,sg)
if sg:GetCount()>0 and Duel.GetMZoneCount(tp,sg)>0 then
Duel.SetSelectedCard(sg)
return Duel.CheckReleaseGroup(tp,nil,0,nil)
else return false end
end
function c27198001.spcost(e,tp,eg,ep,ev,re,r,rp,chk) function c27198001.spcost(e,tp,eg,ep,ev,re,r,rp,chk)
local rg=Duel.GetReleaseGroup(tp) local rg=Duel.GetReleaseGroup(tp)
local g=Group.CreateGroup() local g=Group.CreateGroup()
......
...@@ -41,27 +41,30 @@ end ...@@ -41,27 +41,30 @@ end
function c41329458.rfilter(c,tp) function c41329458.rfilter(c,tp)
return c:IsSetCard(0x101b) and (c:IsControler(tp) or c:IsFaceup()) return c:IsSetCard(0x101b) and (c:IsControler(tp) or c:IsFaceup())
end end
function c41329458.mzfilter(c,tp) function c41329458.fselect(c,tp,rg,sg)
return c:IsControler(tp) and c:GetSequence()<5 sg:AddCard(c)
if sg:GetCount()<2 then
res=rg:IsExists(c41329458.fselect,1,sg,tp,rg,sg)
else
res=c41329458.fgoal(tp,sg)
end
sg:RemoveCard(c)
return res
end
function c41329458.fgoal(tp,sg)
if sg:GetCount()>0 and Duel.GetMZoneCount(tp,sg)>0 then
Duel.SetSelectedCard(sg)
return Duel.CheckReleaseGroup(tp,nil,0,nil)
else return false end
end end
function c41329458.spcost(e,tp,eg,ep,ev,re,r,rp,chk) function c41329458.spcost(e,tp,eg,ep,ev,re,r,rp,chk)
local rg=Duel.GetReleaseGroup(tp):Filter(c41329458.rfilter,nil,tp) local rg=Duel.GetReleaseGroup(tp):Filter(c41329458.rfilter,nil,tp)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local g=Group.CreateGroup()
local ct=-ft+1 if chk==0 then return rg:IsExists(c41329458.fselect,1,nil,tp,rg,g) end
if chk==0 then return ft>-2 and rg:GetCount()>1 and (ft>0 or rg:IsExists(c41329458.mzfilter,ct,nil,tp)) end while g:GetCount()<2 do
local g=nil
if ft>0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g=rg:Select(tp,2,2,nil)
elseif ft==0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g=rg:FilterSelect(tp,c41329458.mzfilter,1,1,nil,tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
local g2=rg:Select(tp,1,1,g:GetFirst())
g:Merge(g2)
else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g=rg:FilterSelect(tp,c41329458.mzfilter,2,2,nil,tp) local sg=rg:FilterSelect(tp,c41329458.fselect,1,1,g,tp,rg,g)
g:Merge(sg)
end end
Duel.Release(g,REASON_COST) Duel.Release(g,REASON_COST)
end end
......
...@@ -37,27 +37,30 @@ end ...@@ -37,27 +37,30 @@ end
function c46290741.rfilter(c,tp) function c46290741.rfilter(c,tp)
return c:IsAttribute(ATTRIBUTE_WATER) and (c:IsControler(tp) or c:IsFaceup()) return c:IsAttribute(ATTRIBUTE_WATER) and (c:IsControler(tp) or c:IsFaceup())
end end
function c46290741.mzfilter(c,tp) function c46290741.fselect(c,tp,rg,sg)
return c:IsControler(tp) and c:GetSequence()<5 sg:AddCard(c)
if sg:GetCount()<2 then
res=rg:IsExists(c46290741.fselect,1,sg,tp,rg,sg)
else
res=c46290741.fgoal(tp,sg)
end
sg:RemoveCard(c)
return res
end
function c46290741.fgoal(tp,sg)
if sg:GetCount()>0 and Duel.GetMZoneCount(tp,sg)>0 then
Duel.SetSelectedCard(sg)
return Duel.CheckReleaseGroup(tp,nil,0,nil)
else return false end
end end
function c46290741.spcost(e,tp,eg,ep,ev,re,r,rp,chk) function c46290741.spcost(e,tp,eg,ep,ev,re,r,rp,chk)
local rg=Duel.GetReleaseGroup(tp):Filter(c46290741.rfilter,nil,tp) local rg=Duel.GetReleaseGroup(tp):Filter(c46290741.rfilter,nil,tp)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local g=Group.CreateGroup()
local ct=-ft+1 if chk==0 then return rg:IsExists(c46290741.fselect,1,nil,tp,rg,g) end
if chk==0 then return ft>-2 and rg:GetCount()>1 and (ft>0 or rg:IsExists(c46290741.mzfilter,ct,nil,tp)) end while g:GetCount()<2 do
local g=nil
if ft>0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g=rg:Select(tp,2,2,nil)
elseif ft==0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g=rg:FilterSelect(tp,c46290741.mzfilter,1,1,nil,tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
local g2=rg:Select(tp,1,1,g:GetFirst())
g:Merge(g2)
else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g=rg:FilterSelect(tp,c46290741.mzfilter,2,2,nil,tp) local sg=rg:FilterSelect(tp,c46290741.fselect,1,1,g,tp,rg,g)
g:Merge(sg)
end end
Duel.Release(g,REASON_COST) Duel.Release(g,REASON_COST)
end end
......
...@@ -24,33 +24,35 @@ end ...@@ -24,33 +24,35 @@ end
function c47826112.cfilter(c,tp) function c47826112.cfilter(c,tp)
return c:IsLevelBelow(3) and c:IsAttribute(ATTRIBUTE_WATER) and (c:IsControler(tp) or c:IsFaceup()) return c:IsLevelBelow(3) and c:IsAttribute(ATTRIBUTE_WATER) and (c:IsControler(tp) or c:IsFaceup())
end end
function c47826112.mzfilter(c,tp) function c47826112.fselect(c,tp,rg,sg)
return c:IsControler(tp) and c:GetSequence()<5 sg:AddCard(c)
if sg:GetCount()<3 then
res=rg:IsExists(c47826112.fselect,1,sg,tp,rg,sg)
else
res=c47826112.fgoal(tp,sg)
end
sg:RemoveCard(c)
return res
end
function c47826112.fgoal(tp,sg)
if sg:GetCount()>0 and Duel.GetMZoneCount(tp,sg)>0 then
Duel.SetSelectedCard(sg)
return Duel.CheckReleaseGroup(tp,nil,0,nil)
else return false end
end end
function c47826112.spcost(e,tp,eg,ep,ev,re,r,rp,chk) function c47826112.spcost(e,tp,eg,ep,ev,re,r,rp,chk)
local rg=Duel.GetReleaseGroup(tp):Filter(c47826112.cfilter,nil,tp) local rg=Duel.GetReleaseGroup(tp):Filter(c47826112.cfilter,nil,tp)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local g=Group.CreateGroup()
local ct=-ft+1 if chk==0 then return rg:IsExists(c47826112.fselect,1,nil,tp,rg,g) end
if chk==0 then return ft>-3 and rg:GetCount()>2 and (ft>0 or rg:IsExists(c47826112.mzfilter,ct,nil,tp)) end while g:GetCount()<3 do
local g=nil
if ft>0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g=rg:Select(tp,3,3,nil)
elseif ft>-2 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g=rg:FilterSelect(tp,c47826112.mzfilter,ct,ct,nil,tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
local g2=rg:Select(tp,3-ct,3-ct,g)
g:Merge(g2)
else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g=rg:FilterSelect(tp,c47826112.mzfilter,3,3,nil,tp) local sg=rg:FilterSelect(tp,c47826112.fselect,1,1,g,tp,rg,g)
g:Merge(sg)
end end
Duel.Release(g,REASON_COST) Duel.Release(g,REASON_COST)
end end
function c47826112.sptg(e,tp,eg,ep,ev,re,r,rp,chk) function c47826112.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-3 if chk==0 then return e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end
and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0)
end end
function c47826112.spop(e,tp,eg,ep,ev,re,r,rp) function c47826112.spop(e,tp,eg,ep,ev,re,r,rp)
......
...@@ -10,45 +10,52 @@ function c54913680.initial_effect(c) ...@@ -10,45 +10,52 @@ function c54913680.initial_effect(c)
e1:SetOperation(c54913680.activate) e1:SetOperation(c54913680.activate)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
function c54913680.costfilter(c) function c54913680.rfilter(c)
return c:IsFaceup() and c:IsSetCard(0x3d) return c:IsFaceup() and c:IsSetCard(0x3d)
end end
function c54913680.mzfilter(c,tp) function c54913680.fselect(c,tp,rg,sg)
return c:GetSequence()<5 sg:AddCard(c)
if sg:GetCount()<2 then
res=rg:IsExists(c54913680.fselect,1,sg,tp,rg,sg)
else
res=c54913680.fgoal(tp,sg)
end
sg:RemoveCard(c)
return res
end
function c54913680.fgoal(tp,sg)
if sg:GetCount()>0 and Duel.GetMZoneCount(tp,sg)>0 then
Duel.SetSelectedCard(sg)
return Duel.CheckReleaseGroup(tp,nil,0,nil)
else return false end
end end
function c54913680.cost(e,tp,eg,ep,ev,re,r,rp,chk) function c54913680.cost(e,tp,eg,ep,ev,re,r,rp,chk)
local rg=Duel.GetReleaseGroup(tp):Filter(c54913680.costfilter,nil) e:SetLabel(1)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local rg=Duel.GetReleaseGroup(tp):Filter(c54913680.rfilter,nil,tp)
local ct=-ft+1 local g=Group.CreateGroup()
if chk==0 then return ft>-2 and rg:GetCount()>1 and (ft>0 or rg:IsExists(c54913680.mzfilter,ct,nil,tp)) end if chk==0 then return rg:IsExists(c54913680.fselect,1,nil,tp,rg,g) end
local g=nil while g:GetCount()<2 do
if ft>0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g=rg:Select(tp,2,2,nil)
elseif ft==0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g=rg:FilterSelect(tp,c54913680.mzfilter,1,1,nil,tp) local sg=rg:FilterSelect(tp,c54913680.fselect,1,1,g,tp,rg,g)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) g:Merge(sg)
local g2=rg:Select(tp,1,1,g:GetFirst())
g:Merge(g2)
else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g=rg:FilterSelect(tp,c54913680.mzfilter,2,2,nil,tp)
end end
Duel.Release(g,REASON_COST) Duel.Release(g,REASON_COST)
end end
function c54913680.filter(c,e,tp) function c54913680.spfilter(c,e,tp)
return c:IsCode(63176202) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) return c:IsCode(63176202) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end end
function c54913680.target(e,tp,eg,ep,ev,re,r,rp,chk) function c54913680.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 local res=e:GetLabel()==1 or Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.IsExistingMatchingCard(c54913680.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end if chk==0 then
e:SetLabel(0)
return res and Duel.IsExistingMatchingCard(c54913680.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp)
end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK)
end end
function c54913680.activate(e,tp,eg,ep,ev,re,r,rp) function c54913680.activate(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,c54913680.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) local g=Duel.SelectMatchingCard(tp,c54913680.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp)
if g:GetCount()>0 then if g:GetCount()>0 then
Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP)
end end
......
...@@ -13,27 +13,31 @@ end ...@@ -13,27 +13,31 @@ end
function c66607691.rfilter(c,tp) function c66607691.rfilter(c,tp)
return c:IsCode(70095154) and (c:IsControler(tp) or c:IsFaceup()) return c:IsCode(70095154) and (c:IsControler(tp) or c:IsFaceup())
end end
function c66607691.mzfilter(c,tp) function c66607691.fselect(c,tp,rg,sg)
return c:IsControler(tp) and c:GetSequence()<5 sg:AddCard(c)
if sg:GetCount()<2 then
res=rg:IsExists(c66607691.fselect,1,sg,tp,rg,sg)
else
res=c66607691.fgoal(tp,sg)
end
sg:RemoveCard(c)
return res
end
function c66607691.fgoal(tp,sg)
if sg:GetCount()>0 and Duel.GetMZoneCount(tp,sg)>0 then
Duel.SetSelectedCard(sg)
return Duel.CheckReleaseGroup(tp,nil,0,nil)
else return false end
end end
function c66607691.cost(e,tp,eg,ep,ev,re,r,rp,chk) function c66607691.cost(e,tp,eg,ep,ev,re,r,rp,chk)
e:SetLabel(1)
local rg=Duel.GetReleaseGroup(tp):Filter(c66607691.rfilter,nil,tp) local rg=Duel.GetReleaseGroup(tp):Filter(c66607691.rfilter,nil,tp)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local g=Group.CreateGroup()
local ct=-ft+1 if chk==0 then return rg:IsExists(c66607691.fselect,1,nil,tp,rg,g) end
if chk==0 then return ft>-2 and rg:GetCount()>1 and (ft>0 or rg:IsExists(c66607691.mzfilter,ct,nil,tp)) end while g:GetCount()<2 do
local g=nil
if ft>0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g=rg:Select(tp,2,2,nil)
elseif ft==0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g=rg:FilterSelect(tp,c66607691.mzfilter,1,1,nil,tp) local sg=rg:FilterSelect(tp,c66607691.fselect,1,1,g,tp,rg,g)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) g:Merge(sg)
local g2=rg:Select(tp,1,1,g:GetFirst())
g:Merge(g2)
else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g=rg:FilterSelect(tp,c66607691.mzfilter,2,2,nil,tp)
end end
Duel.Release(g,REASON_COST) Duel.Release(g,REASON_COST)
end end
...@@ -41,8 +45,11 @@ function c66607691.spfilter(c,e,tp) ...@@ -41,8 +45,11 @@ function c66607691.spfilter(c,e,tp)
return c:IsCode(4162088) and c:IsCanBeSpecialSummoned(e,0,tp,true,true) return c:IsCode(4162088) and c:IsCanBeSpecialSummoned(e,0,tp,true,true)
end end
function c66607691.target(e,tp,eg,ep,ev,re,r,rp,chk) function c66607691.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 local res=e:GetLabel()==1 or Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.IsExistingMatchingCard(c66607691.spfilter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,nil,e,tp) end if chk==0 then
e:SetLabel(0)
return res and Duel.IsExistingMatchingCard(c66607691.spfilter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,nil,e,tp)
end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE)
end end
function c66607691.activate(e,tp,eg,ep,ev,re,r,rp) function c66607691.activate(e,tp,eg,ep,ev,re,r,rp)
......
...@@ -10,46 +10,46 @@ function c72549351.initial_effect(c) ...@@ -10,46 +10,46 @@ function c72549351.initial_effect(c)
e1:SetOperation(c72549351.activate) e1:SetOperation(c72549351.activate)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
function c72549351.cost(e,tp,eg,ep,ev,re,r,rp,chk)
e:SetLabel(1)
return true
end
function c72549351.rfilter(c,tp) function c72549351.rfilter(c,tp)
return c:IsRace(RACE_DRAGON) and (c:IsControler(tp) or c:IsFaceup()) return c:IsRace(RACE_DRAGON) and (c:IsControler(tp) or c:IsFaceup())
end end
function c72549351.mzfilter(c,tp) function c72549351.fselect(c,tp,rg,sg)
return c:IsControler(tp) and c:GetSequence()<5 sg:AddCard(c)
if sg:GetCount()<2 then
res=rg:IsExists(c72549351.fselect,1,sg,tp,rg,sg)
else
res=c72549351.fgoal(tp,sg)
end
sg:RemoveCard(c)
return res
end
function c72549351.fgoal(tp,sg)
if sg:GetCount()>0 and Duel.GetMZoneCount(tp,sg)>0 then
Duel.SetSelectedCard(sg)
return Duel.CheckReleaseGroup(tp,nil,0,nil)
else return false end
end
function c72549351.cost(e,tp,eg,ep,ev,re,r,rp,chk)
e:SetLabel(1)
local rg=Duel.GetReleaseGroup(tp):Filter(c72549351.rfilter,nil,tp)
local g=Group.CreateGroup()
if chk==0 then return rg:IsExists(c72549351.fselect,1,nil,tp,rg,g) end
while g:GetCount()<2 do
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
local sg=rg:FilterSelect(tp,c72549351.fselect,1,1,g,tp,rg,g)
g:Merge(sg)
end
Duel.Release(g,REASON_COST)
return true
end end
function c72549351.spfilter(c,e,tp) function c72549351.spfilter(c,e,tp)
return c:IsRace(RACE_DRAGON) and c:IsLevel(8) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) return c:IsRace(RACE_DRAGON) and c:IsLevel(8) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end end
function c72549351.target(e,tp,eg,ep,ev,re,r,rp,chk) function c72549351.target(e,tp,eg,ep,ev,re,r,rp,chk)
local rg=Duel.GetReleaseGroup(tp):Filter(c72549351.rfilter,nil,tp) local res=e:GetLabel()==1 or Duel.GetLocationCount(tp,LOCATION_MZONE)>0
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) if chk==0 then
local ct=-ft+1
if chk==0 then
if e:GetLabel()==0 then return ft>0
and Duel.IsExistingMatchingCard(c72549351.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end
e:SetLabel(0)
return ft>-2 and rg:GetCount()>1 and (ft>0 or rg:IsExists(c72549351.mzfilter,ct,nil,tp))
end
if e:GetLabel()~=0 then
local g=nil
if ft>0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g=rg:Select(tp,2,2,nil)
elseif ft==0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g=rg:FilterSelect(tp,c72549351.mzfilter,1,1,nil,tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
local g2=rg:Select(tp,1,1,g:GetFirst())
g:Merge(g2)
else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g=rg:FilterSelect(tp,c72549351.mzfilter,2,2,nil,tp)
end
Duel.Release(g,REASON_COST)
e:SetLabel(0) e:SetLabel(0)
return res and Duel.IsExistingMatchingCard(c72549351.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp)
end end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK)
end end
......
...@@ -69,27 +69,30 @@ end ...@@ -69,27 +69,30 @@ end
function c96733134.rfilter(c,tp) function c96733134.rfilter(c,tp)
return c:IsSetCard(0x20f8) and (c:IsControler(tp) or c:IsFaceup()) return c:IsSetCard(0x20f8) and (c:IsControler(tp) or c:IsFaceup())
end end
function c96733134.mzfilter(c,tp) function c96733134.fselect(c,tp,rg,sg)
return c:IsControler(tp) and c:GetSequence()<5 sg:AddCard(c)
if sg:GetCount()<2 then
res=rg:IsExists(c96733134.fselect,1,sg,tp,rg,sg)
else
res=c96733134.fgoal(tp,sg)
end
sg:RemoveCard(c)
return res
end
function c96733134.fgoal(tp,sg)
if sg:GetCount()>0 and Duel.GetMZoneCount(tp,sg)>0 then
Duel.SetSelectedCard(sg)
return Duel.CheckReleaseGroup(tp,nil,0,nil)
else return false end
end end
function c96733134.hspcost(e,tp,eg,ep,ev,re,r,rp,chk) function c96733134.hspcost(e,tp,eg,ep,ev,re,r,rp,chk)
local rg=Duel.GetReleaseGroup(tp):Filter(c96733134.rfilter,nil,tp) local rg=Duel.GetReleaseGroup(tp):Filter(c96733134.rfilter,nil,tp)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local g=Group.CreateGroup()
local ct=-ft+1 if chk==0 then return rg:IsExists(c96733134.fselect,1,nil,tp,rg,g) end
if chk==0 then return ft>-2 and rg:GetCount()>1 and (ft>0 or rg:IsExists(c96733134.mzfilter,ct,nil,tp)) end while g:GetCount()<2 do
local g=nil
if ft>0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g=rg:Select(tp,2,2,nil)
elseif ft==0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g=rg:FilterSelect(tp,c96733134.mzfilter,1,1,nil,tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
local g2=rg:Select(tp,1,1,g:GetFirst())
g:Merge(g2)
else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g=rg:FilterSelect(tp,c96733134.mzfilter,2,2,nil,tp) local sg=rg:FilterSelect(tp,c96733134.fselect,1,1,g,tp,rg,g)
g:Merge(sg)
end end
Duel.Release(g,REASON_COST) Duel.Release(g,REASON_COST)
end 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