Generate a YGOPro Lua script for the following Yu-Gi-Oh card effect:
"Dual Avatar Feet - Kokoku" + 2 "Dual Avatar" monsters The first time each "Dual Avatar" Fusion Monster you control would be destroyed by battle each turn, it is not destroyed. Once per turn, during your Main Phase: You can return all Spells and Traps your opponent controls to the hand. When a monster effect is activated on your opponent's field while you control 2 or more Fusion Monsters (Quick Effect): You can destroy that monster. You can only use this effect of "Dual Avatar - Empowered Mitsu-Jaku" once per turn.
--双天将 密迹
--Dual Avatar - Empowered Mitsu-Jaku
--Logical Nonsense
--Substitute ID
local s,id=GetID()
function s.initial_effect(c)
	--Must be properly summoned before reviving
	c:EnableReviveLimit()
	--Fusion summon procedure
	Fusion.AddProcMixN(c,true,true,11759079,1,aux.FilterBoolFunctionEx(Card.IsSetCard,SET_DUAL_AVATAR),2)
	--Each "Dual Avatar" fusion monster get protected once by battle, each turn
	local e1=Effect.CreateEffect(c)
	e1:SetType(EFFECT_TYPE_FIELD)
	e1:SetCode(EFFECT_INDESTRUCTABLE_COUNT)
	e1:SetRange(LOCATION_MZONE)
	e1:SetTargetRange(LOCATION_MZONE,0)
	e1:SetTarget(s.indtg)
	e1:SetValue(s.indct)
	c:RegisterEffect(e1)
	--Return all of opponent's spells/traps to hand
	local e2=Effect.CreateEffect(c)
	e2:SetDescription(aux.Stringid(id,0))
	e2:SetCategory(CATEGORY_TOHAND)
	e2:SetType(EFFECT_TYPE_IGNITION)
	e2:SetRange(LOCATION_MZONE)
	e2:SetCountLimit(1)
	e2:SetTarget(s.thtg)
	e2:SetOperation(s.thop)
	c:RegisterEffect(e2)
	--Destroy opponent's monster, that activated its effect
	local e3=Effect.CreateEffect(c)
	e3:SetDescription(aux.Stringid(id,1))
	e3:SetCategory(CATEGORY_DESTROY)
	e3:SetType(EFFECT_TYPE_QUICK_O)
	e3:SetCode(EVENT_CHAINING)
	e3:SetRange(LOCATION_MZONE)
	e3:SetCountLimit(1,id)
	e3:SetCondition(s.descon)
	e3:SetTarget(s.destg)
	e3:SetOperation(s.desop)
	c:RegisterEffect(e3)
end
	--Lists "Dual Avatar" archetype in fusion recipe
s.material_setcode={SET_DUAL_AVATAR}
	--Lists "Dual Avatar" archetype
s.listed_series={SET_DUAL_AVATAR}
	--Check for "Dual Avatar" fusion monsters
function s.indtg(e,c)
	return c:IsType(TYPE_FUSION) and c:IsSetCard(SET_DUAL_AVATAR)
end
	--Cannot be destroy by battle, once per turn
function s.indct(e,re,r,rp)
	if r&REASON_BATTLE==REASON_BATTLE then
		return 1
	else return 0 end
end
	--Check for spells/traps
function s.filter(c)
	return c:IsSpellTrap() and c:IsAbleToHand()
end
	--Activation legality
function s.thtg(e,tp,eg,ep,ev,re,r,rp,chk)
	if chk==0 then return Duel.IsExistingMatchingCard(s.filter,tp,0,LOCATION_ONFIELD,1,nil) end
	local sg=Duel.GetMatchingGroup(s.filter,tp,0,LOCATION_ONFIELD,nil)
	Duel.SetOperationInfo(0,CATEGORY_TOHAND,sg,#sg,0,0)
end
	--Return all of opponent's spells/traps to hand
function s.thop(e,tp,eg,ep,ev,re,r,rp,chk)
	local sg=Duel.GetMatchingGroup(s.filter,tp,0,LOCATION_ONFIELD,nil)
	Duel.SendtoHand(sg,nil,REASON_EFFECT)
end
	--If a monster effect is activated on opponent's field, while you control 2+ fusion monsters
function s.descon(e,tp,eg,ep,ev,re,r,rp)
	return re:GetHandler():IsOnField() and re:IsMonsterEffect() and ep==1-tp
		and Duel.GetMatchingGroupCount(aux.FaceupFilter(Card.IsType,TYPE_FUSION),tp,LOCATION_MZONE,0,nil)>=2
end
	--Activation legality
function s.destg(e,tp,eg,ep,ev,re,r,rp,chk)
	if chk==0 then return true end
	Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0)
end
	--Destroy opponent's monster, that activated its effect
function s.desop(e,tp,eg,ep,ev,re,r,rp)
	if re:GetHandler():IsRelateToEffect(re) then
		Duel.Destroy(eg,REASON_EFFECT)
	end
end