Exosister
Pay 800 LP; choose 1 "Exosister" monster from your Deck, then take 1 other "Exosister" monster from your Deck that is mentioned on that monster, and Special Summon both, but shuffle them into the Deck during the End Phase, also for the rest of this turn after this card resolves, you cannot Special Summon monsters from the Extra Deck, except "Exosister" monsters. You can only activate 1 "Exosister Vadis" per turn.
local CARD_ID_0 = 59822133 --Blue-Eyes Spirit Dragon
local SETCARD_ID_0 = 0x172 --Exosister

local CARD_ID_0 = 59822133 --Blue-Eyes Spirit Dragon
local SETCARD_ID_0 = 0x172 --Exosister
local s, id, o = GetID()
function s.initial_effect(c)
	--Activate
	local e1 = Effect.CreateEffect(c)
	e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
	e1:SetType(EFFECT_TYPE_ACTIVATE)
	e1:SetCode(EVENT_FREE_CHAIN)
	e1:SetHintTiming(0, TIMING_END_PHASE)
	e1:SetCountLimit(1, id + EFFECT_COUNT_CODE_OATH)
	e1:SetCost(s.cost)
	e1:SetTarget(s.target)
	e1:SetOperation(s.activate)
	c:RegisterEffect(e1)
end
function s.cost(e, tp, eg, ep, ev, re, r, rp, chk)
	if chk == 0 then
		return Duel.CheckLPCost(tp, 800)
	end
	Duel.PayLPCost(tp, 800)
end
function s.spfilter1(c, e, tp)
	return c:IsSetCard(SETCARD_ID_0) and c:IsCanBeSpecialSummoned(e, 0, tp, false, false) and Duel.IsExistingMatchingCard(s.spfilter2, tp, LOCATION_DECK, 0, 1, c, e, tp, c)
end
function s.spfilter2(c, e, tp, ec)
	return c:IsSetCard(SETCARD_ID_0) and c:IsCanBeSpecialSummoned(e, 0, tp, false, false) and aux.IsCodeListed(ec, c:GetCode())
end
function s.target(e, tp, eg, ep, ev, re, r, rp, chk)
	if chk == 0 then
		return Duel.GetLocationCount(tp, LOCATION_MZONE) > 1 and Duel.IsExistingMatchingCard(s.spfilter1, tp, LOCATION_DECK, 0, 1, nil, e, tp) and not Duel.IsPlayerAffectedByEffect(tp, CARD_ID_0)
	end
	Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, nil, 2, 0, LOCATION_DECK)
end
function s.activate(e, tp, eg, ep, ev, re, r, rp)
	local c = e:GetHandler()
	if Duel.GetLocationCount(tp, LOCATION_MZONE) <= 1 or Duel.IsPlayerAffectedByEffect(tp, CARD_ID_0) then
		return
	end
	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_SPSUMMON)
	local g1 = Duel.SelectMatchingCard(tp, s.spfilter1, tp, LOCATION_DECK, 0, 1, 1, nil, e, tp)
	if #g1 == 0 then
		return
	end
	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_SPSUMMON)
	local g2 = Duel.SelectMatchingCard(tp, s.spfilter2, tp, LOCATION_DECK, 0, 1, 1, g1, e, tp, g1:GetFirst())
	g1:Merge(g2)
	local tc = g1:GetFirst()
	local fid = c:GetFieldID()
	while tc do
		Duel.SpecialSummonStep(tc, 0, tp, tp, false, false, POS_FACEUP)
		tc:RegisterFlagEffect(id, RESET_EVENT + RESETS_STANDARD, 0, 1, fid)
		tc = g1:GetNext()
	end
	Duel.SpecialSummonComplete()
	g1:KeepAlive()
	local e1 = Effect.CreateEffect(c)
	e1:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_CONTINUOUS)
	e1:SetCode(EVENT_PHASE + PHASE_END)
	e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
	e1:SetCountLimit(1)
	e1:SetLabel(fid)
	e1:SetLabelObject(g1)
	e1:SetCondition(s.tdcon)
	e1:SetOperation(s.tdop)
	Duel.RegisterEffect(e1, tp)
	if not e:IsHasType(EFFECT_TYPE_ACTIVATE) then
		return
	end
	local e1 = Effect.CreateEffect(e:GetHandler())
	e1:SetType(EFFECT_TYPE_FIELD)
	e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
	e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON)
	e1:SetTargetRange(1, 0)
	e1:SetTarget(s.splimit)
	e1:SetReset(RESET_PHASE + PHASE_END)
	Duel.RegisterEffect(e1, tp)
end
function s.tdfilter(c, fid)
	return c:GetFlagEffectLabel(id) == fid
end
function s.tdcon(e, tp, eg, ep, ev, re, r, rp)
	local g = e:GetLabelObject()
	if not g:IsExists(s.tdfilter, 1, nil, e:GetLabel()) then
		g:DeleteGroup()
		e:Reset()
		return false
	else
		return true
	end
end
function s.tdop(e, tp, eg, ep, ev, re, r, rp)
	local g = e:GetLabelObject()
	local tg = g:Filter(s.tdfilter, nil, e:GetLabel())
	Duel.SendtoDeck(tg, nil, SEQ_DECKSHUFFLE, REASON_EFFECT)
end
function s.splimit(e, c)
	return not c:IsSetCard(SETCARD_ID_0) and c:IsLocation(LOCATION_EXTRA)
end


Exosister
Pay 800 LP; choose 1 "Exosister" monster from your Deck, then take 1 other "Exosister" monster from your Deck that is mentioned on that monster, and Special Summon both, but shuffle them into the Deck during the End Phase, also for the rest of this turn after this card resolves, you cannot Special Summon monsters from the Extra Deck, except "Exosister" monsters. You can only activate 1 "Exosister Vadis" per turn.
-- Exosister
local CARD_ID_0 = 59822133 --Blue-Eyes Spirit Dragon
local SETCARD_ID_0 = 0x172 --Exosister
local s, id, o = GetID()
function s.initial_effect(c)
	--Activate
	local e1 = Effect.CreateEffect(c)
	e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
	e1:SetType(EFFECT_TYPE_ACTIVATE)
	e1:SetCode(EVENT_FREE_CHAIN)
	e1:SetHintTiming(0, TIMING_END_PHASE)
	e1:SetCountLimit(1, id + EFFECT_COUNT_CODE_OATH)
	e1:SetCost(s.cost)
	e1:SetTarget(s.target)
	e1:SetOperation(s.activate)
	c:RegisterEffect(e1)
end
function s.cost(e, tp, eg, ep, ev, re, r, rp, chk)
	if chk == 0 then
		return Duel.CheckLPCost(tp, 800)
	end
	Duel.PayLPCost(tp, 800)
end
function s.spfilter1(c, e, tp)
	return c:IsSetCard(SETCARD_ID_0) and c:IsCanBeSpecialSummoned(e, 0, tp, false, false) and Duel.IsExistingMatchingCard(s.spfilter2, tp, LOCATION_DECK, 0, 1, c, e, tp, c)
end
function s.spfilter2(c, e, tp, ec)
	return c:IsSetCard(SETCARD_ID_0) and c:IsCanBeSpecialSummoned(e, 0, tp, false, false) and aux.IsCodeListed(ec, c:GetCode())
end
function s.target(e, tp, eg, ep, ev, re, r, rp, chk)
	if chk == 0 then
		return Duel.GetLocationCount(tp, LOCATION_MZONE) > 1 and Duel.IsExistingMatchingCard(s.spfilter1, tp, LOCATION_DECK, 0, 1, nil, e, tp) and not Duel.IsPlayerAffectedByEffect(tp, CARD_ID_0)
	end
	Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, nil, 2, 0, LOCATION_DECK)
end
function s.activate(e, tp, eg, ep, ev, re, r, rp)
	local c = e:GetHandler()
	if Duel.GetLocationCount(tp, LOCATION_MZONE) <= 1 or Duel.IsPlayerAffectedByEffect(tp, CARD_ID_0) then
		return
	end
	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_SPSUMMON)
	local g1 = Duel.SelectMatchingCard(tp, s.spfilter1, tp, LOCATION_DECK, 0, 1, 1, nil, e, tp)
	if #g1 == 0 then
		return
	end
	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_SPSUMMON)
	local g2 = Duel.SelectMatchingCard(tp, s.spfilter2, tp, LOCATION_DECK, 0, 1, 1, g1, e, tp, g1:GetFirst())
	g1:Merge(g2)
	local tc = g1:GetFirst()
	local fid = c:GetFieldID()
	while tc do
		Duel.SpecialSummonStep(tc, 0, tp, tp, false, false, POS_FACEUP)
		tc:RegisterFlagEffect(id, RESET_EVENT + RESETS_STANDARD, 0, 1, fid)
		tc = g1:GetNext()
	end
	Duel.SpecialSummonComplete()
	g1:KeepAlive()
	local e1 = Effect.CreateEffect(c)
	e1:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_CONTINUOUS)
	e1:SetCode(EVENT_PHASE + PHASE_END)
	e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
	e1:SetCountLimit(1)
	e1:SetLabel(fid)
	e1:SetLabelObject(g1)
	e1:SetCondition(s.tdcon)
	e1:SetOperation(s.tdop)
	Duel.RegisterEffect(e1, tp)
	if not e:IsHasType(EFFECT_TYPE_ACTIVATE) then
		return
	end
	local e1 = Effect.CreateEffect(e:GetHandler())
	e1:SetType(EFFECT_TYPE_FIELD)
	e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
	e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON)
	e1:SetTargetRange(1, 0)
	e1:SetTarget(s.splimit)
	e1:SetReset(RESET_PHASE + PHASE_END)
	Duel.RegisterEffect(e1, tp)
end
function s.tdfilter(c, fid)
	return c:GetFlagEffectLabel(id) == fid
end
function s.tdcon(e, tp, eg, ep, ev, re, r, rp)
	local g = e:GetLabelObject()
	if not g:IsExists(s.tdfilter, 1, nil, e:GetLabel()) then
		g:DeleteGroup()
		e:Reset()
		return false
	else
		return true
	end
end
function s.tdop(e, tp, eg, ep, ev, re, r, rp)
	local g = e:GetLabelObject()
	local tg = g:Filter(s.tdfilter, nil, e:GetLabel())
	Duel.SendtoDeck(tg, nil, SEQ_DECKSHUFFLE, REASON_EFFECT)
end
function s.splimit(e, c)
	return not c:IsSetCard(SETCARD_ID_0) and c:IsLocation(LOCATION_EXTRA)
end

