Commit 065a2d95 authored by POLYMER's avatar POLYMER

fix

parent 413e4863
...@@ -11,6 +11,7 @@ function cm.initial_effect(c) ...@@ -11,6 +11,7 @@ function cm.initial_effect(c)
e1:SetDescription(aux.Stringid(22348465,0)) e1:SetDescription(aux.Stringid(22348465,0))
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e1:SetCode(EVENT_SPSUMMON_SUCCESS) e1:SetCode(EVENT_SPSUMMON_SUCCESS)
e1:SetProperty(EFFECT_FLAG_DELAY)
e1:SetCountLimit(1,22348465) e1:SetCountLimit(1,22348465)
e1:SetTarget(c22348465.ovtg) e1:SetTarget(c22348465.ovtg)
e1:SetOperation(c22348465.ovop) e1:SetOperation(c22348465.ovop)
......
...@@ -42,13 +42,14 @@ function s.sptg(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -42,13 +42,14 @@ function s.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
for tc in aux.Next(g) do for tc in aux.Next(g) do
att=att|tc:GetAttribute() att=att|tc:GetAttribute()
end end
if chk==0 then return Duel.IsExistingMatchingCard(s.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp,att) end if chk==0 then return Duel.IsExistingMatchingCard(s.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp,att) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE)
end end
function s.actfilter(c,tp) function s.actfilter(c,tp)
return c:IsSetCard(0x838) and c:IsType(TYPE_FIELD) and c:GetActivateEffect():IsActivatable(tp,true,true) return c:IsSetCard(0x838) and c:IsType(TYPE_FIELD) and c:GetActivateEffect():IsActivatable(tp,true,true)
end end
function s.spop(e,tp,eg,ep,ev,re,r,rp) function s.spop(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetLocationCount(tp,LOCATION_MZONE)==0 then return end
local att=0 local att=0
local g=eg:Filter(Card.IsFaceup,nil) local g=eg:Filter(Card.IsFaceup,nil)
for tc in aux.Next(g) do for tc in aux.Next(g) do
...@@ -96,6 +97,7 @@ end ...@@ -96,6 +97,7 @@ end
function s.tgop(e,tp,eg,ep,ev,re,r,rp) function s.tgop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local tc=e:GetLabelObject() local tc=e:GetLabelObject()
local fid=tc:GetFieldID()
if tc then if tc then
local code=tc:GetOriginalCode() local code=tc:GetOriginalCode()
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
...@@ -107,31 +109,25 @@ function s.tgop(e,tp,eg,ep,ev,re,r,rp) ...@@ -107,31 +109,25 @@ function s.tgop(e,tp,eg,ep,ev,re,r,rp)
e1:SetLabel(code) e1:SetLabel(code)
e1:SetReset(RESET_PHASE+PHASE_END) e1:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e1,tp) Duel.RegisterEffect(e1,tp)
tc:RegisterFlagEffect(id,RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_STANDBY,0,1,fid)
local e2=Effect.CreateEffect(c) local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e2:SetCode(EVENT_PHASE+PHASE_STANDBY) e2:SetCode(EVENT_PHASE+PHASE_STANDBY)
e2:SetCountLimit(1) e2:SetCountLimit(1)
e2:SetLabel(Duel.GetTurnCount()) e2:SetLabel(fid)
e2:SetLabelObject(tc) e2:SetLabelObject(tc)
e2:SetCondition(s.thcon)
e2:SetOperation(s.thop) e2:SetOperation(s.thop)
if Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()==PHASE_STANDBY then e2:SetReset(RESET_PHASE+PHASE_STANDBY)
e2:SetReset(RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,2)
else
e2:SetReset(RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN)
end
Duel.RegisterEffect(e2,tp) Duel.RegisterEffect(e2,tp)
end end
end end
function s.aclimit(e,re,tp) function s.aclimit(e,re,tp)
return re:GetHandler():IsOriginalCodeRule(e:GetLabel()) return re:GetHandler():IsOriginalCodeRule(e:GetLabel())
end end
function s.thcon(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetTurnCount()>e:GetLabel()
end
function s.thop(e,tp,eg,ep,ev,re,r,rp) function s.thop(e,tp,eg,ep,ev,re,r,rp)
local tc=e:GetLabelObject() local tc=e:GetLabelObject()
if tc and tc:IsLocation(LOCATION_GRAVE) then local fid=e:GetLabel()
if tc and tc:IsLocation(LOCATION_GRAVE) and tc:GetFlagEffectLabel(id)==fid then
Duel.SendtoHand(tc,nil,REASON_EFFECT) Duel.SendtoHand(tc,nil,REASON_EFFECT)
Duel.ConfirmCards(1-tp,tc) Duel.ConfirmCards(1-tp,tc)
end end
......
--幻叙渲染师 - 纳诺 --幻叙渲染师 - 纳诺
local s,id,o=GetID() local s,id,o=GetID()
function s.initial_effect(c) function s.initial_effect(c)
--synchro custom
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_SYNCHRO_MATERIAL_CUSTOM)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetTarget(s.syntg)
e1:SetValue(1)
e1:SetOperation(s.synop)
c:RegisterEffect(e1)
-- Special Summon both -- Special Summon both
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(id,0)) e1:SetDescription(aux.Stringid(id,0))
...@@ -32,96 +23,54 @@ function s.initial_effect(c) ...@@ -32,96 +23,54 @@ function s.initial_effect(c)
e2:SetTarget(s.attrtg) e2:SetTarget(s.attrtg)
e2:SetOperation(s.attrop) e2:SetOperation(s.attrop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
local e0=Effect.CreateEffect(c)
e0:SetType(EFFECT_TYPE_SINGLE)
e0:SetCode(EFFECT_EXTRA_SYNCHRO_MATERIAL)
e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e0:SetOwnerPlayer(tp)
e0:SetValue(s.matval)
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_GRANT)
e3:SetRange(LOCATION_MZONE)
e3:SetTargetRange(0,LOCATION_MZONE)
e3:SetTarget(s.eftg)
e3:SetLabelObject(e0)
c:RegisterEffect(e3)
end end
function s.synfilter(c,syncard,tuner,f) function s.matval(e,c)
return c:IsFaceupEx() and c:IsCanBeSynchroMaterial(syncard,tuner) and (f==nil or f(c,syncard)) return c:IsControler(e:GetOwnerPlayer())
end
function s.syncheck(c,g,mg,tp,lv,syncard,minc,maxc)
g:AddCard(c)
local ct=g:GetCount()
local res=s.syngoal(g,tp,lv,syncard,minc,ct)
or (ct<maxc and mg:IsExists(s.syncheck,1,g,g,mg,tp,lv,syncard,minc,maxc))
g:RemoveCard(c)
return res
end
function s.syngoal(g,tp,lv,syncard,minc,ct)
return ct>=minc
and g:CheckWithSumEqual(Card.GetSynchroLevel,lv,ct,ct,syncard)
and Duel.GetLocationCountFromEx(tp,tp,g,syncard)>0
and g:FilterCount(Card.IsControler,nil,1-tp)<=1
and aux.MustMaterialCheck(g,tp,EFFECT_MUST_BE_SMATERIAL)
end
function s.attfilter(c,att)
return c:GetAttribute()&att>0
end end
function s.syntg(e,syncard,f,min,max) function s.eftg(e,c)
local minc=min+1 return c:GetAttribute()&e:GetHandler():GetAttribute()>0
local maxc=max+1
local c=e:GetHandler()
local tp=syncard:GetControler()
local lv=syncard:GetLevel()
if lv<=c:GetLevel() then return false end
local g=Group.FromCards(c)
local mg=Duel.GetSynchroMaterial(tp):Filter(s.synfilter,c,syncard,c,f)
local ag=Duel.GetMatchingGroup(s.attfilter,tp,0,LOCATION_MZONE,c,c:GetAttribute())
local exg=ag:Filter(s.synfilter,c,syncard,c,f)
mg:Merge(exg)
return mg:IsExists(s.syncheck,1,g,g,mg,tp,lv,syncard,minc,maxc)
end end
function s.synop(e,tp,eg,ep,ev,re,r,rp,syncard,f,min,max) function s.cfilter(c,e,tp)
local minc=min+1 return c:IsSetCard(0x838) and c:IsType(TYPE_MONSTER) and not c:IsPublic() and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
local maxc=max+1
local c=e:GetHandler()
local lv=syncard:GetLevel()
local g=Group.FromCards(c)
local mg=Duel.GetSynchroMaterial(tp):Filter(s.synfilter,c,syncard,c,f)
local ag=Duel.GetMatchingGroup(s.attfilter,tp,0,LOCATION_MZONE,c,c:GetAttribute())
local exg=ag:Filter(s.synfilter,c,syncard,c,f)
mg:Merge(exg)
for i=1,maxc do
local cg=mg:Filter(s.syncheck,g,g,mg,tp,lv,syncard,minc,maxc)
if cg:GetCount()==0 then break end
local minct=1
if s.syngoal(g,tp,lv,syncard,minc,i) then
minct=0
end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL)
local sg=cg:Select(tp,minct,1,nil)
if sg:GetCount()==0 then break end
g:Merge(sg)
end
Duel.SetSynchroMaterial(g)
end
function s.cfilter(c)
return c:IsSetCard(0x838) and c:IsType(TYPE_MONSTER) and not c:IsPublic()
end end
function s.spcost(e,tp,eg,ep,ev,re,r,rp,chk) function s.spcost(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler() local c=e:GetHandler()
if chk==0 then return not c:IsPublic() and Duel.IsExistingMatchingCard(s.cfilter,tp,LOCATION_HAND,0,1,c) end if chk==0 then return Duel.IsExistingMatchingCard(s.cfilter,tp,LOCATION_HAND,0,1,c,e,tp) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM)
local g=Duel.SelectMatchingCard(tp,s.cfilter,tp,LOCATION_HAND,0,1,1,c) local sc=Duel.SelectMatchingCard(tp,s.cfilter,tp,LOCATION_HAND,0,1,1,c,e,tp):GetFirst()
g:AddCard(c) Duel.ConfirmCards(1-tp,sc)
Duel.ConfirmCards(1-tp,g)
Duel.ShuffleHand(tp) Duel.ShuffleHand(tp)
-- Keep track of the other card for the operation sc:CreateEffectRelation(e)
e:SetLabelObject(g:GetFirst()) e:SetLabelObject(sc)
end end
function s.sptg(e,tp,eg,ep,ev,re,r,rp,chk) function s.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) and 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,nil,2,tp,LOCATION_HAND) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_HAND)
end end
function s.spop(e,tp,eg,ep,ev,re,r,rp) function s.spop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local tc=e:GetLabelObject() -- The other revealed card local tc=e:GetLabelObject()
if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end
if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end
local g=Group.FromCards(c,tc) local g=Group.FromCards(c,tc)
-- Check if both are still in hand and summonable local fg=g:Filter(Card.IsRelateToChain,nil)
if g:FilterCount(function(sc) return sc:IsLocation(LOCATION_HAND) and sc:IsCanBeSpecialSummoned(e,0,tp,false,false) end, nil)==2 then if not c:IsCanBeSpecialSummoned(e,0,tp,false,false) or not tc:IsCanBeSpecialSummoned(e,0,tp,false,false) then return end
Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) if fg:GetCount()~=2 then return end
end Duel.SpecialSummon(fg,0,tp,tp,false,false,POS_FACEUP)
end end
function s.attrfilter(c,e) function s.attrfilter(c,e)
return c:IsSetCard(0x838) and c:IsType(TYPE_MONSTER) and c:IsCanBeEffectTarget(e) return c:IsSetCard(0x838) and c:IsType(TYPE_MONSTER) and c:IsCanBeEffectTarget(e)
end end
...@@ -154,6 +103,6 @@ function s.attrop(e,tp,eg,ep,ev,re,r,rp) ...@@ -154,6 +103,6 @@ function s.attrop(e,tp,eg,ep,ev,re,r,rp)
e1:SetReset(RESET_EVENT+RESETS_STANDARD) e1:SetReset(RESET_EVENT+RESETS_STANDARD)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
end end
end end
end end
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
local s,id,o=GetID() local s,id,o=GetID()
function s.initial_effect(c) function s.initial_effect(c)
--synchro summon --synchro summon
aux.AddSynchroMixProcedure(c,aux.FilterBoolFunction(Card.IsSetCard,0x838),nil,nil,aux.Tuner(nil),1,99) aux.AddSynchroMixProcedure(c,s.tfilter,nil,nil,nil,1,99)
c:EnableReviveLimit() c:EnableReviveLimit()
--material check --material check
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
...@@ -35,6 +35,9 @@ function s.initial_effect(c) ...@@ -35,6 +35,9 @@ function s.initial_effect(c)
e3:SetOperation(s.thop) e3:SetOperation(s.thop)
c:RegisterEffect(e3) c:RegisterEffect(e3)
end end
function s.tfilter(c)
return c:IsType(TYPE_TUNER) and c:IsSetCard(0x838)
end
function s.matcheck(e,c) function s.matcheck(e,c)
local g=c:GetMaterial() local g=c:GetMaterial()
local att=0 local att=0
......
...@@ -3,7 +3,7 @@ local s,id,o=GetID() ...@@ -3,7 +3,7 @@ local s,id,o=GetID()
function s.initial_effect(c) function s.initial_effect(c)
--Activate --Activate
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_REMOVE+CATEGORY_TOHAND+CATEGORY_SEARCH+CATEGORY_SPECIAL_SUMMON) e1:SetCategory(CATEGORY_REMOVE+CATEGORY_TOHAND+CATEGORY_SPECIAL_SUMMON)
e1:SetType(EFFECT_TYPE_ACTIVATE) e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN) e1:SetCode(EVENT_FREE_CHAIN)
e1:SetCountLimit(1,id+EFFECT_COUNT_CODE_OATH) e1:SetCountLimit(1,id+EFFECT_COUNT_CODE_OATH)
......
...@@ -100,7 +100,7 @@ function s.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -100,7 +100,7 @@ function s.sumtg(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler() local c=e:GetHandler()
if chk==0 then return c:IsSummonable(true,nil) if chk==0 then return c:IsSummonable(true,nil)
and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and Duel.GetLocationCount(tp,LOCATION_MZONE)>1
and Duel.IsPlayerCanSpecialSummonMonster(tp,id+o,0x838,TYPES_TOKEN+TYPE_MONSTER,1500,1500,4,RACE_MACHINE,ATTRIBUTE_EARTH) end and Duel.IsPlayerCanSpecialSummonMonster(tp,id+o,0x838,TYPE_TOKEN+TYPE_MONSTER,1500,1500,4,RACE_MACHINE,ATTRIBUTE_EARTH) end
Duel.SetOperationInfo(0,CATEGORY_SUMMON,e:GetHandler(),1,0,0) Duel.SetOperationInfo(0,CATEGORY_SUMMON,e:GetHandler(),1,0,0)
Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0)
...@@ -110,7 +110,7 @@ function s.sumop(e,tp,eg,ep,ev,re,r,rp) ...@@ -110,7 +110,7 @@ function s.sumop(e,tp,eg,ep,ev,re,r,rp)
if c:IsRelateToChain() then if c:IsRelateToChain() then
if Duel.Summon(tp,c,true,nil)~=0 then if Duel.Summon(tp,c,true,nil)~=0 then
if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0
or not Duel.IsPlayerCanSpecialSummonMonster(tp,12345678,0x838,TYPES_TOKEN+TYPE_MONSTER,1500,1500,4,RACE_MACHINE,ATTRIBUTE_EARTH) then return end or not Duel.IsPlayerCanSpecialSummonMonster(tp,12345678,0x838,TYPE_TOKEN+TYPE_MONSTER,1500,1500,4,RACE_MACHINE,ATTRIBUTE_EARTH) then return end
Duel.BreakEffect() Duel.BreakEffect()
local token=Duel.CreateToken(tp,12345678) local token=Duel.CreateToken(tp,12345678)
Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP)
......
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