Shaddoll
Fusion Summon 1 "Shaddoll" Fusion Monster from your Extra Deck, using monsters from your hand or field as material. If your opponent controls a monster that was Special Summoned from the Extra Deck, you can also use monsters in your Deck as material. You can only activate 1 "Shaddoll Fusion" per turn.
local SETCARD_ID_0 = 0x9d --Shaddoll

local SETCARD_ID_0 = 0x9d --Shaddoll
local s, id, o = GetID()
function s.initial_effect(c)
	--Activate
	local e1 = FusionSpell.CreateSummonEffect(c, {
		fusfilter = s.fusfilter,
		pre_select_mat_location = s.pre_select_mat_location,
	})
	e1:SetCategory(CATEGORY_SPECIAL_SUMMON + CATEGORY_FUSION_SUMMON + CATEGORY_DECKDES)
	e1:SetCountLimit(1, id + EFFECT_COUNT_CODE_OATH)
	c:RegisterEffect(e1)
end

function s.fusfilter(c)
	return c:IsSetCard(SETCARD_ID_0)
end

function s.pre_select_mat_location(tc, tp)
	local res = LOCATION_HAND | LOCATION_MZONE
	if Duel.IsExistingMatchingCard(s.cfilter, tp, 0, LOCATION_MZONE, 1, nil) then
		res = res | LOCATION_DECK
	end
	return res
end

function s.cfilter(c)
	return c:IsSummonLocation(LOCATION_EXTRA)
end


Shaddoll
Fusion Summon 1 "Shaddoll" Fusion Monster from your Extra Deck, using monsters from your hand or field as material. If your opponent controls a monster that was Special Summoned from the Extra Deck, you can also use monsters in your Deck as material. You can only activate 1 "Shaddoll Fusion" per turn.
-- Shaddoll
local SETCARD_ID_0 = 0x9d --Shaddoll
local s, id, o = GetID()
function s.initial_effect(c)
	--Activate
	local e1 = FusionSpell.CreateSummonEffect(c, {
		fusfilter = s.fusfilter,
		pre_select_mat_location = s.pre_select_mat_location,
	})
	e1:SetCategory(CATEGORY_SPECIAL_SUMMON + CATEGORY_FUSION_SUMMON + CATEGORY_DECKDES)
	e1:SetCountLimit(1, id + EFFECT_COUNT_CODE_OATH)
	c:RegisterEffect(e1)
end

function s.fusfilter(c)
	return c:IsSetCard(SETCARD_ID_0)
end

function s.pre_select_mat_location(tc, tp)
	local res = LOCATION_HAND | LOCATION_MZONE
	if Duel.IsExistingMatchingCard(s.cfilter, tp, 0, LOCATION_MZONE, 1, nil) then
		res = res | LOCATION_DECK
	end
	return res
end

function s.cfilter(c)
	return c:IsSummonLocation(LOCATION_EXTRA)
end

