Generate a YGOPro Lua script for the following Yu-Gi-Oh card effect:
This card can be used to Ritual Summon any Dragon Ritual Monster from your hand or GY. You must also Tribute Pendulum Monsters from your hand or field whose total Levels equal or exceed the Level of the Ritual Monster you Ritual Summon. If your opponent controls 2 or more monsters and you control no monsters, you can also send "Odd-Eyes" monsters from your Extra Deck to the GY. You can only activate 1 "Odd-Eyes Advent" per turn.
--オッドアイズ・アドベント
--Odd-Eyes Advent
local s,id=GetID()
function s.initial_effect(c)
	local e1=Ritual.CreateProc({handler=c,lvtype=RITPROC_GREATER,filter=s.ritualfil,extrafil=s.extrafil,extraop=s.extraop,matfilter=s.forcedgroup,location=LOCATION_HAND|LOCATION_GRAVE})
	e1:SetCountLimit(1,id,EFFECT_COUNT_CODE_OATH)
	c:RegisterEffect(e1)
end
s.listed_series={SET_ODD_EYES}
function s.ritualfil(c)
	return c:IsRace(RACE_DRAGON)
end
function s.exfilter0(c)
	return c:IsSetCard(SET_ODD_EYES) and c:IsLevelAbove(1) and c:IsAbleToGrave()
end
function s.extrafil(e,tp,eg,ep,ev,re,r,rp,chk)
	if Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>1 then
		return Duel.GetMatchingGroup(s.exfilter0,tp,LOCATION_EXTRA,0,nil)
	end
end
function s.extraop(mg,e,tp,eg,ep,ev,re,r,rp)
	local mat2=mg:Filter(Card.IsLocation,nil,LOCATION_EXTRA)
	mg:Sub(mat2)
	Duel.ReleaseRitualMaterial(mg)
	Duel.SendtoGrave(mat2,REASON_EFFECT+REASON_MATERIAL+REASON_RITUAL)
end
function s.forcedgroup(c,e,tp)
	return (c:IsType(TYPE_PENDULUM) and c:IsLocation(LOCATION_HAND|LOCATION_ONFIELD)) or (c:IsSetCard(SET_ODD_EYES) and c:IsLocation(LOCATION_EXTRA))
end