--soku Duel.LoadScript("c37564765.lua") local m,cm=Senya.SayuriRitualPreload(37564904) cm.Senya_name_with_remix=true function cm.initial_effect(c) c:EnableReviveLimit() local e0=Effect.CreateEffect(c) e0:SetType(EFFECT_TYPE_SINGLE) e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e0:SetCode(EFFECT_SPSUMMON_CONDITION) e0:SetValue(function(e,se,sp,st) local sc=se:GetHandler() return aux.ritlimit(e,se,sp,st) and Senya.check_set_sayuri(sc) end) c:RegisterEffect(e0) Senya.AddSummonMusic(c,m*16,SUMMON_TYPE_RITUAL) local e0=Senya.InstantCopyModule(c,1,m,cm.cost,cm.condition2,LOCATION_HAND) e0:SetOperation(cm.CopyOperation) local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetCode(EFFECT_SPSUMMON_CONDITION) e1:SetValue(aux.ritlimit) c:RegisterEffect(e1) local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) e2:SetCode(EVENT_ADJUST) e2:SetRange(LOCATION_MZONE) e2:SetLabel(Senya.order_table_new({})) e2:SetOperation(cm.op) c:RegisterEffect(e2) local ex=Effect.CreateEffect(c) ex:SetType(EFFECT_TYPE_SINGLE) ex:SetCode(m) ex:SetRange(LOCATION_MZONE) ex:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_SINGLE_RANGE) c:RegisterEffect(ex) local ex=Effect.CreateEffect(c) ex:SetType(EFFECT_TYPE_SINGLE) ex:SetCode(m-1000) ex:SetRange(LOCATION_MZONE) ex:SetProperty(EFFECT_FLAG_SINGLE_RANGE) c:RegisterEffect(ex) end cm.mat_filter=Senya.SayuriDefaultMaterialFilterLevel12 function cm.cfilter(c) return Senya.check_set_sayuri(c) and not c:IsPublic() and c:IsType(TYPE_MONSTER) end function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk) local c=e:GetHandler() if chk==0 then return not e:GetHandler():IsPublic() and Duel.IsExistingMatchingCard(cm.cfilter,tp,LOCATION_HAND,0,1,c) end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) local g=Duel.SelectMatchingCard(tp,cm.cfilter,tp,LOCATION_HAND,0,1,1,c) Duel.ConfirmCards(1-tp,g) end function cm.CopyOperation(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() if c:IsRelateToEffect(e) then c:RegisterFlagEffect(m,0x1fe1000+RESET_CHAIN,0,1) end local te=e:GetLabelObject() if te and Senya.GetValueType(te)=="Effect" then e:SetLabelObject(te:GetLabelObject()) local op=te:GetOperation() if te:IsHasType(EFFECT_TYPE_ACTIVATE) then c:ReleaseEffectRelation(e) end if op then op(e,tp,eg,ep,ev,re,r,rp) end end if c:GetFlagEffect(m)>0 then Duel.BreakEffect() Duel.SendtoGrave(c,REASON_EFFECT) end Duel.ShuffleHand(tp) end function cm.sayuri_trigger_condition(c,e,tp,eg,ep,ev,re,r,rp) return Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,0,LOCATION_ONFIELD,1,nil) end function cm.sayuri_trigger_operation(c,e,tp,eg,ep,ev,re,r,rp) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) local g=Duel.SelectMatchingCard(tp,Card.IsAbleToRemove,tp,0,LOCATION_ONFIELD,1,1,nil) if #g>0 then Duel.HintSelection(g) Duel.Remove(g,POS_FACEUP,REASON_EFFECT) end end function cm.copyfilter(c) return c:IsFaceup() and c:IsType(TYPE_EFFECT) and not c:IsType(TYPE_TRAPMONSTER) and not c:IsHasEffect(m) end function cm.gfilter(c,g) if not g then return true end return not g:IsContains(c) end function cm.gfilter1(c,g) if not g then return true end return not g:IsExists(cm.gfilter2,1,nil,c:GetOriginalCode()) end function cm.gfilter2(c,code) return c:GetOriginalCode()==code end function cm.op(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() local copyt=Senya.order_table[e:GetLabel()] local exg=Group.CreateGroup() for tc,cid in pairs(copyt) do if tc and cid then exg:AddCard(tc) end end local g=Duel.GetMatchingGroup(cm.copyfilter,tp,0,LOCATION_MZONE,nil) local dg=exg:Filter(cm.gfilter,nil,g) for tc in aux.Next(dg) do c:ResetEffect(copyt[tc],RESET_COPY) exg:RemoveCard(tc) copyt[tc]=nil end local cg=g:Filter(cm.gfilter1,nil,exg) local f=Card.RegisterEffect Card.RegisterEffect=function(tc,e,forced) e:SetCondition(cm.rcon(e:GetCondition(),tc,copyt)) e:SetCost(cm.rcost(e:GetCost())) if e:IsHasType(EFFECT_TYPE_IGNITION) then e:SetType((e:GetType()-EFFECT_TYPE_IGNITION | EFFECT_TYPE_QUICK_O)) e:SetCode(EVENT_FREE_CHAIN) e:SetHintTiming(0,0x1c0) end f(tc,e,forced) end for tc in aux.Next(cg) do copyt[tc]=c:CopyEffect(tc:GetOriginalCode(),RESET_EVENT+0x1fe0000,1) end Card.RegisterEffect=f end function cm.rcon(con,tc,copyt) return function(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() if not c:IsHasEffect(m-1000) then c:ResetEffect(c,copyt[tc],RESET_COPY) copyt[tc]=nil return false end return not con or con(e,tp,eg,ep,ev,re,r,rp) or e:IsHasType(0x7e0) end end function cm.rcost(cost) return function(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return not cost or cost(e,tp,eg,ep,ev,re,r,rp,0) or e:IsHasType(0x7e0) end return not cost or e:IsHasType(0x7e0) or cost(e,tp,eg,ep,ev,re,r,rp,1) end end