Commit ccb60c96 authored by Satty's avatar Satty

fix

parent 2af646b4
Pipeline #35639 passed with stages
in 62 minutes and 41 seconds
...@@ -32,15 +32,15 @@ function s.thcost(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -32,15 +32,15 @@ function s.thcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsDiscardable() end if chk==0 then return e:GetHandler():IsDiscardable() end
Duel.SendtoGrave(e:GetHandler(),REASON_COST+REASON_DISCARD) Duel.SendtoGrave(e:GetHandler(),REASON_COST+REASON_DISCARD)
end end
function s.thfilter(c) function s.thfilter(c,tp)
return c:IsSetCard(0xc540) and c:IsType(TYPE_CONTINUOUS) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:GetActivateEffect():IsActivatable(tp) return c:IsSetCard(0xc540) and c:IsType(TYPE_CONTINUOUS) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:GetActivateEffect():IsActivatable(tp)
end end
function s.thtg(e,tp,eg,ep,ev,re,r,rp,chk) function s.thtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(s.thfilter,tp,LOCATION_DECK,0,1,nil) end if chk==0 then return Duel.IsExistingMatchingCard(s.thfilter,tp,LOCATION_DECK,0,1,nil,tp) end
end end
function s.thop(e,tp,eg,ep,ev,re,r,rp) function s.thop(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_OPERATECARD) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_OPERATECARD)
local g=Duel.SelectMatchingCard(tp,s.thfilter,tp,LOCATION_DECK,0,1,1,nil) local g=Duel.SelectMatchingCard(tp,s.thfilter,tp,LOCATION_DECK,0,1,1,nil,tp)
if g:GetCount()>0 then if g:GetCount()>0 then
local tc=g:GetFirst() local tc=g:GetFirst()
Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true)
......
...@@ -4,7 +4,7 @@ function s.initial_effect(c) ...@@ -4,7 +4,7 @@ function s.initial_effect(c)
--token --token
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN)
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e1:SetCode(EVENT_SUMMON_SUCCESS) e1:SetCode(EVENT_SUMMON_SUCCESS)
e1:SetCountLimit(1,id) e1:SetCountLimit(1,id)
e1:SetTarget(s.sptg) e1:SetTarget(s.sptg)
...@@ -44,17 +44,20 @@ end ...@@ -44,17 +44,20 @@ end
function s.spcon2(e,tp,eg,ep,ev,re,r,rp) function s.spcon2(e,tp,eg,ep,ev,re,r,rp)
return Duel.IsExistingMatchingCard(s.cfilter,tp,LOCATION_SZONE,0,1,nil) return Duel.IsExistingMatchingCard(s.cfilter,tp,LOCATION_SZONE,0,1,nil)
end end
function s.refilter(c)
return c:IsReleasableByEffect() or c:IsLocation(LOCATION_HAND)
end
function s.sptg2(e,tp,eg,ep,ev,re,r,rp,chk) function s.sptg2(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler() local c=e:GetHandler()
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and Duel.IsExistingMatchingCard(Card.IsReleasableByEffect,tp,LOCATION_ONFIELD+LOCATION_HAND,0,1,c) end and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and Duel.IsExistingMatchingCard(s.refilter,tp,LOCATION_ONFIELD+LOCATION_HAND,0,1,c) 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 s.spop2(e,tp,eg,ep,ev,re,r,rp) function s.spop2(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
local tg=Duel.SelectMatchingCard(tp,Card.IsReleasableByEffect,tp,LOCATION_ONFIELD+LOCATION_HAND,0,1,1,c) local tg=Duel.SelectMatchingCard(tp,s.refilter,tp,LOCATION_ONFIELD+LOCATION_HAND,0,1,1,c)
if Duel.Release(tg,REASON_EFFECT)~=0 and c:IsRelateToEffect(e) then if Duel.SendtoGrave(tg,REASON_EFFECT+REASON_RELEASE)~=0 and c:IsRelateToEffect(e) then
Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)
end end
......
...@@ -41,7 +41,7 @@ function s.thop(e,tp,eg,ep,ev,re,r,rp) ...@@ -41,7 +41,7 @@ function s.thop(e,tp,eg,ep,ev,re,r,rp)
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
local e3=Effect.CreateEffect(c) local e3=Effect.CreateEffect(e:GetHandler())
e3:SetType(EFFECT_TYPE_FIELD) e3:SetType(EFFECT_TYPE_FIELD)
e3:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) e3:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON)
e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
...@@ -69,7 +69,7 @@ function s.sptg2(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -69,7 +69,7 @@ function s.sptg2(e,tp,eg,ep,ev,re,r,rp,chk)
and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and Duel.IsExistingMatchingCard(s.tgfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,c) end and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and Duel.IsExistingMatchingCard(s.tgfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,c) 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 s.cfilter(c,g,mc) function s.cfilter2(c,g,mc)
return g:CheckSubGroup(s.mtfilter,1,#g,mc,c) return g:CheckSubGroup(s.mtfilter,1,#g,mc,c)
end end
function s.mtfilter(g,mc,c) function s.mtfilter(g,mc,c)
...@@ -92,7 +92,7 @@ function s.spop2(e,tp,eg,ep,ev,re,r,rp) ...@@ -92,7 +92,7 @@ function s.spop2(e,tp,eg,ep,ev,re,r,rp)
e1:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_DISABLE) e1:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_DISABLE)
c:RegisterEffect(e1) c:RegisterEffect(e1)
local sg=Duel.GetMatchingGroup(Card.IsCanBeSynchroMaterial,tp,LOCATION_MZONE,LOCATION_MZONE,c) local sg=Duel.GetMatchingGroup(Card.IsCanBeSynchroMaterial,tp,LOCATION_MZONE,LOCATION_MZONE,c)
local kg=Duel.GetMatchingGroup(s.cfilter,tp,LOCATION_EXTRA,0,nil,sg,c) local kg=Duel.GetMatchingGroup(s.cfilter2,tp,LOCATION_EXTRA,0,nil,sg,c)
if kg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(id,3)) then if kg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(id,3)) then
Duel.BreakEffect() Duel.BreakEffect()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
......
...@@ -44,6 +44,7 @@ function s.thtg(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -44,6 +44,7 @@ function s.thtg(e,tp,eg,ep,ev,re,r,rp,chk)
end end
end end
function s.thop(e,tp,eg,ep,ev,re,r,rp) function s.thop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local tg=Duel.SelectMatchingCard(tp,s.tgfilter,tp,LOCATION_ONFIELD,0,1,1,nil) local tg=Duel.SelectMatchingCard(tp,s.tgfilter,tp,LOCATION_ONFIELD,0,1,1,nil)
if Duel.SendtoGrave(tg,REASON_EFFECT)~=0 then if Duel.SendtoGrave(tg,REASON_EFFECT)~=0 then
...@@ -51,7 +52,7 @@ function s.thop(e,tp,eg,ep,ev,re,r,rp) ...@@ -51,7 +52,7 @@ function s.thop(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.SelectMatchingCard(tp,s.thfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp):GetFirst() local tc=Duel.SelectMatchingCard(tp,s.thfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp):GetFirst()
if tc then if tc then
local th=tc:IsAbleToHand() local th=tc:IsAbleToHand()
local sp=Duel.IsExistingMatchingCard(s.ckfilter,tp,LOCATION_MZONE,0,1,nil) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) local sp=Duel.IsExistingMatchingCard(s.ckfilter,tp,LOCATION_MZONE,0,1,nil) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and tc:IsCanBeSpecialSummoned(e,0,tp,false,false)
local op=0 local op=0
if th and sp then op=Duel.SelectOption(tp,1190,1152) if th and sp then op=Duel.SelectOption(tp,1190,1152)
elseif th then op=0 elseif th then op=0
...@@ -64,7 +65,7 @@ function s.thop(e,tp,eg,ep,ev,re,r,rp) ...@@ -64,7 +65,7 @@ function s.thop(e,tp,eg,ep,ev,re,r,rp)
end end
end end
end end
local e3=Effect.CreateEffect(c) local e3=Effect.CreateEffect(e:GetHandler())
e3:SetType(EFFECT_TYPE_FIELD) e3:SetType(EFFECT_TYPE_FIELD)
e3:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) e3:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON)
e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
...@@ -83,19 +84,19 @@ end ...@@ -83,19 +84,19 @@ end
function s.spcon2(e,tp,eg,ep,ev,re,r,rp) function s.spcon2(e,tp,eg,ep,ev,re,r,rp)
return Duel.IsExistingMatchingCard(s.cfilter,tp,LOCATION_SZONE,0,1,nil) return Duel.IsExistingMatchingCard(s.cfilter,tp,LOCATION_SZONE,0,1,nil)
end end
function s.tgfilter(c) function s.tgfilter2(c)
return c:IsFaceup() and c:IsLevelAbove(1) return c:IsFaceup() and c:IsLevelAbove(1)
end end
function s.sptg2(e,tp,eg,ep,ev,re,r,rp,chk) function s.sptg2(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler() local c=e:GetHandler()
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and Duel.IsExistingMatchingCard(s.tgfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,c) end and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and Duel.IsExistingMatchingCard(s.tgfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,1,c) 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 s.spop2(e,tp,eg,ep,ev,re,r,rp) function s.spop2(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP)
local g=Duel.SelectTarget(tp,s.tgfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) local g=Duel.SelectTarget(tp,s.tgfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil)
local tc=g:GetFirst() local tc=g:GetFirst()
if tc then if tc then
local op=0 local op=0
......
...@@ -80,14 +80,6 @@ function s.sptg2(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -80,14 +80,6 @@ function s.sptg2(e,tp,eg,ep,ev,re,r,rp,chk)
and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and Duel.IsExistingMatchingCard(s.tgfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,c) end and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and Duel.IsExistingMatchingCard(s.tgfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,c) 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 s.cfilter(c,g,mc)
return g:CheckSubGroup(s.mtfilter,1,#g,mc,c)
end
function s.mtfilter(g,mc,c)
local sg=g:Clone()
sg:AddCard(mc)
return sg:GetSum(Card.GetSynchroLevel,c)==c:GetLevel() and c:IsSynchroSummonable(nil,sg)
end
function s.spop2(e,tp,eg,ep,ev,re,r,rp) function s.spop2(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
......
...@@ -40,7 +40,7 @@ function s.activate(e,tp,eg,ep,ev,re,r,rp) ...@@ -40,7 +40,7 @@ function s.activate(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL)
local g=Duel.SelectMatchingCard(tp,Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,1,nil) local g=Duel.SelectMatchingCard(tp,Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,1,nil)
local tc=g:GetFirst() local tc=g:GetFirst()
if tc:IsRelateToEffect(e) then if tc then
Duel.GetControl(tc,tp,PHASE_END,1) Duel.GetControl(tc,tp,PHASE_END,1)
end end
end end
......
...@@ -87,7 +87,7 @@ function s.lvop(e,tp,eg,ep,ev,re,r,rp) ...@@ -87,7 +87,7 @@ function s.lvop(e,tp,eg,ep,ev,re,r,rp)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_UPDATE_LEVEL) e1:SetCode(EFFECT_UPDATE_LEVEL)
e1:SetValue(lvl) e1:SetValue(lvl)
e1:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END) e1:SetReset(RESET_EVENT+RESETS_STANDARD)
tc:RegisterEffect(e1) tc:RegisterEffect(e1)
end end
end end
......
...@@ -44,7 +44,7 @@ function s.tfcost(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -44,7 +44,7 @@ function s.tfcost(e,tp,eg,ep,ev,re,r,rp,chk)
local g=Duel.GetMatchingGroup(s.cfilter,tp,LOCATION_HAND+LOCATION_ONFIELD,0,c,tp,Card.IsAbleToGraveAsCost) local g=Duel.GetMatchingGroup(s.cfilter,tp,LOCATION_HAND+LOCATION_ONFIELD,0,c,tp,Card.IsAbleToGraveAsCost)
if chk==0 then return g:GetCount()>0 end if chk==0 then return g:GetCount()>0 end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local tc=Duel.SelectMatchingCard(tp,s.tffilter,tp,LOCATION_DECK,0,1,1,nil,tp):GetFirst() local tc=Duel.SelectMatchingCard(tp,s.cfilter,tp,LOCATION_HAND+LOCATION_ONFIELD,0,1,1,nil,tp):GetFirst()
Duel.SendtoGrave(tc,REASON_COST) Duel.SendtoGrave(tc,REASON_COST)
end end
function s.tffilter(c,tp) function s.tffilter(c,tp)
...@@ -84,12 +84,12 @@ function s.disop(e,tp,eg,ep,ev,re,r,rp) ...@@ -84,12 +84,12 @@ function s.disop(e,tp,eg,ep,ev,re,r,rp)
end end
end end
-- --
function s.cfilter(c,tp) function s.cfilter2(c,tp)
return c:IsPreviousControler(tp) return c:IsPreviousControler(tp)
and c:IsSetCard(0xc540) and c:IsType(TYPE_CONTINUOUS) and c:IsType(TYPE_TRAP) and c:IsSetCard(0xc540) and c:IsType(TYPE_CONTINUOUS) and c:IsType(TYPE_TRAP)
end end
function s.spcon(e,tp,eg,ep,ev,re,r,rp) function s.spcon(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(s.cfilter,1,nil,tp) return eg:IsExists(s.cfilter2,1,nil,tp)
end end
function s.sptg2(e,tp,eg,ep,ev,re,r,rp,chk) function s.sptg2(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
......
...@@ -10,11 +10,11 @@ function s.initial_effect(c) ...@@ -10,11 +10,11 @@ function s.initial_effect(c)
e1:SetCode(EFFECT_INDESTRUCTABLE_COUNT) e1:SetCode(EFFECT_INDESTRUCTABLE_COUNT)
e1:SetRange(LOCATION_MZONE) e1:SetRange(LOCATION_MZONE)
e1:SetTargetRange(LOCATION_ONFIELD,0) e1:SetTargetRange(LOCATION_ONFIELD,0)
e1:SetTarget(s.indtg)
e1:SetValue(s.indct) e1:SetValue(s.indct)
c:RegisterEffect(e1) c:RegisterEffect(e1)
-- --
local e2=Effect.CreateEffect(c) local e2=Effect.CreateEffect(c)
e2:SetDescription(aux.Stringid(id,2))
e2:SetType(EFFECT_TYPE_QUICK_O) e2:SetType(EFFECT_TYPE_QUICK_O)
e2:SetRange(LOCATION_MZONE) e2:SetRange(LOCATION_MZONE)
e2:SetCode(EVENT_FREE_CHAIN) e2:SetCode(EVENT_FREE_CHAIN)
...@@ -25,6 +25,7 @@ function s.initial_effect(c) ...@@ -25,6 +25,7 @@ function s.initial_effect(c)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--disable and reduce ATK --disable and reduce ATK
local e3=Effect.CreateEffect(c) local e3=Effect.CreateEffect(c)
e3:SetDescription(aux.Stringid(id,1))
e3:SetCategory(CATEGORY_DISABLE) e3:SetCategory(CATEGORY_DISABLE)
e3:SetType(EFFECT_TYPE_QUICK_O) e3:SetType(EFFECT_TYPE_QUICK_O)
e3:SetCode(EVENT_FREE_CHAIN) e3:SetCode(EVENT_FREE_CHAIN)
...@@ -49,9 +50,6 @@ function s.sfilter(c) ...@@ -49,9 +50,6 @@ function s.sfilter(c)
return c:IsSetCard(0xa540) and c:IsType(TYPE_SYNCHRO) return c:IsSetCard(0xa540) and c:IsType(TYPE_SYNCHRO)
end end
function s.indtg(e,c)
return c:IsFaceup()
end
function s.indct(e,re,r,rp) function s.indct(e,re,r,rp)
if bit.band(r,REASON_BATTLE+REASON_EFFECT)~=0 then if bit.band(r,REASON_BATTLE+REASON_EFFECT)~=0 then
return 1 return 1
...@@ -59,7 +57,7 @@ function s.indct(e,re,r,rp) ...@@ -59,7 +57,7 @@ function s.indct(e,re,r,rp)
end end
-- --
function s.filter2(c,tp) function s.filter2(c,tp)
return c:IsSetCard(0xc540) and c:IsType(TYPE_TRAP+TYPE_SPELL) and c:GetActivateEffect():IsActivatable(tp,true,false) return c:IsSetCard(0xc540) and c:IsType(TYPE_TRAP+TYPE_SPELL) and (c:IsType(TYPE_CONTINUOUS)or c:IsType(TYPE_FIELD)) and c:GetActivateEffect():IsActivatable(tp,true,false)
end end
function s.acttg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function s.acttg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
local ct=Duel.GetLocationCount(tp,LOCATION_SZONE) local ct=Duel.GetLocationCount(tp,LOCATION_SZONE)
...@@ -74,7 +72,11 @@ function s.actop(e,tp,eg,ep,ev,re,r,rp) ...@@ -74,7 +72,11 @@ function s.actop(e,tp,eg,ep,ev,re,r,rp)
local tg=g:Filter(Card.IsRelateToEffect,nil,e) local tg=g:Filter(Card.IsRelateToEffect,nil,e)
local tc=g:GetFirst() local tc=g:GetFirst()
while tc do while tc do
if tc:IsType(TYPE_FIELD) then
Duel.MoveToField(tc,tp,tp,LOCATION_FZONE,POS_FACEUP,true)
else
Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true)
end
local te=tc:GetActivateEffect() local te=tc:GetActivateEffect()
local tep=tc:GetControler() local tep=tc:GetControler()
local cost=te:GetCost() local cost=te:GetCost()
......
--璃月 重云 --璃月 重云
local s,id=GetID() local s,id=GetID()
function s.initial_effect(c) function s.initial_effect(c)
--Synchro summon
aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1)
c:EnableReviveLimit()
-- --
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(id,0)) e1:SetDescription(aux.Stringid(id,0))
...@@ -31,19 +28,19 @@ function s.spfilter(c,tp) ...@@ -31,19 +28,19 @@ function s.spfilter(c,tp)
return c:IsFaceup() and c:IsAbleToHand() return c:IsFaceup() and c:IsAbleToHand()
end end
function s.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function s.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and s.spfilter(chkc,tp) end if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and s.spfilter(chkc) end
local c=e:GetHandler() local c=e:GetHandler()
if chk==0 then return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 if chk==0 then return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.IsExistingTarget(s.spfilter,tp,LOCATION_MZONE,0,1,nil,tp) end and Duel.IsExistingTarget(s.spfilter,tp,LOCATION_MZONE,0,1,nil) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND)
local g=Duel.SelectTarget(tp,s.spfilter,tp,LOCATION_MZONE,0,1,1,nil,tp) local g=Duel.SelectTarget(tp,s.spfilter,tp,LOCATION_MZONE,0,1,1,nil)
Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0)
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=Duel.GetFirstTarget() local tc=Duel.GetFirstTarget()
if c:IsRelateToChain() and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)~=0 and tc:IsRelateToChain() and tc:IsType(TYPE_MONSTER) if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)~=0 and tc:IsRelateToChain() and tc:IsType(TYPE_MONSTER)
then then
Duel.SendtoHand(tc,nil,REASON_EFFECT) Duel.SendtoHand(tc,nil,REASON_EFFECT)
end end
......
...@@ -64,9 +64,9 @@ function s.fgoal(sg,e,tp) ...@@ -64,9 +64,9 @@ function s.fgoal(sg,e,tp)
end end
function s.rmcost(e,tp,eg,ep,ev,re,r,rp,chk) function s.rmcost(e,tp,eg,ep,ev,re,r,rp,chk)
local g=Duel.GetReleaseGroup(tp) local g=Duel.GetReleaseGroup(tp)
if chk==0 then return mg:CheckSubGroup(s.fgoal,1,9,e,tp) end if chk==0 then return g:CheckSubGroup(s.fgoal,1,9,e,tp) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
local sg=mg:SelectSubGroup(tp,s.fgoal,false,1,9,e,tp) local sg=g:SelectSubGroup(tp,s.fgoal,false,1,9,e,tp)
aux.UseExtraReleaseCount(sg,tp) aux.UseExtraReleaseCount(sg,tp)
Duel.Release(sg,REASON_COST) Duel.Release(sg,REASON_COST)
end end
......
...@@ -6,6 +6,7 @@ function s.initial_effect(c) ...@@ -6,6 +6,7 @@ function s.initial_effect(c)
e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH)
e1:SetType(EFFECT_TYPE_IGNITION) e1:SetType(EFFECT_TYPE_IGNITION)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetCountLimit(1,id)
e1:SetCost(s.cost) e1:SetCost(s.cost)
e1:SetTarget(s.target) e1:SetTarget(s.target)
e1:SetOperation(s.operation) e1:SetOperation(s.operation)
...@@ -61,8 +62,8 @@ function s.thop(e,tp,eg,ep,ev,re,r,rp) ...@@ -61,8 +62,8 @@ function s.thop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local tg=Duel.SelectMatchingCard(tp,s.tgfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) local tg=Duel.SelectMatchingCard(tp,s.tgfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil)
if tg:GetCount()>0 and Duel.SendtoGrave(tg,REASON_EFFECT)~=0 then if tg:GetCount()>0 and Duel.SendtoGrave(tg,REASON_EFFECT)~=0 and c:IsRelateToEffect(e) then
Duel.SendtoHand(tg,nil,REASON_EFFECT) Duel.SendtoHand(c,nil,REASON_EFFECT)
end end
end end
......
...@@ -29,7 +29,7 @@ function s.initial_effect(c) ...@@ -29,7 +29,7 @@ function s.initial_effect(c)
c:RegisterEffect(e3) c:RegisterEffect(e3)
--special summon --special summon
local e4=Effect.CreateEffect(c) local e4=Effect.CreateEffect(c)
e3:SetDescription(aux.Stringid(id,3)) e4:SetDescription(aux.Stringid(id,3))
e4:SetCategory(CATEGORY_TODECK+CATEGORY_DRAW) e4:SetCategory(CATEGORY_TODECK+CATEGORY_DRAW)
e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O)
e4:SetProperty(EFFECT_FLAG_DELAY) e4:SetProperty(EFFECT_FLAG_DELAY)
......
...@@ -67,7 +67,7 @@ function s.spop1(e,tp,eg,ep,ev,re,r,rp) ...@@ -67,7 +67,7 @@ function s.spop1(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local tc=Duel.GetFirstTarget() local tc=Duel.GetFirstTarget()
local lv=tc:GetLevel() local lv=tc:GetLevel()
local g=Duel.GetMatchingGroup(s.cfilter2,tp,0,LOCATION_MZONE,1,1,nil,lv) local g=Duel.GetMatchingGroup(s.cfilter2,tp,0,LOCATION_MZONE,nil,lv)
local tc1=g:GetFirst() local tc1=g:GetFirst()
while tc1 do while tc1 do
local e2=Effect.CreateEffect(c) local e2=Effect.CreateEffect(c)
......
...@@ -8,7 +8,7 @@ function s.initial_effect(c) ...@@ -8,7 +8,7 @@ function s.initial_effect(c)
e1:SetCountLimit(1,id) e1:SetCountLimit(1,id)
e1:SetCost(s.cost) e1:SetCost(s.cost)
e1:SetTarget(s.target) e1:SetTarget(s.target)
e1:SetOperation(s.activate) e1:SetOperation(s.operation)
c:RegisterEffect(e1) c:RegisterEffect(e1)
--to hand --to hand
local e2=Effect.CreateEffect(c) local e2=Effect.CreateEffect(c)
...@@ -32,7 +32,7 @@ function s.thfilter2(c,tp) ...@@ -32,7 +32,7 @@ function s.thfilter2(c,tp)
return c:IsType(TYPE_CONTINUOUS) and c:IsType(TYPE_TRAP) and c:IsSetCard(0xc540) and c:GetActivateEffect():IsActivatable(tp) return c:IsType(TYPE_CONTINUOUS) and c:IsType(TYPE_TRAP) and c:IsSetCard(0xc540) and c:GetActivateEffect():IsActivatable(tp)
end end
function s.target(e,tp,eg,ep,ev,re,r,rp,chk) function s.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 and Duel.IsExistingMatchingCard(s.thfilter1,tp,LOCATION_DECK,0,1,nil,tp) and Duel.IsExistingMatchingCard(s.thfilter2,tp,LOCATION_DECK,0,1,nil,tp) end if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>1 and Duel.IsExistingMatchingCard(s.thfilter1,tp,LOCATION_DECK,0,1,nil,tp) and Duel.IsExistingMatchingCard(s.thfilter2,tp,LOCATION_DECK,0,1,nil,tp) end
end end
function s.operation(e,tp,eg,ep,ev,re,r,rp) function s.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
...@@ -69,15 +69,20 @@ function s.scon(e) ...@@ -69,15 +69,20 @@ function s.scon(e)
return Duel.IsExistingMatchingCard(s.sfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,3,nil) return Duel.IsExistingMatchingCard(s.sfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,3,nil)
end end
function s.recop(e,tp,eg,ep,ev,re,r,rp) function s.recop(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_CARD,0,id) local rg=eg:Filter(Card.IsSummonLocation,nil,LOCATION_GRAVE)
local tc=eg:GetFirst() if rg:GetCount()>0 and rg:IsExists(Card.IsAttackAbove,1,nil,1) then
local tc=rg:GetFirst()
local rec=0 local rec=0
while tc do while tc do
local atk=tc:GetAttack() local atk=tc:GetAttack()
rec=rec+atk rec=rec+atk
tc=eg:GetNext() tc=rg:GetNext()
end end
if rec>0 then
Duel.Hint(HINT_CARD,0,id)
Duel.Recover(tp,rec,REASON_EFFECT) Duel.Recover(tp,rec,REASON_EFFECT)
end
end
end end
-- --
function s.tgfilter(c) function s.tgfilter(c)
......
...@@ -20,13 +20,17 @@ function s.initial_effect(c) ...@@ -20,13 +20,17 @@ function s.initial_effect(c)
e0:SetOperation(s.operation) e0:SetOperation(s.operation)
c:RegisterEffect(e0) c:RegisterEffect(e0)
--cannot draw --cannot draw
local e1=Effect.CreateEffect(c) local e3=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD) e3:SetType(EFFECT_TYPE_FIELD)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e1:SetCode(EFFECT_CANNOT_DRAW) e3:SetCode(EFFECT_CANNOT_DRAW)
e1:SetRange(LOCATION_SZONE) e3:SetRange(LOCATION_SZONE)
e1:SetTargetRange(1,1) e3:SetTargetRange(1,1)
c:RegisterEffect(e1) c:RegisterEffect(e3)
local e4=e3:Clone()
e4:SetCode(EFFECT_DRAW_COUNT)
e4:SetValue(0)
c:RegisterEffect(e4)
--recover --recover
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)
......
...@@ -252,7 +252,7 @@ cm.ChangePosition = function () ...@@ -252,7 +252,7 @@ cm.ChangePosition = function ()
local tc = paras[1] local tc = paras[1]
tc = aux.GetValueType(tc) == 'Group' and tc:GetFirst() or (aux.GetValueType(tc) == 'Card' and tc or nil) tc = aux.GetValueType(tc) == 'Group' and tc:GetFirst() or (aux.GetValueType(tc) == 'Card' and tc or nil)
if not tc or tc:IsType(TYPE_TOKEN) then return 0 end if not tc or tc:IsType(TYPE_TOKEN) then return 0 end
return cm.Base.ChangePosition(table.unpack({paras})) return cm.Base.ChangePosition(table.unpack(paras))
end end
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