Commit 33799129 authored by GuGu's avatar GuGu

Update c86379023.lua

parent 60f3468c
Pipeline #33476 passed with stage
in 12 seconds
...@@ -3,18 +3,10 @@ require "expansions/script/nef/Gds" ...@@ -3,18 +3,10 @@ require "expansions/script/nef/Gds"
function c86379023.initial_effect(c) function c86379023.initial_effect(c)
-- --
Gds.Adjustdreamsequence(c) Gds.Adjustdreamsequence(c)
Exlink.AddLinkProcedure(c,c86379023.lkfilter,3,3,c86379023.mattg,c86379023.matval,LOCATION_ONFIELD+LOCATION_HAND,0)
--Gds.Checkdeckpublic(c) --Gds.Checkdeckpublic(c)
--link summon --link summon
c:EnableReviveLimit() c:EnableReviveLimit()
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_SPSUMMON_PROC)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE)
e1:SetRange(LOCATION_EXTRA)
e1:SetCondition(c86379023.lkcon1)
e1:SetOperation(c86379023.lkop1)
e1:SetValue(SUMMON_TYPE_LINK)
c:RegisterEffect(e1)
--Deck Confirm --Deck Confirm
local e2=Effect.CreateEffect(c) local e2=Effect.CreateEffect(c)
e2:SetDescription(aux.Stringid(86379023,1)) e2:SetDescription(aux.Stringid(86379023,1))
...@@ -48,6 +40,17 @@ function c86379023.initial_effect(c) ...@@ -48,6 +40,17 @@ function c86379023.initial_effect(c)
c:RegisterEffect(e5) c:RegisterEffect(e5)
end end
-- --
function c86379023.lkfilter(c)
return bit.band(c:GetOriginalType(),TYPE_MONSTER)==0 or (c:IsSetCard(0x273,0x279) and c:IsLocation(LOCATION_ONFIELD+LOCATION_HAND))
end
function c86379023.mattg(e,c)
return c:IsSetCard(0x273,0x279) and (c:IsLocation(LOCATION_HAND) or c:IsFaceup())
end
function c86379023.matval(e,lc,mg,c,tp)
if e:GetHandler()~=lc then return false,nil end
return true,not mg or mg
end
--
function c86379023.dcfilter(c) function c86379023.dcfilter(c)
return c:IsSetCard(0x279) return c:IsSetCard(0x279)
end end
...@@ -544,72 +547,3 @@ function c86379023.indescon(e,re,r,rp) ...@@ -544,72 +547,3 @@ function c86379023.indescon(e,re,r,rp)
return bit.band(r,REASON_BATTLE)~=0 return bit.band(r,REASON_BATTLE)~=0
end end
-- --
function c86379023.lkfilter1(c,lc,tp)
if c:IsLocation(LOCATION_MZONE) then
return c:IsCanBeLinkMaterial(lc) and (bit.band(c:GetOriginalType(),TYPE_MONSTER)==0 or c:IsSetCard(0x273,0x279)) and c:IsFaceup()
else
return c:IsSetCard(0x273,0x279) and (c:IsFaceup() or c:IsLocation(LOCATION_HAND))
end
end
function c86379023.lvfilter1(c)
if c:IsType(TYPE_LINK) and c:GetLink()>1 then
return 1+0x10000*c:GetLink()
else
return 1
end
end
function c86379023.lcheck1(tp,sg,lc,minc,ct)
return ct>=minc and sg:CheckWithSumEqual(c86379023.lvfilter1,lc:GetLink(),ct,ct) and Duel.GetLocationCountFromEx(tp,tp,sg,lc)>0
end
function c86379023.lkchenk1(c,tp,sg,mg,lc,ct,minc,maxc)
sg:AddCard(c)
ct=ct+1
local res=c86379023.lcheck1(tp,sg,lc,minc,ct) or (ct<maxc and mg:IsExists(c86379023.lkchenk1,1,sg,tp,sg,mg,lc,ct,minc,maxc))
sg:RemoveCard(c)
ct=ct-1
return res
end
function c86379023.lkcon1(e,c)
if c==nil then return true end
if c:IsType(TYPE_PENDULUM) and c:IsFaceup() then return false end
local tp=c:GetControler()
local mg=Duel.GetMatchingGroup(c86379023.lkfilter1,tp,LOCATION_ONFIELD+LOCATION_HAND,0,nil,c,tp)
local sg=Group.CreateGroup()
for i,pe in ipairs({Duel.IsPlayerAffectedByEffect(tp,EFFECT_MUST_BE_LMATERIAL)}) do
local pc=pe:GetHandler()
if not mg:IsContains(pc) then return false end
sg:AddCard(pc)
end
local ct=sg:GetCount()
local minc=3
local maxc=3
if ct>maxc then return false end
return (c86379023.lcheck1(tp,sg,c,minc,ct) or mg:IsExists(c86379023.lkchenk1,1,nil,tp,sg,mg,c,ct,minc,maxc))
end
function c86379023.lkop1(e,tp,eg,ep,ev,re,r,rp,c)
local mg=Duel.GetMatchingGroup(c86379023.lkfilter1,tp,LOCATION_ONFIELD+LOCATION_HAND,0,nil,c,tp)
local sg=Group.CreateGroup()
for i,pe in ipairs({Duel.IsPlayerAffectedByEffect(tp,EFFECT_MUST_BE_LMATERIAL)}) do
sg:AddCard(pe:GetHandler())
end
local ct=sg:GetCount()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_LMATERIAL)
sg:Select(tp,ct,ct,nil)
local minc=3
local maxc=3
for i=ct,maxc-1 do
local cg=mg:Filter(c86379023.lkchenk1,sg,tp,sg,mg,c,i,minc,maxc)
if cg:GetCount()==0 then break end
local minct=1
if c86379023.lcheck1(tp,sg,c,minc,i) then
if not Duel.SelectYesNo(tp,210) then break end
minct=0
end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_LMATERIAL)
local g=cg:Select(tp,minct,1,nil)
if g:GetCount()==0 then break end
sg:Merge(g)
end
c:SetMaterial(sg)
Duel.SendtoGrave(sg,REASON_MATERIAL+REASON_LINK)
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