--Dreams and Nightmares local cid,id=GetID() function cid.initial_effect(c) --Activate local e1=Effect.CreateEffect(c) e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) e1:SetType(EFFECT_TYPE_ACTIVATE) e1:SetCode(EVENT_FREE_CHAIN) e1:SetCountLimit(1,id+EFFECT_COUNT_CODE_OATH) e1:SetOperation(cid.activate) c:RegisterEffect(e1) --inactivatable local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_FIELD) e2:SetCode(EFFECT_CANNOT_INACTIVATE) e2:SetRange(LOCATION_FZONE) e2:SetValue(cid.efilter) c:RegisterEffect(e2) --act limit local e3=Effect.CreateEffect(c) e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) e3:SetCode(EVENT_SPSUMMON_SUCCESS) e3:SetRange(LOCATION_FZONE) e3:SetCondition(cid.limcon) e3:SetOperation(cid.limop) c:RegisterEffect(e3) local e5=Effect.CreateEffect(c) e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) e5:SetRange(LOCATION_FZONE) e5:SetCode(EVENT_CHAIN_END) e5:SetOperation(cid.limop2) c:RegisterEffect(e5) end function cid.thfilter(c) return c:IsCode(50505050) and c:IsAbleToHand() end function cid.activate(e,tp,eg,ep,ev,re,r,rp) if not e:GetHandler():IsRelateToEffect(e) then return end local g=Duel.GetMatchingGroup(cid.thfilter,tp,LOCATION_DECK,0,nil) if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(id,0)) then Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) local sg=g:Select(tp,1,1,nil) Duel.SendtoHand(sg,nil,REASON_EFFECT) Duel.ConfirmCards(1-tp,sg) end end function cid.efilter(e,ct) local p=e:GetHandlerPlayer() local te,tp=Duel.GetChainInfo(ct,CHAININFO_TRIGGERING_EFFECT,CHAININFO_TRIGGERING_PLAYER) return p==tp and te:IsHasCategory(CATEGORY_RITUAL_SUMMON) end function cid.limfilter(c,tp) return c:GetSummonPlayer()==tp and c:IsSummonType(SUMMON_TYPE_RITUAL) end function cid.limcon(e,tp,eg,ep,ev,re,r,rp) return eg:IsExists(cid.limfilter,1,nil,tp) end function cid.limop(e,tp,eg,ep,ev,re,r,rp) if Duel.GetCurrentChain()==0 then Duel.SetChainLimitTillChainEnd(cid.chainlm) elseif Duel.GetCurrentChain()==1 then e:GetHandler():RegisterFlagEffect(id,RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END,0,1) end end function cid.limop2(e,tp,eg,ep,ev,re,r,rp) if e:GetHandler():GetFlagEffect(id)~=0 then Duel.SetChainLimitTillChainEnd(cid.chainlm) end e:GetHandler():ResetFlagEffect(id) end function cid.chainlm(e,rp,tp) return tp==rp end