Commit 6b0e3cc2 authored by GuGu's avatar GuGu

Update c21018.lua 可以吃对面怪同调的bug

parent d29feec5
Pipeline #21867 passed with stage
in 58 seconds
......@@ -2,16 +2,9 @@
--八意永琳
function c21018.initial_effect(c)
--synchro summon
aux.AddSynchroMixProcedure(c,aux.Tuner(nil),aux.Tuner(nil),nil,aux.FilterBoolFunction(Card.IsCode,21021),1,1)
c:EnableReviveLimit()
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_SPSUMMON_PROC)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_EXTRA)
e1:SetCondition(c21018.syncon)
e1:SetOperation(c21018.synop)
e1:SetValue(SUMMON_TYPE_SYNCHRO)
c:RegisterEffect(e1)
--summon
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE)
......@@ -68,85 +61,10 @@ function c21018.initial_effect(c)
e8:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e8:SetType(EFFECT_TYPE_SINGLE)
e8:SetCode(EFFECT_SPSUMMON_CONDITION)
e8:SetValue(aux.FALSE)
e8:SetValue(aux.synlimit)
c:RegisterEffect(e8)
end
function c21018.matfilter1(c,syncard)
return c:IsType(TYPE_TUNER) and c:IsFaceup() and c:IsCanBeSynchroMaterial(syncard)
end
function c21018.matfilter2(c,syncard)
return c:IsFaceup() and c:IsCode(21021) and c:IsCanBeSynchroMaterial(syncard)
end
function c21018.synfilter1(c,lv,g1,g2)
local tlv=c:GetLevel()
if lv-tlv<=0 then return false end
local f1=c.tuner_filter
return g1:IsExists(c21018.synfilter2,1,c,lv-tlv,g2,f1,c)
end
function c21018.synfilter2(c,lv,g2,f1,tuner1)
local tlv=c:GetLevel()
if lv-tlv<=0 then return false end
local f2=c.tuner_filter
if f1 and not f1(c) then return false end
if f2 and not f2(tuner1) then return false end
return g2:IsExists(c21018.synfilter3,1,nil,lv-tlv,f1,f2)
end
function c21018.synfilter3(c,lv,f1,f2)
return c:GetLevel()==lv and (not f1 or f1(c)) and (not f2 or f2(c))
end
function c21018.syncon(e,c,tuner)
if c==nil then return true end
local tp=c:GetControler()
if Duel.GetLocationCount(tp,LOCATION_MZONE)<-2 then return false end
local g1=Duel.GetMatchingGroup(c21018.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c)
local g2=Duel.GetMatchingGroup(c21018.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c)
local lv=c:GetLevel()
if tuner then
local tlv=tuner:GetLevel()
if lv-tlv<=0 then return false end
local f1=tuner.tuner_filter
return g1:IsExists(c21018.synfilter2,1,tuner,lv-tlv,g2,f1,tuner)
end
return g1:IsExists(c21018.synfilter1,1,nil,lv,g1,g2)
end
function c21018.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner)
local g=Group.CreateGroup()
local g1=Duel.GetMatchingGroup(c21018.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c)
local g2=Duel.GetMatchingGroup(c21018.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c)
local lv=c:GetLevel()
if tuner then
g:AddCard(tuner)
local lv1=tuner:GetLevel()
local f1=tuner.tuner_filter
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL)
local t2=g1:FilterSelect(tp,c21018.synfilter2,1,1,tuner,lv-lv1,g2,f1,tuner)
local tuner2=t2:GetFirst()
g:AddCard(tuner2)
local lv2=tuner2:GetLevel()
local f2=tuner2.tuner_filter
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL)
local m3=g2:FilterSelect(tp,c21018.synfilter3,1,1,nil,lv-lv1-lv2,f1,f2)
g:Merge(m3)
else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL)
local t1=g1:FilterSelect(tp,c21018.synfilter1,1,1,nil,lv,g1,g2)
local tuner1=t1:GetFirst()
g:AddCard(tuner1)
local lv1=tuner1:GetLevel()
local f1=tuner1.tuner_filter
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL)
local t2=g1:FilterSelect(tp,c21018.synfilter2,1,1,tuner1,lv-lv1,g2,f1,tuner1)
local tuner2=t2:GetFirst()
g:AddCard(tuner2)
local lv2=tuner2:GetLevel()
local f2=tuner2.tuner_filter
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL)
local m3=g2:FilterSelect(tp,c21018.synfilter3,1,1,nil,lv-lv1-lv2,f1,f2)
g:Merge(m3)
end
c:SetMaterial(g)
Duel.SendtoGrave(g,REASON_MATERIAL+REASON_SYNCHRO)
end
function c21018.dfilter(c)
return c:IsFacedown()
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