name: Basiltrice,
card_text: If you control an "Evil Eye" monster and this card is in your hand or GY (Quick Effect): You can Special Summon this card, but banish it when it leaves the field. During your opponent's turn, you can (Quick Effect): Immediately after this effect resolves, Link Summon 1 "Evil Eye" Link Monster using monsters you control as material. When you do, you can also use "Evil Eye" Equip Spells you control as "Evil Eye" monsters. You can only use each effect of "Basiltrice, Familiar of the Evil Eye" once per turn.
external_ids: local SETCARD_ID_0 = 0x129 --Evil
  
lua: local SETCARD_ID_0 = 0x129 --Evil
  local s, id, o = GetID()
  function s.initial_effect(c)
  	--special summon
  	local e1 = Effect.CreateEffect(c)
  	e1:SetDescription(aux.Stringid(id, 0))
  	e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
  	e1:SetType(EFFECT_TYPE_QUICK_O)
  	e1:SetCode(EVENT_FREE_CHAIN)
  	e1:SetRange(LOCATION_HAND + LOCATION_GRAVE)
  	e1:SetCountLimit(1, id)
  	e1:SetHintTiming(0, TIMINGS_CHECK_MONSTER + TIMING_END_PHASE)
  	e1:SetCondition(s.spcon)
  	e1:SetTarget(s.sptg)
  	e1:SetOperation(s.spop)
  	c:RegisterEffect(e1)
  	--link summon
  	local e2 = Effect.CreateEffect(c)
  	e2:SetDescription(aux.Stringid(id, 1))
  	e2:SetCategory(CATEGORY_SPECIAL_SUMMON)
  	e2:SetType(EFFECT_TYPE_QUICK_O)
  	e2:SetCode(EVENT_FREE_CHAIN)
  	e2:SetRange(LOCATION_MZONE)
  	e2:SetHintTiming(0, TIMINGS_CHECK_MONSTER + TIMING_END_PHASE)
  	e2:SetCountLimit(1, id + o)
  	e2:SetCondition(s.lkcon)
  	e2:SetTarget(s.lktg)
  	e2:SetOperation(s.lkop)
  	c:RegisterEffect(e2)
  end
  function s.spcfilter(c)
  	return c:IsSetCard(SETCARD_ID_0) and c:IsFaceup()
  end
  function s.spcon(e, tp, eg, ep, ev, re, r, rp)
  	return Duel.IsExistingMatchingCard(s.spcfilter, tp, LOCATION_MZONE, 0, 1, nil)
  end
  function s.sptg(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return Duel.GetLocationCount(tp, LOCATION_MZONE) > 0 and e:GetHandler():IsCanBeSpecialSummoned(e, 0, tp, false, false)
  	end
  	Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, e:GetHandler(), 1, 0, 0)
  end
  function s.spop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	if c:IsRelateToEffect(e) and Duel.SpecialSummon(c, 0, tp, tp, false, false, POS_FACEUP) ~= 0 then
  		local e1 = Effect.CreateEffect(c)
  		e1:SetType(EFFECT_TYPE_SINGLE)
  		e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
  		e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT)
  		e1:SetValue(LOCATION_REMOVED)
  		e1:SetReset(RESET_EVENT + RESETS_REDIRECT)
  		c:RegisterEffect(e1, true)
  	end
  end
  function s.regop(e, tp)
  	local e1 = Effect.CreateEffect(e:GetHandler())
  	e1:SetType(EFFECT_TYPE_FIELD)
  	e1:SetCode(EFFECT_EXTRA_LINK_MATERIAL)
  	e1:SetTargetRange(LOCATION_SZONE, 0)
  	e1:SetTarget(s.mattg)
  	e1:SetValue(s.matval)
  	Duel.RegisterEffect(e1, tp)
  	return e1
  end
  function s.mattg(e, c)
  	return c:IsSetCard(SETCARD_ID_0) and c:IsType(TYPE_EQUIP) and c:IsType(TYPE_SPELL)
  end
  function s.matval(e, lc, mg, c, tp)
  	if not (lc:IsSetCard(SETCARD_ID_0) and e:GetHandlerPlayer() == tp) then
  		return false, nil
  	end
  	return true, true
  end
  function s.lkcon(e, tp, eg, ep, ev, re, r, rp)
  	return Duel.GetTurnPlayer() == 1 - tp
  end
  function s.lkfilter(c)
  	return c:IsSetCard(SETCARD_ID_0) and c:IsLinkSummonable(nil)
  end
  function s.lktg(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		local e1 = s.regop(e, tp)
  		local res = Duel.IsExistingMatchingCard(s.lkfilter, tp, LOCATION_EXTRA, 0, 1, nil)
  		e1:Reset()
  		return res
  	end
  	Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, nil, 1, 0, 0)
  end
  function s.lkop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	local e1 = s.regop(e, tp)
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_SPSUMMON)
  	local g = Duel.SelectMatchingCard(tp, s.lkfilter, tp, LOCATION_EXTRA, 0, 1, 1, nil)
  	local tc = g:GetFirst()
  	if tc then
  		local e2 = Effect.CreateEffect(c)
  		e2:SetType(EFFECT_TYPE_SINGLE)
  		e2:SetCode(EFFECT_SPSUMMON_COST)
  		e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
  		e2:SetLabelObject(e1)
  		e2:SetOperation(s.resetop)
  		tc:RegisterEffect(e2)
  		Duel.LinkSummon(tp, tc, nil)
  	else
  		e1:Reset()
  	end
  end
  function s.resetop(e, tp, eg, ep, ev, re, r, rp)
  	local e1 = e:GetLabelObject()
  	e1:Reset()
  	e:Reset()
  end
  
  
source_text: Basiltrice,
  If you control an "Evil Eye" monster and this card is in your hand or GY (Quick Effect): You can Special Summon this card, but banish it when it leaves the field. During your opponent's turn, you can (Quick Effect): Immediately after this effect resolves, Link Summon 1 "Evil Eye" Link Monster using monsters you control as material. When you do, you can also use "Evil Eye" Equip Spells you control as "Evil Eye" monsters. You can only use each effect of "Basiltrice, Familiar of the Evil Eye" once per turn.
target_text: -- Basiltrice,
  local SETCARD_ID_0 = 0x129 --Evil
  local s, id, o = GetID()
  function s.initial_effect(c)
  	--special summon
  	local e1 = Effect.CreateEffect(c)
  	e1:SetDescription(aux.Stringid(id, 0))
  	e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
  	e1:SetType(EFFECT_TYPE_QUICK_O)
  	e1:SetCode(EVENT_FREE_CHAIN)
  	e1:SetRange(LOCATION_HAND + LOCATION_GRAVE)
  	e1:SetCountLimit(1, id)
  	e1:SetHintTiming(0, TIMINGS_CHECK_MONSTER + TIMING_END_PHASE)
  	e1:SetCondition(s.spcon)
  	e1:SetTarget(s.sptg)
  	e1:SetOperation(s.spop)
  	c:RegisterEffect(e1)
  	--link summon
  	local e2 = Effect.CreateEffect(c)
  	e2:SetDescription(aux.Stringid(id, 1))
  	e2:SetCategory(CATEGORY_SPECIAL_SUMMON)
  	e2:SetType(EFFECT_TYPE_QUICK_O)
  	e2:SetCode(EVENT_FREE_CHAIN)
  	e2:SetRange(LOCATION_MZONE)
  	e2:SetHintTiming(0, TIMINGS_CHECK_MONSTER + TIMING_END_PHASE)
  	e2:SetCountLimit(1, id + o)
  	e2:SetCondition(s.lkcon)
  	e2:SetTarget(s.lktg)
  	e2:SetOperation(s.lkop)
  	c:RegisterEffect(e2)
  end
  function s.spcfilter(c)
  	return c:IsSetCard(SETCARD_ID_0) and c:IsFaceup()
  end
  function s.spcon(e, tp, eg, ep, ev, re, r, rp)
  	return Duel.IsExistingMatchingCard(s.spcfilter, tp, LOCATION_MZONE, 0, 1, nil)
  end
  function s.sptg(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return Duel.GetLocationCount(tp, LOCATION_MZONE) > 0 and e:GetHandler():IsCanBeSpecialSummoned(e, 0, tp, false, false)
  	end
  	Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, e:GetHandler(), 1, 0, 0)
  end
  function s.spop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	if c:IsRelateToEffect(e) and Duel.SpecialSummon(c, 0, tp, tp, false, false, POS_FACEUP) ~= 0 then
  		local e1 = Effect.CreateEffect(c)
  		e1:SetType(EFFECT_TYPE_SINGLE)
  		e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
  		e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT)
  		e1:SetValue(LOCATION_REMOVED)
  		e1:SetReset(RESET_EVENT + RESETS_REDIRECT)
  		c:RegisterEffect(e1, true)
  	end
  end
  function s.regop(e, tp)
  	local e1 = Effect.CreateEffect(e:GetHandler())
  	e1:SetType(EFFECT_TYPE_FIELD)
  	e1:SetCode(EFFECT_EXTRA_LINK_MATERIAL)
  	e1:SetTargetRange(LOCATION_SZONE, 0)
  	e1:SetTarget(s.mattg)
  	e1:SetValue(s.matval)
  	Duel.RegisterEffect(e1, tp)
  	return e1
  end
  function s.mattg(e, c)
  	return c:IsSetCard(SETCARD_ID_0) and c:IsType(TYPE_EQUIP) and c:IsType(TYPE_SPELL)
  end
  function s.matval(e, lc, mg, c, tp)
  	if not (lc:IsSetCard(SETCARD_ID_0) and e:GetHandlerPlayer() == tp) then
  		return false, nil
  	end
  	return true, true
  end
  function s.lkcon(e, tp, eg, ep, ev, re, r, rp)
  	return Duel.GetTurnPlayer() == 1 - tp
  end
  function s.lkfilter(c)
  	return c:IsSetCard(SETCARD_ID_0) and c:IsLinkSummonable(nil)
  end
  function s.lktg(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		local e1 = s.regop(e, tp)
  		local res = Duel.IsExistingMatchingCard(s.lkfilter, tp, LOCATION_EXTRA, 0, 1, nil)
  		e1:Reset()
  		return res
  	end
  	Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, nil, 1, 0, 0)
  end
  function s.lkop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	local e1 = s.regop(e, tp)
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_SPSUMMON)
  	local g = Duel.SelectMatchingCard(tp, s.lkfilter, tp, LOCATION_EXTRA, 0, 1, 1, nil)
  	local tc = g:GetFirst()
  	if tc then
  		local e2 = Effect.CreateEffect(c)
  		e2:SetType(EFFECT_TYPE_SINGLE)
  		e2:SetCode(EFFECT_SPSUMMON_COST)
  		e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
  		e2:SetLabelObject(e1)
  		e2:SetOperation(s.resetop)
  		tc:RegisterEffect(e2)
  		Duel.LinkSummon(tp, tc, nil)
  	else
  		e1:Reset()
  	end
  end
  function s.resetop(e, tp, eg, ep, ev, re, r, rp)
  	local e1 = e:GetLabelObject()
  	e1:Reset()
  	e:Reset()
  end
  
  