Commit ab564c7b authored by POLYMER's avatar POLYMER

fix

parent dc0874f1
...@@ -28,6 +28,7 @@ function cm.initial_effect(c) ...@@ -28,6 +28,7 @@ function cm.initial_effect(c)
c:RegisterEffect(e2) c:RegisterEffect(e2)
end end
function cm.regcon(e,tp,eg,ep,ev,re,r,rp) function cm.regcon(e,tp,eg,ep,ev,re,r,rp)
if not e:GetHandler():GetReasonEffect() then return false end
return e:GetHandler():GetReasonEffect():GetHandler():IsCode(15000624) return e:GetHandler():GetReasonEffect():GetHandler():IsCode(15000624)
end end
function cm.regop(e,tp,eg,ep,ev,re,r,rp) function cm.regop(e,tp,eg,ep,ev,re,r,rp)
......
...@@ -58,7 +58,7 @@ function cm.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -58,7 +58,7 @@ function cm.atkcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(cm.atkfilter,tp,LOCATION_MZONE,0,1,nil) end if chk==0 then return Duel.IsExistingMatchingCard(cm.atkfilter,tp,LOCATION_MZONE,0,1,nil) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP)
local g=Duel.SelectMatchingCard(tp,cm.atkfilter,tp,LOCATION_MZONE,0,1,1,nil) local g=Duel.SelectMatchingCard(tp,cm.atkfilter,tp,LOCATION_MZONE,0,1,1,nil)
Duel.ChangePosition(g,POS_FACEDOWN_ATTACK) Duel.ChangePosition(g,POS_FACEDOWN_DEFENSE)
end end
function cm.atkop(e,tp,eg,ep,ev,re,r,rp) function cm.atkop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
...@@ -9,7 +9,7 @@ function cm.initial_effect(c) ...@@ -9,7 +9,7 @@ function cm.initial_effect(c)
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e1:SetProperty(EFFECT_FLAG_DELAY) e1:SetProperty(EFFECT_FLAG_DELAY)
e1:SetCode(EVENT_SUMMON_SUCCESS) e1:SetCode(EVENT_SUMMON_SUCCESS)
e1:SetCountLimit(1,m) e1:SetCountLimit(1,m+1)
e1:SetTarget(cm.sptg) e1:SetTarget(cm.sptg)
e1:SetOperation(cm.spop) e1:SetOperation(cm.spop)
c:RegisterEffect(e1) c:RegisterEffect(e1)
...@@ -24,6 +24,16 @@ function cm.initial_effect(c) ...@@ -24,6 +24,16 @@ function cm.initial_effect(c)
e3:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) e3:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET)
e3:SetValue(cm.atlimit) e3:SetValue(cm.atlimit)
c:RegisterEffect(e3) c:RegisterEffect(e3)
--special summon
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_SPSUMMON_PROC)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND)
e1:SetCountLimit(1,m+EFFECT_COUNT_CODE_OATH)
e1:SetCondition(cm.sprcon)
e1:SetOperation(cm.sprop)
c:RegisterEffect(e1)
end end
function cm.spfilter(c,e,tp) function cm.spfilter(c,e,tp)
return c:IsSetCard(0xf11) and not c:IsCode(m) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) return c:IsSetCard(0xf11) and not c:IsCode(m) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
...@@ -56,4 +66,23 @@ function cm.spop(e,tp,eg,ep,ev,re,r,rp) ...@@ -56,4 +66,23 @@ function cm.spop(e,tp,eg,ep,ev,re,r,rp)
end end
function cm.atlimit(e,c) function cm.atlimit(e,c)
return c~=e:GetHandler() and c:IsFaceup() and c:IsSetCard(0xf11) return c~=e:GetHandler() and c:IsFaceup() and c:IsSetCard(0xf11)
end
function cm.sprfilter(c)
return c:IsSetCard(0xf11) and c:IsAbleToDeckAsCost()
end
function cm.gcheck(g)
return g:IsExists(Card.IsType,1,nil,TYPE_CONTINUOUS)
end
function cm.sprcon(e,c)
if c==nil then return true end
local tp=c:GetControler()
local g=Duel.GetMatchingGroup(cm.sprfilter,tp,LOCATION_GRAVE,0,nil)
return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and g:CheckSubGroup(cm.gcheck,2,2)
end
function cm.sprop(e,tp,eg,ep,ev,re,r,rp,c)
local g=Duel.GetMatchingGroup(cm.sprfilter,tp,LOCATION_GRAVE,0,nil)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
local sg=g:SelectSubGroup(tp,cm.gcheck,false,2,2)
Duel.SendtoDeck(sg,nil,2,REASON_COST)
end end
\ No newline at end of file
...@@ -55,6 +55,19 @@ function cm.lvop(e,tp,eg,ep,ev,re,r,rp) ...@@ -55,6 +55,19 @@ function cm.lvop(e,tp,eg,ep,ev,re,r,rp)
e1:SetValue(ec:GetLevel()) e1:SetValue(ec:GetLevel())
e1:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_DISABLE) e1:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_DISABLE)
c:RegisterEffect(e1) c:RegisterEffect(e1)
if Duel.IsCanRemoveCounter(tp,1,0,0xf11,1,REASON_EFFECT) and Duel.IsPlayerCanSummon(tp) and Duel.IsPlayerCanAdditionalSummon(tp) and Duel.GetFlagEffect(tp,m)==0 and Duel.SelectYesNo(tp,aux.Stringid(m,2)) then
Duel.BreakEffect()
Duel.RemoveCounter(tp,1,0,0xf11,1,REASON_EFFECT)
local e2=Effect.CreateEffect(e:GetHandler())
e2:SetDescription(aux.Stringid(m,3))
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetCode(EFFECT_EXTRA_SUMMON_COUNT)
e2:SetTargetRange(LOCATION_HAND+LOCATION_MZONE,0)
e2:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0xf11))
e2:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e2,tp)
Duel.RegisterFlagEffect(tp,m,RESET_PHASE+PHASE_END,0,1)
end
end end
end end
end end
......
...@@ -26,19 +26,22 @@ function cm.initial_effect(c) ...@@ -26,19 +26,22 @@ function cm.initial_effect(c)
e2:SetOperation(cm.spop) e2:SetOperation(cm.spop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
end end
function cm.filter(c) function cm.filter(c,tp)
return c:GetType()&(TYPE_CONTINUOUS+TYPE_SPELL)==TYPE_CONTINUOUS+TYPE_SPELL and c:IsSetCard(0xf11) and c:IsFaceup() and c:CheckActivateEffect(true,true,false)~=nil return c:GetType()&(TYPE_CONTINUOUS+TYPE_SPELL)==TYPE_CONTINUOUS+TYPE_SPELL and c:IsSetCard(0xf11) and c:IsFaceup() and c:CheckActivateEffect(true,true,false)~=nil and Duel.IsExistingMatchingCard(cm.thfilter,tp,LOCATION_DECK,0,1,nil,c)
end
function cm.thfilter(c,tc)
return c:IsSetCard(0xf11) and c:IsAbleToHand() and not c:IsCode(tc:GetCode())
end end
function cm.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function cm.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then if chkc then
local te=e:GetLabelObject() local te=e:GetLabelObject()
local tg=te:GetTarget() local tg=te:GetTarget()
return chkc:IsSetCard(0xf11) and chkc:GetType()&(TYPE_CONTINUOUS+TYPE_SPELL)==TYPE_CONTINUOUS+TYPE_SPELL and tg and tg(e,tp,eg,ep,ev,re,r,rp,0,chkc) return chkc:IsSetCard(0xf11) and chkc:GetType()&(TYPE_CONTINUOUS+TYPE_SPELL)==TYPE_CONTINUOUS+TYPE_SPELL and tg and tg(e,tp,eg,ep,ev,re,r,rp,0,chkc,tp)
end end
if chk==0 then return Duel.IsExistingTarget(cm.filter,tp,LOCATION_ONFIELD,0,1,nil) end if chk==0 then return Duel.IsExistingTarget(cm.filter,tp,LOCATION_ONFIELD,0,1,nil,tp) end
e:SetProperty(EFFECT_FLAG_CARD_TARGET) e:SetProperty(EFFECT_FLAG_CARD_TARGET)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET)
local g=Duel.SelectTarget(tp,cm.filter,tp,LOCATION_ONFIELD,0,1,1,nil) local g=Duel.SelectTarget(tp,cm.filter,tp,LOCATION_ONFIELD,0,1,1,nil,tp)
local te,ceg,cep,cev,cre,cr,crp=g:GetFirst():CheckActivateEffect(true,true,true) local te,ceg,cep,cev,cre,cr,crp=g:GetFirst():CheckActivateEffect(true,true,true)
Duel.ClearTargetCard() Duel.ClearTargetCard()
g:GetFirst():CreateEffectRelation(e) g:GetFirst():CreateEffectRelation(e)
...@@ -57,6 +60,18 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp) ...@@ -57,6 +60,18 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
e:SetLabelObject(te:GetLabelObject()) e:SetLabelObject(te:GetLabelObject())
local op=te:GetOperation() local op=te:GetOperation()
if op then op(e,tp,eg,ep,ev,re,r,rp) end if op then op(e,tp,eg,ep,ev,re,r,rp) end
if tc:IsAbleToGrave() and Duel.SelectYesNo(tp,aux.Stringid(m,0)) then
Duel.BreakEffect()
if Duel.SendtoGrave(tc,REASON_EFFECT)>0 and tc:IsLocation(LOCATION_GRAVE) then
--Duel.SendtoGrave(tc,REASON_EFFECT)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND)
local g=Duel.SelectMatchingCard(tp,cm.thfilter,tp,LOCATION_DECK,0,1,1,nil,tc)
if g:GetCount()>0 then
Duel.SendtoHand(g,tp,REASON_EFFECT)
Duel.ConfirmCards(1-tp,g)
end
end
end
end end
end end
function cm.spcon(e,tp,eg,ep,ev,re,r,rp) function cm.spcon(e,tp,eg,ep,ev,re,r,rp)
......
...@@ -72,6 +72,10 @@ function s.target2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) ...@@ -72,6 +72,10 @@ function s.target2(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
te:SetLabelObject(e:GetLabelObject()) te:SetLabelObject(e:GetLabelObject())
e:SetLabelObject(te) e:SetLabelObject(te)
Duel.ClearOperationInfo(0) Duel.ClearOperationInfo(0)
Duel.SetChainLimit(s.chlimit)
end
function s.chlimit(e,ep,tp)
return tp==ep
end end
function s.operation2(e,tp,eg,ep,ev,re,r,rp) function s.operation2(e,tp,eg,ep,ev,re,r,rp)
local te=e:GetLabelObject() local te=e:GetLabelObject()
...@@ -84,13 +88,7 @@ function s.operation2(e,tp,eg,ep,ev,re,r,rp) ...@@ -84,13 +88,7 @@ function s.operation2(e,tp,eg,ep,ev,re,r,rp)
if op then op(e,tp,eg,ep,ev,re,r,rp) end if op then op(e,tp,eg,ep,ev,re,r,rp) end
end end
if not c:IsRelateToChain() then return end if not c:IsRelateToChain() then return end
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_INDESTRUCTABLE_EFFECT)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e1:SetValue(1)
e1:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END,1)
c:RegisterEffect(e1)
end end
function s.pfilter(c,tp) function s.pfilter(c,tp)
return c:IsType(TYPE_CONTINUOUS) and c:IsSetCard(0xf11) return c:IsType(TYPE_CONTINUOUS) and c:IsSetCard(0xf11)
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
function c40011411.initial_effect(c) function c40011411.initial_effect(c)
--copy self continuous spell --copy self continuous spell
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_TOGRAVE)
e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetType(EFFECT_TYPE_QUICK_O)
e1:SetCode(EVENT_FREE_CHAIN) e1:SetCode(EVENT_FREE_CHAIN)
e1:SetHintTiming(0,TIMINGS_CHECK_MONSTER) e1:SetHintTiming(0,TIMINGS_CHECK_MONSTER)
...@@ -57,6 +57,7 @@ function c40011411.cptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) ...@@ -57,6 +57,7 @@ function c40011411.cptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
te:SetLabelObject(e:GetLabelObject()) te:SetLabelObject(e:GetLabelObject())
e:SetLabelObject(te) e:SetLabelObject(te)
Duel.ClearOperationInfo(0) Duel.ClearOperationInfo(0)
Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,1,0,0)
end end
function c40011411.cpop(e,tp,eg,ep,ev,re,r,rp) function c40011411.cpop(e,tp,eg,ep,ev,re,r,rp)
local te=e:GetLabelObject() local te=e:GetLabelObject()
...@@ -67,6 +68,8 @@ function c40011411.cpop(e,tp,eg,ep,ev,re,r,rp) ...@@ -67,6 +68,8 @@ function c40011411.cpop(e,tp,eg,ep,ev,re,r,rp)
local op=te:GetOperation() local op=te:GetOperation()
if op then op(e,tp,eg,ep,ev,re,r,rp) end if op then op(e,tp,eg,ep,ev,re,r,rp) end
end end
Duel.BreakEffect()
Duel.SendtoGrave(tc,REASON_EFFECT)
end end
function c40011411.setfilter(c) function c40011411.setfilter(c)
return c:IsCode(40011407) and c:IsSSetable() return c:IsCode(40011407) and c:IsSSetable()
......
--苍蓝的心意 美树沙耶香 --苍蓝的心意 美树沙耶香
function c60152901.initial_effect(c) function c60152901.initial_effect(c)
c:EnableReviveLimit() c:EnableReviveLimit()
--ritual summon
local e1=aux.AddRitualProcGreater2(c,c60152901.e1filter,nil,nil,c60152901.e1matfilter,true) --Activate
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(60152901,0)) e1:SetDescription(aux.Stringid(60152901,0))
e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetType(EFFECT_TYPE_QUICK_O)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetHintTiming(0,TIMINGS_CHECK_MONSTER+TIMING_MAIN_END) e1:SetHintTiming(0,TIMINGS_CHECK_MONSTER+TIMING_MAIN_END)
e1:SetCountLimit(1,60152901) e1:SetCountLimit(1,60152901)
e1:SetCondition(c60152901.e1con) e1:SetCondition(c60152901.e1con)
e1:SetTarget(c60152901.e1tg)
e1:SetOperation(c60152901.e1op)
c:RegisterEffect(e1) c:RegisterEffect(e1)
if not c60152901.global_check then if not c60152901.global_check then
c60152901.global_check=true c60152901.global_check=true
local ge1=Effect.CreateEffect(c) local ge1=Effect.CreateEffect(c)
...@@ -47,15 +52,64 @@ end ...@@ -47,15 +52,64 @@ end
function c60152901.con(e,tp,eg,ep,ev,re,r,rp) function c60152901.con(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetMatchingGroupCount(Card.IsFacedown,tp,LOCATION_EXTRA,0,nil)==0 return Duel.GetMatchingGroupCount(Card.IsFacedown,tp,LOCATION_EXTRA,0,nil)==0
end end
function c60152901.e1filter(c,e,tp,chk)
return c:IsSetCard(0x3b29) and (not chk or c~=e:GetHandler())
end
function c60152901.e1matfilter(c,e,tp,chk)
return not chk or c~=e:GetHandler()
end
function c60152901.e1con(e,tp,eg,ep,ev,re,r,rp) function c60152901.e1con(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetMatchingGroupCount(Card.IsFacedown,tp,LOCATION_EXTRA,0,nil)==0 and (Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2) return Duel.GetMatchingGroupCount(Card.IsFacedown,tp,LOCATION_EXTRA,0,nil)==0 and (Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2)
end end
function c60152901.filter(c,e,tp)
return c:IsSetCard(0x3b29) and c:IsType(TYPE_RITUAL)
end
function c60152901.RitualUltimateFilter(c,filter,e,tp,m1,m2,level_function,greater_or_equal,chk)
if bit.band(c:GetType(),0x81)~=0x81 or (filter and not filter(c,e,tp,chk)) or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,false,true,POS_FACEUP) then return false end
local mg=m1:Filter(Card.IsCanBeRitualMaterial,c,c)
if m2 then
mg:Merge(m2)
end
if c.mat_filter then
mg=mg:Filter(c.mat_filter,c,tp)
else
mg:RemoveCard(c)
end
local lv=level_function(c)
Auxiliary.GCheckAdditional=Auxiliary.RitualCheckAdditional(c,lv,greater_or_equal)
local res=mg:CheckSubGroup(Auxiliary.RitualCheck,1,lv,tp,c,lv,greater_or_equal)
Auxiliary.GCheckAdditional=nil
return res
end
function c60152901.e1tg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then
local mg1=Duel.GetRitualMaterial(tp)
return Duel.IsExistingMatchingCard(c60152901.RitualUltimateFilter,tp,LOCATION_HAND,0,1,nil,c60152901.filter,e,tp,mg1,nil,Card.GetLevel,"Greater")
end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND)
end
function c60152901.e1op(e,tp,eg,ep,ev,re,r,rp)
::cancel::
local mg1=Duel.GetRitualMaterial(tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c60152901.RitualUltimateFilter),tp,LOCATION_HAND,0,1,1,nil,c60152901.filter,e,tp,mg1,nil,Card.GetLevel,"Greater")
local tc=g:GetFirst()
if tc then
local mg=mg1:Filter(Card.IsCanBeRitualMaterial,tc,tc)
if tc.mat_filter then
mg=mg:Filter(tc.mat_filter,tc,tp)
else
mg:RemoveCard(tc)
end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
aux.GCheckAdditional=aux.RitualCheckAdditional(tc,tc:GetLevel(),"Greater")
local mat=mg:SelectSubGroup(tp,aux.RitualCheck,true,1,tc:GetLevel(),tp,tc,tc:GetLevel(),"Greater")
aux.GCheckAdditional=nil
if not mat then goto cancel end
tc:SetMaterial(mat)
Duel.ReleaseRitualMaterial(mat)
Duel.BreakEffect()
if Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,false,true,POS_FACEUP)~=0
and tc:IsFacedown() then
Duel.ConfirmCards(1-tp,tc)
end
tc:CompleteProcedure()
end
end
function c60152901.cfilter(c,tp) function c60152901.cfilter(c,tp)
return c:IsControler(tp) and c:IsPreviousLocation(LOCATION_DECK) return c:IsControler(tp) and c:IsPreviousLocation(LOCATION_DECK)
end end
......
--恋慕的思念 美树沙耶香 --恋慕的思念 美树沙耶香
function c60152902.initial_effect(c) function c60152902.initial_effect(c)
c:EnableReviveLimit() c:EnableReviveLimit()
--ritual summon
local e1=aux.AddRitualProcGreater2(c,c60152902.e1filter,nil,nil,c60152902.e1matfilter,true) --Activate
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(60152902,0)) e1:SetDescription(aux.Stringid(60152902,0))
e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetType(EFFECT_TYPE_QUICK_O)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetHintTiming(0,TIMINGS_CHECK_MONSTER+TIMING_MAIN_END) e1:SetHintTiming(0,TIMINGS_CHECK_MONSTER+TIMING_MAIN_END)
e1:SetCountLimit(1,60152902) e1:SetCountLimit(1,60152902)
e1:SetCondition(c60152902.e1con) e1:SetCondition(c60152902.e1con)
e1:SetTarget(c60152902.e1tg)
e1:SetOperation(c60152902.e1op)
c:RegisterEffect(e1) c:RegisterEffect(e1)
if not c60152902.global_check then if not c60152902.global_check then
c60152902.global_check=true c60152902.global_check=true
local ge1=Effect.CreateEffect(c) local ge1=Effect.CreateEffect(c)
...@@ -52,15 +57,64 @@ end ...@@ -52,15 +57,64 @@ end
function c60152902.con(e,tp,eg,ep,ev,re,r,rp) function c60152902.con(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetMatchingGroupCount(Card.IsFacedown,tp,LOCATION_EXTRA,0,nil)==0 return Duel.GetMatchingGroupCount(Card.IsFacedown,tp,LOCATION_EXTRA,0,nil)==0
end end
function c60152902.e1filter(c,e,tp,chk)
return c:IsSetCard(0x3b29) and (not chk or c~=e:GetHandler())
end
function c60152902.e1matfilter(c,e,tp,chk)
return not chk or c~=e:GetHandler()
end
function c60152902.e1con(e,tp,eg,ep,ev,re,r,rp) function c60152902.e1con(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetMatchingGroupCount(Card.IsFacedown,tp,LOCATION_EXTRA,0,nil)==0 and (Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2) return Duel.GetMatchingGroupCount(Card.IsFacedown,tp,LOCATION_EXTRA,0,nil)==0 and (Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2)
end end
function c60152902.filter(c,e,tp)
return c:IsSetCard(0x3b29) and c:IsType(TYPE_RITUAL)
end
function c60152902.RitualUltimateFilter(c,filter,e,tp,m1,m2,level_function,greater_or_equal,chk)
if bit.band(c:GetType(),0x81)~=0x81 or (filter and not filter(c,e,tp,chk)) or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,false,true,POS_FACEUP) then return false end
local mg=m1:Filter(Card.IsCanBeRitualMaterial,c,c)
if m2 then
mg:Merge(m2)
end
if c.mat_filter then
mg=mg:Filter(c.mat_filter,c,tp)
else
mg:RemoveCard(c)
end
local lv=level_function(c)
Auxiliary.GCheckAdditional=Auxiliary.RitualCheckAdditional(c,lv,greater_or_equal)
local res=mg:CheckSubGroup(Auxiliary.RitualCheck,1,lv,tp,c,lv,greater_or_equal)
Auxiliary.GCheckAdditional=nil
return res
end
function c60152902.e1tg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then
local mg1=Duel.GetRitualMaterial(tp)
return Duel.IsExistingMatchingCard(c60152902.RitualUltimateFilter,tp,LOCATION_HAND,0,1,nil,c60152902.filter,e,tp,mg1,nil,Card.GetLevel,"Greater")
end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND)
end
function c60152902.e1op(e,tp,eg,ep,ev,re,r,rp)
::cancel::
local mg1=Duel.GetRitualMaterial(tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c60152902.RitualUltimateFilter),tp,LOCATION_HAND,0,1,1,nil,c60152902.filter,e,tp,mg1,nil,Card.GetLevel,"Greater")
local tc=g:GetFirst()
if tc then
local mg=mg1:Filter(Card.IsCanBeRitualMaterial,tc,tc)
if tc.mat_filter then
mg=mg:Filter(tc.mat_filter,tc,tp)
else
mg:RemoveCard(tc)
end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
aux.GCheckAdditional=aux.RitualCheckAdditional(tc,tc:GetLevel(),"Greater")
local mat=mg:SelectSubGroup(tp,aux.RitualCheck,true,1,tc:GetLevel(),tp,tc,tc:GetLevel(),"Greater")
aux.GCheckAdditional=nil
if not mat then goto cancel end
tc:SetMaterial(mat)
Duel.ReleaseRitualMaterial(mat)
Duel.BreakEffect()
if Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,false,true,POS_FACEUP)~=0
and tc:IsFacedown() then
Duel.ConfirmCards(1-tp,tc)
end
tc:CompleteProcedure()
end
end
function c60152902.checkop(e,tp,eg,ep,ev,re,r,rp) function c60152902.checkop(e,tp,eg,ep,ev,re,r,rp)
local tc=eg:GetFirst() local tc=eg:GetFirst()
while tc do while tc do
......
--鼓动的愿望 美树沙耶香 --鼓动的愿望 美树沙耶香
function c60152903.initial_effect(c) function c60152903.initial_effect(c)
c:EnableReviveLimit() c:EnableReviveLimit()
--ritual summon
local e1=aux.AddRitualProcGreater2(c,c60152903.e1filter,nil,nil,c60152903.e1matfilter,true) --Activate
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(60152903,0)) e1:SetDescription(aux.Stringid(60152903,0))
e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetType(EFFECT_TYPE_QUICK_O)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetHintTiming(0,TIMINGS_CHECK_MONSTER+TIMING_MAIN_END) e1:SetHintTiming(0,TIMINGS_CHECK_MONSTER+TIMING_MAIN_END)
e1:SetCountLimit(1,60152903) e1:SetCountLimit(1,60152903)
e1:SetCondition(c60152903.e1con) e1:SetCondition(c60152903.e1con)
e1:SetTarget(c60152903.e1tg)
e1:SetOperation(c60152903.e1op)
c:RegisterEffect(e1) c:RegisterEffect(e1)
if not c60152903.global_check then if not c60152903.global_check then
c60152903.global_check=true c60152903.global_check=true
local ge1=Effect.GlobalEffect() local ge1=Effect.GlobalEffect()
...@@ -46,15 +51,64 @@ end ...@@ -46,15 +51,64 @@ end
function c60152903.con(e,tp,eg,ep,ev,re,r,rp) function c60152903.con(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetMatchingGroupCount(Card.IsFacedown,tp,LOCATION_EXTRA,0,nil)==0 return Duel.GetMatchingGroupCount(Card.IsFacedown,tp,LOCATION_EXTRA,0,nil)==0
end end
function c60152903.e1filter(c,e,tp,chk)
return c:IsSetCard(0x3b29) and (not chk or c~=e:GetHandler())
end
function c60152903.e1matfilter(c,e,tp,chk)
return not chk or c~=e:GetHandler()
end
function c60152903.e1con(e,tp,eg,ep,ev,re,r,rp) function c60152903.e1con(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetMatchingGroupCount(Card.IsFacedown,tp,LOCATION_EXTRA,0,nil)==0 and (Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2) return Duel.GetMatchingGroupCount(Card.IsFacedown,tp,LOCATION_EXTRA,0,nil)==0 and (Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2)
end end
function c60152903.filter(c,e,tp)
return c:IsSetCard(0x3b29) and c:IsType(TYPE_RITUAL)
end
function c60152903.RitualUltimateFilter(c,filter,e,tp,m1,m2,level_function,greater_or_equal,chk)
if bit.band(c:GetType(),0x81)~=0x81 or (filter and not filter(c,e,tp,chk)) or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,false,true,POS_FACEUP) then return false end
local mg=m1:Filter(Card.IsCanBeRitualMaterial,c,c)
if m2 then
mg:Merge(m2)
end
if c.mat_filter then
mg=mg:Filter(c.mat_filter,c,tp)
else
mg:RemoveCard(c)
end
local lv=level_function(c)
Auxiliary.GCheckAdditional=Auxiliary.RitualCheckAdditional(c,lv,greater_or_equal)
local res=mg:CheckSubGroup(Auxiliary.RitualCheck,1,lv,tp,c,lv,greater_or_equal)
Auxiliary.GCheckAdditional=nil
return res
end
function c60152903.e1tg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then
local mg1=Duel.GetRitualMaterial(tp)
return Duel.IsExistingMatchingCard(c60152903.RitualUltimateFilter,tp,LOCATION_HAND,0,1,nil,c60152903.filter,e,tp,mg1,nil,Card.GetLevel,"Greater")
end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND)
end
function c60152903.e1op(e,tp,eg,ep,ev,re,r,rp)
::cancel::
local mg1=Duel.GetRitualMaterial(tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c60152903.RitualUltimateFilter),tp,LOCATION_HAND,0,1,1,nil,c60152903.filter,e,tp,mg1,nil,Card.GetLevel,"Greater")
local tc=g:GetFirst()
if tc then
local mg=mg1:Filter(Card.IsCanBeRitualMaterial,tc,tc)
if tc.mat_filter then
mg=mg:Filter(tc.mat_filter,tc,tp)
else
mg:RemoveCard(tc)
end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
aux.GCheckAdditional=aux.RitualCheckAdditional(tc,tc:GetLevel(),"Greater")
local mat=mg:SelectSubGroup(tp,aux.RitualCheck,true,1,tc:GetLevel(),tp,tc,tc:GetLevel(),"Greater")
aux.GCheckAdditional=nil
if not mat then goto cancel end
tc:SetMaterial(mat)
Duel.ReleaseRitualMaterial(mat)
Duel.BreakEffect()
if Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,false,true,POS_FACEUP)~=0
and tc:IsFacedown() then
Duel.ConfirmCards(1-tp,tc)
end
tc:CompleteProcedure()
end
end
function c60152903.check(c) function c60152903.check(c)
return c return c
end end
......
--真挚的谎言 美树沙耶香 --真挚的谎言 美树沙耶香
function c60152904.initial_effect(c) function c60152904.initial_effect(c)
c:EnableReviveLimit() c:EnableReviveLimit()
--ritual summon
local e1=aux.AddRitualProcGreater2(c,c60152904.e1filter,nil,nil,c60152904.e1matfilter,true) --Activate
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(60152904,0)) e1:SetDescription(aux.Stringid(60152904,0))
e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetType(EFFECT_TYPE_QUICK_O)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetHintTiming(0,TIMINGS_CHECK_MONSTER+TIMING_MAIN_END) e1:SetHintTiming(0,TIMINGS_CHECK_MONSTER+TIMING_MAIN_END)
e1:SetCountLimit(1,60152904) e1:SetCountLimit(1,60152904)
e1:SetCondition(c60152904.e1con) e1:SetCondition(c60152904.e1con)
e1:SetTarget(c60152904.e1tg)
e1:SetOperation(c60152904.e1op)
c:RegisterEffect(e1) c:RegisterEffect(e1)
if not c60152904.global_check then if not c60152904.global_check then
c60152904.global_check=true c60152904.global_check=true
local ge1=Effect.GlobalEffect() local ge1=Effect.GlobalEffect()
...@@ -46,15 +51,64 @@ end ...@@ -46,15 +51,64 @@ end
function c60152904.con(e,tp,eg,ep,ev,re,r,rp) function c60152904.con(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetMatchingGroupCount(Card.IsFacedown,tp,LOCATION_EXTRA,0,nil)==0 return Duel.GetMatchingGroupCount(Card.IsFacedown,tp,LOCATION_EXTRA,0,nil)==0
end end
function c60152904.e1filter(c,e,tp,chk)
return c:IsSetCard(0x3b29) and (not chk or c~=e:GetHandler())
end
function c60152904.e1matfilter(c,e,tp,chk)
return not chk or c~=e:GetHandler()
end
function c60152904.e1con(e,tp,eg,ep,ev,re,r,rp) function c60152904.e1con(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetMatchingGroupCount(Card.IsFacedown,tp,LOCATION_EXTRA,0,nil)==0 and (Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2) return Duel.GetMatchingGroupCount(Card.IsFacedown,tp,LOCATION_EXTRA,0,nil)==0 and (Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2)
end end
function c60152904.filter(c,e,tp)
return c:IsSetCard(0x3b29) and c:IsType(TYPE_RITUAL)
end
function c60152904.RitualUltimateFilter(c,filter,e,tp,m1,m2,level_function,greater_or_equal,chk)
if bit.band(c:GetType(),0x81)~=0x81 or (filter and not filter(c,e,tp,chk)) or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,false,true,POS_FACEUP) then return false end
local mg=m1:Filter(Card.IsCanBeRitualMaterial,c,c)
if m2 then
mg:Merge(m2)
end
if c.mat_filter then
mg=mg:Filter(c.mat_filter,c,tp)
else
mg:RemoveCard(c)
end
local lv=level_function(c)
Auxiliary.GCheckAdditional=Auxiliary.RitualCheckAdditional(c,lv,greater_or_equal)
local res=mg:CheckSubGroup(Auxiliary.RitualCheck,1,lv,tp,c,lv,greater_or_equal)
Auxiliary.GCheckAdditional=nil
return res
end
function c60152904.e1tg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then
local mg1=Duel.GetRitualMaterial(tp)
return Duel.IsExistingMatchingCard(c60152904.RitualUltimateFilter,tp,LOCATION_HAND,0,1,nil,c60152904.filter,e,tp,mg1,nil,Card.GetLevel,"Greater")
end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND)
end
function c60152904.e1op(e,tp,eg,ep,ev,re,r,rp)
::cancel::
local mg1=Duel.GetRitualMaterial(tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c60152904.RitualUltimateFilter),tp,LOCATION_HAND,0,1,1,nil,c60152904.filter,e,tp,mg1,nil,Card.GetLevel,"Greater")
local tc=g:GetFirst()
if tc then
local mg=mg1:Filter(Card.IsCanBeRitualMaterial,tc,tc)
if tc.mat_filter then
mg=mg:Filter(tc.mat_filter,tc,tp)
else
mg:RemoveCard(tc)
end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
aux.GCheckAdditional=aux.RitualCheckAdditional(tc,tc:GetLevel(),"Greater")
local mat=mg:SelectSubGroup(tp,aux.RitualCheck,true,1,tc:GetLevel(),tp,tc,tc:GetLevel(),"Greater")
aux.GCheckAdditional=nil
if not mat then goto cancel end
tc:SetMaterial(mat)
Duel.ReleaseRitualMaterial(mat)
Duel.BreakEffect()
if Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,false,true,POS_FACEUP)~=0
and tc:IsFacedown() then
Duel.ConfirmCards(1-tp,tc)
end
tc:CompleteProcedure()
end
end
function c60152904.checkop(e,tp,eg,ep,ev,re,r,rp) function c60152904.checkop(e,tp,eg,ep,ev,re,r,rp)
local g=eg:Filter(Card.IsType,nil,TYPE_MONSTER) local g=eg:Filter(Card.IsType,nil,TYPE_MONSTER)
local tc=g:GetFirst() local tc=g:GetFirst()
......
--虚伪的臊动 美树沙耶香 --虚伪的臊动 美树沙耶香
function c60152905.initial_effect(c) function c60152905.initial_effect(c)
c:EnableReviveLimit() c:EnableReviveLimit()
--ritual summon
local e1=aux.AddRitualProcGreater2(c,c60152905.e1filter,nil,nil,c60152905.e1matfilter,true) --Activate
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(60152905,0)) e1:SetDescription(aux.Stringid(60152905,0))
e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetType(EFFECT_TYPE_QUICK_O)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetHintTiming(0,TIMINGS_CHECK_MONSTER+TIMING_MAIN_END) e1:SetHintTiming(0,TIMINGS_CHECK_MONSTER+TIMING_MAIN_END)
e1:SetCountLimit(1,60152905) e1:SetCountLimit(1,60152905)
e1:SetCondition(c60152905.e1con) e1:SetCondition(c60152905.e1con)
e1:SetTarget(c60152905.e1tg)
e1:SetOperation(c60152905.e1op)
c:RegisterEffect(e1) c:RegisterEffect(e1)
Duel.AddCustomActivityCounter(60152905,ACTIVITY_CHAIN,aux.TRUE) Duel.AddCustomActivityCounter(60152905,ACTIVITY_CHAIN,aux.TRUE)
local e2=Effect.CreateEffect(c) local e2=Effect.CreateEffect(c)
...@@ -40,15 +44,64 @@ end ...@@ -40,15 +44,64 @@ end
function c60152905.con(e,tp,eg,ep,ev,re,r,rp) function c60152905.con(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetMatchingGroupCount(Card.IsFacedown,tp,LOCATION_EXTRA,0,nil)==0 return Duel.GetMatchingGroupCount(Card.IsFacedown,tp,LOCATION_EXTRA,0,nil)==0
end end
function c60152905.e1filter(c,e,tp,chk)
return c:IsSetCard(0x3b29) and (not chk or c~=e:GetHandler())
end
function c60152905.e1matfilter(c,e,tp,chk)
return not chk or c~=e:GetHandler()
end
function c60152905.e1con(e,tp,eg,ep,ev,re,r,rp) function c60152905.e1con(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetMatchingGroupCount(Card.IsFacedown,tp,LOCATION_EXTRA,0,nil)==0 and (Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2) return Duel.GetMatchingGroupCount(Card.IsFacedown,tp,LOCATION_EXTRA,0,nil)==0 and (Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2)
end end
function c60152905.filter(c,e,tp)
return c:IsSetCard(0x3b29) and c:IsType(TYPE_RITUAL)
end
function c60152905.RitualUltimateFilter(c,filter,e,tp,m1,m2,level_function,greater_or_equal,chk)
if bit.band(c:GetType(),0x81)~=0x81 or (filter and not filter(c,e,tp,chk)) or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,false,true,POS_FACEUP) then return false end
local mg=m1:Filter(Card.IsCanBeRitualMaterial,c,c)
if m2 then
mg:Merge(m2)
end
if c.mat_filter then
mg=mg:Filter(c.mat_filter,c,tp)
else
mg:RemoveCard(c)
end
local lv=level_function(c)
Auxiliary.GCheckAdditional=Auxiliary.RitualCheckAdditional(c,lv,greater_or_equal)
local res=mg:CheckSubGroup(Auxiliary.RitualCheck,1,lv,tp,c,lv,greater_or_equal)
Auxiliary.GCheckAdditional=nil
return res
end
function c60152905.e1tg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then
local mg1=Duel.GetRitualMaterial(tp)
return Duel.IsExistingMatchingCard(c60152905.RitualUltimateFilter,tp,LOCATION_HAND,0,1,nil,c60152905.filter,e,tp,mg1,nil,Card.GetLevel,"Greater")
end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND)
end
function c60152905.e1op(e,tp,eg,ep,ev,re,r,rp)
::cancel::
local mg1=Duel.GetRitualMaterial(tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c60152905.RitualUltimateFilter),tp,LOCATION_HAND,0,1,1,nil,c60152905.filter,e,tp,mg1,nil,Card.GetLevel,"Greater")
local tc=g:GetFirst()
if tc then
local mg=mg1:Filter(Card.IsCanBeRitualMaterial,tc,tc)
if tc.mat_filter then
mg=mg:Filter(tc.mat_filter,tc,tp)
else
mg:RemoveCard(tc)
end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
aux.GCheckAdditional=aux.RitualCheckAdditional(tc,tc:GetLevel(),"Greater")
local mat=mg:SelectSubGroup(tp,aux.RitualCheck,true,1,tc:GetLevel(),tp,tc,tc:GetLevel(),"Greater")
aux.GCheckAdditional=nil
if not mat then goto cancel end
tc:SetMaterial(mat)
Duel.ReleaseRitualMaterial(mat)
Duel.BreakEffect()
if Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,false,true,POS_FACEUP)~=0
and tc:IsFacedown() then
Duel.ConfirmCards(1-tp,tc)
end
tc:CompleteProcedure()
end
end
function c60152905.e2tg(e,tp,eg,ep,ev,re,r,rp,chk) function c60152905.e2tg(e,tp,eg,ep,ev,re,r,rp,chk)
local p=PLAYER_ALL local p=PLAYER_ALL
if chk==0 then return Duel.GetCustomActivityCount(60152905,1-tp,ACTIVITY_CHAIN)~=0 end if chk==0 then return Duel.GetCustomActivityCount(60152905,1-tp,ACTIVITY_CHAIN)~=0 end
......
...@@ -45,24 +45,41 @@ end ...@@ -45,24 +45,41 @@ end
function c60152906.e1con(e,tp,eg,ep,ev,re,r,rp) function c60152906.e1con(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetMatchingGroupCount(Card.IsFacedown,tp,LOCATION_EXTRA,0,nil)==0 and (Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2) return Duel.GetMatchingGroupCount(Card.IsFacedown,tp,LOCATION_EXTRA,0,nil)==0 and (Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2)
end end
function c60152906.e1tgfilter(c,e,tp) function c60152906.filter(c,e,tp)
return c:IsSetCard(0x3b29) and c:IsType(TYPE_RITUAL) return c:IsSetCard(0x3b29) and c:IsType(TYPE_RITUAL)
end end
function c60152906.RitualUltimateFilter(c,filter,e,tp,m1,m2,level_function,greater_or_equal,chk)
if bit.band(c:GetType(),0x81)~=0x81 or (filter and not filter(c,e,tp,chk)) or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,false,true,POS_FACEUP) then return false end
local mg=m1:Filter(Card.IsCanBeRitualMaterial,c,c)
if m2 then
mg:Merge(m2)
end
if c.mat_filter then
mg=mg:Filter(c.mat_filter,c,tp)
else
mg:RemoveCard(c)
end
local lv=level_function(c)
Auxiliary.GCheckAdditional=Auxiliary.RitualCheckAdditional(c,lv,greater_or_equal)
local res=mg:CheckSubGroup(Auxiliary.RitualCheck,1,lv,tp,c,lv,greater_or_equal)
Auxiliary.GCheckAdditional=nil
return res
end
function c60152906.e1tg(e,tp,eg,ep,ev,re,r,rp,chk) function c60152906.e1tg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then if chk==0 then
local mg=Duel.GetRitualMaterial(tp) local mg1=Duel.GetRitualMaterial(tp)
return Duel.IsExistingMatchingCard(aux.RitualUltimateFilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,c60152906.e1tgfilter,e,tp,mg,sg,Card.GetLevel,"Greater") return Duel.IsExistingMatchingCard(c60152906.RitualUltimateFilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,c60152906.filter,e,tp,mg1,nil,Card.GetLevel,"Greater")
end 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 c60152906.e1op(e,tp,eg,ep,ev,re,r,rp) function c60152906.e1op(e,tp,eg,ep,ev,re,r,rp)
::cancel:: ::cancel::
local mg=Duel.GetRitualMaterial(tp) local mg1=Duel.GetRitualMaterial(tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local tg=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(aux.RitualUltimateFilter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,c60152906.e1tgfilter,e,tp,mg,sg,Card.GetLevel,"Greater") local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c60152906.RitualUltimateFilter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,c60152906.filter,e,tp,mg1,nil,Card.GetLevel,"Greater")
local tc=tg:GetFirst() local tc=g:GetFirst()
if tc then if tc then
mg=mg:Filter(Card.IsCanBeRitualMaterial,tc,tc) local mg=mg1:Filter(Card.IsCanBeRitualMaterial,tc,tc)
if tc.mat_filter then if tc.mat_filter then
mg=mg:Filter(tc.mat_filter,tc,tp) mg=mg:Filter(tc.mat_filter,tc,tp)
else else
...@@ -74,10 +91,12 @@ function c60152906.e1op(e,tp,eg,ep,ev,re,r,rp) ...@@ -74,10 +91,12 @@ function c60152906.e1op(e,tp,eg,ep,ev,re,r,rp)
aux.GCheckAdditional=nil aux.GCheckAdditional=nil
if not mat then goto cancel end if not mat then goto cancel end
tc:SetMaterial(mat) tc:SetMaterial(mat)
local mat2=mat:Filter(Card.IsLocation,nil,LOCATION_EXTRA)
mat:Sub(mat2)
Duel.ReleaseRitualMaterial(mat) Duel.ReleaseRitualMaterial(mat)
Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,false,true,POS_FACEUP) Duel.BreakEffect()
if Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,false,true,POS_FACEUP)~=0
and tc:IsFacedown() then
Duel.ConfirmCards(1-tp,tc)
end
tc:CompleteProcedure() tc:CompleteProcedure()
end end
end end
......
...@@ -45,24 +45,41 @@ end ...@@ -45,24 +45,41 @@ end
function c60152907.e1con(e,tp,eg,ep,ev,re,r,rp) function c60152907.e1con(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetMatchingGroupCount(Card.IsFacedown,tp,LOCATION_EXTRA,0,nil)==0 and (Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2) return Duel.GetMatchingGroupCount(Card.IsFacedown,tp,LOCATION_EXTRA,0,nil)==0 and (Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2)
end end
function c60152907.e1tgfilter(c,e,tp) function c60152907.filter(c,e,tp)
return c:IsSetCard(0x3b29) and c:IsType(TYPE_RITUAL) return c:IsSetCard(0x3b29) and c:IsType(TYPE_RITUAL)
end end
function c60152907.RitualUltimateFilter(c,filter,e,tp,m1,m2,level_function,greater_or_equal,chk)
if bit.band(c:GetType(),0x81)~=0x81 or (filter and not filter(c,e,tp,chk)) or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,false,true,POS_FACEUP) then return false end
local mg=m1:Filter(Card.IsCanBeRitualMaterial,c,c)
if m2 then
mg:Merge(m2)
end
if c.mat_filter then
mg=mg:Filter(c.mat_filter,c,tp)
else
mg:RemoveCard(c)
end
local lv=level_function(c)
Auxiliary.GCheckAdditional=Auxiliary.RitualCheckAdditional(c,lv,greater_or_equal)
local res=mg:CheckSubGroup(Auxiliary.RitualCheck,1,lv,tp,c,lv,greater_or_equal)
Auxiliary.GCheckAdditional=nil
return res
end
function c60152907.e1tg(e,tp,eg,ep,ev,re,r,rp,chk) function c60152907.e1tg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then if chk==0 then
local mg=Duel.GetRitualMaterial(tp) local mg1=Duel.GetRitualMaterial(tp)
return Duel.IsExistingMatchingCard(aux.RitualUltimateFilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,c60152907.e1tgfilter,e,tp,mg,sg,Card.GetLevel,"Greater") return Duel.IsExistingMatchingCard(c60152907.RitualUltimateFilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,c60152907.filter,e,tp,mg1,nil,Card.GetLevel,"Greater")
end 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 c60152907.e1op(e,tp,eg,ep,ev,re,r,rp) function c60152907.e1op(e,tp,eg,ep,ev,re,r,rp)
::cancel:: ::cancel::
local mg=Duel.GetRitualMaterial(tp) local mg1=Duel.GetRitualMaterial(tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local tg=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(aux.RitualUltimateFilter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,c60152907.e1tgfilter,e,tp,mg,sg,Card.GetLevel,"Greater") local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c60152907.RitualUltimateFilter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,c60152907.filter,e,tp,mg1,nil,Card.GetLevel,"Greater")
local tc=tg:GetFirst() local tc=g:GetFirst()
if tc then if tc then
mg=mg:Filter(Card.IsCanBeRitualMaterial,tc,tc) local mg=mg1:Filter(Card.IsCanBeRitualMaterial,tc,tc)
if tc.mat_filter then if tc.mat_filter then
mg=mg:Filter(tc.mat_filter,tc,tp) mg=mg:Filter(tc.mat_filter,tc,tp)
else else
...@@ -74,10 +91,12 @@ function c60152907.e1op(e,tp,eg,ep,ev,re,r,rp) ...@@ -74,10 +91,12 @@ function c60152907.e1op(e,tp,eg,ep,ev,re,r,rp)
aux.GCheckAdditional=nil aux.GCheckAdditional=nil
if not mat then goto cancel end if not mat then goto cancel end
tc:SetMaterial(mat) tc:SetMaterial(mat)
local mat2=mat:Filter(Card.IsLocation,nil,LOCATION_EXTRA)
mat:Sub(mat2)
Duel.ReleaseRitualMaterial(mat) Duel.ReleaseRitualMaterial(mat)
Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,false,true,POS_FACEUP) Duel.BreakEffect()
if Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,false,true,POS_FACEUP)~=0
and tc:IsFacedown() then
Duel.ConfirmCards(1-tp,tc)
end
tc:CompleteProcedure() tc:CompleteProcedure()
end end
end end
......
This diff is collapsed.
...@@ -99,7 +99,7 @@ function c87470001.tdop(e,tp,eg,ep,ev,re,r,rp) ...@@ -99,7 +99,7 @@ function c87470001.tdop(e,tp,eg,ep,ev,re,r,rp)
if lab1==c:GetFieldID() then cg:AddCard(c) end if lab1==c:GetFieldID() then cg:AddCard(c) end
if lab2==tc:GetFieldID() then cg:AddCard(tc) end if lab2==tc:GetFieldID() then cg:AddCard(tc) end
Duel.Hint(HINT_CARD,0,87470001) Duel.Hint(HINT_CARD,0,87470001)
Duel.SendtoDeck(cg,nil,2,REASON_EFFECT) if #cg==2 then Duel.SendtoDeck(cg,nil,2,REASON_EFFECT) end
e:Reset() e:Reset()
end end
function c87470001.dsrtg(e,c) function c87470001.dsrtg(e,c)
......
...@@ -13,9 +13,13 @@ function c91000402.initial_effect(c) ...@@ -13,9 +13,13 @@ function c91000402.initial_effect(c)
e1:SetTarget(cm.tg1) e1:SetTarget(cm.tg1)
e1:SetOperation(cm.op1) e1:SetOperation(cm.op1)
c:RegisterEffect(e1) c:RegisterEffect(e1)
local e2=Effect.CreateEffect(c) local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_EQUIP) e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e2:SetCode(EFFECT_SELF_DESTROY) e2:SetRange(LOCATION_SZONE)
e2:SetCode(EVENT_ADJUST)
e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE)
e2:SetCondition(cm.con2)
e2:SetOperation(cm.op2)
c:RegisterEffect(e2) c:RegisterEffect(e2)
local e5=Effect.CreateEffect(c) local e5=Effect.CreateEffect(c)
e5:SetCategory(CATEGORY_EQUIP) e5:SetCategory(CATEGORY_EQUIP)
...@@ -76,7 +80,13 @@ function cm.op1(e,tp,eg,ep,ev,re,r,rp) ...@@ -76,7 +80,13 @@ function cm.op1(e,tp,eg,ep,ev,re,r,rp)
c:RegisterEffect(e3) c:RegisterEffect(e3)
end end
end end
function cm.con2(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetEquipTarget()
end
function cm.op2(e,tp,eg,ep,ev,re,r,rp)
local g=e:GetHandler():GetEquipTarget()
Duel.Destroy(g,REASON_EFFECT)
end
function cm.eqlimit(e,c) function cm.eqlimit(e,c)
return e:GetLabelObject()==c return e:GetLabelObject()==c
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