Maiden
If your opponent Special Summons a monster(s) and you control a Link Monster (except during the Damage Step): Target 1 of them; destroy it, and if you do, inflict damage to your opponent equal to half its original ATK. If effect damage is inflicted while this card is in your GY (except during the Damage Step): You can banish this card, then target 1 Normal Spell in your GY or banishment; Set it, but it cannot be activated this turn. You can only use 1 "Maiden of Blue Tears" effect per turn, and only once that turn.
local s, id, o = GetID()
function s.initial_effect(c)
	--same effect send this card to grave and summon another card check
	local e0 = aux.AddThisCardInGraveAlreadyCheck(c)
	--
	local e1 = Effect.CreateEffect(c)
	e1:SetDescription(aux.Stringid(id, 0))
	e1:SetCategory(CATEGORY_DESTROY + CATEGORY_DAMAGE)
	e1:SetType(EFFECT_TYPE_ACTIVATE)
	e1:SetProperty(EFFECT_FLAG_DELAY + EFFECT_FLAG_CARD_TARGET)
	e1:SetCode(EVENT_CUSTOM + id)
	e1:SetCountLimit(1, id)
	e1:SetCondition(s.descon)
	e1:SetTarget(s.destg)
	e1:SetOperation(s.desop)
	c:RegisterEffect(e1)
	aux.RegisterMergedDelayedEvent(c, id, EVENT_SPSUMMON_SUCCESS)
	--
	local e2 = Effect.CreateEffect(c)
	e2:SetDescription(aux.Stringid(id, 1))
	e2:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_TRIGGER_O)
	e2:SetCode(EVENT_DAMAGE)
	e2:SetRange(LOCATION_GRAVE)
	e2:SetProperty(EFFECT_FLAG_DELAY + EFFECT_FLAG_CARD_TARGET)
	e2:SetLabelObject(e0)
	e2:SetCountLimit(1, id)
	e2:SetCondition(s.setcon)
	e2:SetCost(aux.bfgcost)
	e2:SetTarget(s.settg)
	e2:SetOperation(s.setop)
	c:RegisterEffect(e2)
end
function s.cfilter(c, tp)
	return c:IsSummonPlayer(1 - tp)
end
function s.cfilter2(c)
	return c:IsType(TYPE_LINK) and c:IsFaceup()
end
function s.descon(e, tp, eg, ep, ev, re, r, rp)
	return eg:IsExists(s.cfilter, 1, nil, tp) and Duel.IsExistingMatchingCard(s.cfilter2, tp, LOCATION_MZONE, 0, 1, nil)
end
function s.filter(c, e)
	return c:IsLocation(LOCATION_MZONE) and c:IsCanBeEffectTarget(e)
end
function s.destg(e, tp, eg, ep, ev, re, r, rp, chk, chkc)
	if chkc then
		return eg:IsContains(chkc) and s.filter(chkc, e)
	end
	if chk == 0 then
		return eg:IsExists(s.filter, 1, nil, e)
	end
	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_DESTROY)
	local g = eg:FilterSelect(tp, s.filter, 1, 1, nil, e)
	Duel.SetTargetCard(g)
	local tc = g:GetFirst()
	local dam = math.max(math.floor(tc:GetTextAttack() / 2), 0)
	Duel.SetOperationInfo(0, CATEGORY_DESTROY, tc, 1, 0, 0)
	if tc:IsFaceup() and dam > 0 then
		Duel.SetOperationInfo(0, CATEGORY_DAMAGE, nil, 0, 1 - tp, dam)
	end
end
function s.desop(e, tp, eg, ep, ev, re, r, rp)
	local tc = Duel.GetFirstTarget()
	if tc:IsRelateToEffect(e) and tc:IsType(TYPE_MONSTER) and Duel.Destroy(tc, REASON_EFFECT) ~= 0 then
		local atk = math.floor(tc:GetTextAttack() / 2)
		if atk > 0 then
			Duel.Damage(1 - tp, atk, REASON_EFFECT)
		end
	end
end
function s.setcon(e, tp, eg, ep, ev, re, r, rp)
	local se = e:GetLabelObject():GetLabelObject()
	return bit.band(r, REASON_EFFECT) ~= 0 and (se == nil or e:GetHandler():GetReasonEffect() ~= se)
end
function s.setfilter(c)
	return c:IsFaceupEx() and c:GetType() == TYPE_SPELL and c:IsSSetable()
end
function s.settg(e, tp, eg, ep, ev, re, r, rp, chk, chkc)
	if chkc then
		return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE + LOCATION_REMOVED) and s.setfilter(chkc)
	end
	if chk == 0 then
		return Duel.IsExistingTarget(s.setfilter, tp, LOCATION_GRAVE + LOCATION_REMOVED, 0, 1, nil)
	end
	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_SET)
	local g = Duel.SelectTarget(tp, s.setfilter, tp, LOCATION_GRAVE + LOCATION_REMOVED, 0, 1, 1, nil)
	if g:GetFirst():IsLocation(LOCATION_GRAVE) then
		Duel.SetOperationInfo(0, CATEGORY_LEAVE_GRAVE, g, g:GetCount(), 0, 0)
	end
end
function s.setop(e, tp, eg, ep, ev, re, r, rp)
	local c = e:GetHandler()
	local tc = Duel.GetFirstTarget()
	if tc:IsRelateToEffect(e) then
		Duel.SSet(tp, tc)
		local e1 = Effect.CreateEffect(c)
		e1:SetType(EFFECT_TYPE_SINGLE)
		e1:SetCode(EFFECT_CANNOT_TRIGGER)
		e1:SetReset(RESET_EVENT + RESETS_STANDARD + RESET_PHASE + PHASE_END)
		tc:RegisterEffect(e1)
	end
end


Maiden
If your opponent Special Summons a monster(s) and you control a Link Monster (except during the Damage Step): Target 1 of them; destroy it, and if you do, inflict damage to your opponent equal to half its original ATK. If effect damage is inflicted while this card is in your GY (except during the Damage Step): You can banish this card, then target 1 Normal Spell in your GY or banishment; Set it, but it cannot be activated this turn. You can only use 1 "Maiden of Blue Tears" effect per turn, and only once that turn.
-- Maiden
local s, id, o = GetID()
function s.initial_effect(c)
	--same effect send this card to grave and summon another card check
	local e0 = aux.AddThisCardInGraveAlreadyCheck(c)
	--
	local e1 = Effect.CreateEffect(c)
	e1:SetDescription(aux.Stringid(id, 0))
	e1:SetCategory(CATEGORY_DESTROY + CATEGORY_DAMAGE)
	e1:SetType(EFFECT_TYPE_ACTIVATE)
	e1:SetProperty(EFFECT_FLAG_DELAY + EFFECT_FLAG_CARD_TARGET)
	e1:SetCode(EVENT_CUSTOM + id)
	e1:SetCountLimit(1, id)
	e1:SetCondition(s.descon)
	e1:SetTarget(s.destg)
	e1:SetOperation(s.desop)
	c:RegisterEffect(e1)
	aux.RegisterMergedDelayedEvent(c, id, EVENT_SPSUMMON_SUCCESS)
	--
	local e2 = Effect.CreateEffect(c)
	e2:SetDescription(aux.Stringid(id, 1))
	e2:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_TRIGGER_O)
	e2:SetCode(EVENT_DAMAGE)
	e2:SetRange(LOCATION_GRAVE)
	e2:SetProperty(EFFECT_FLAG_DELAY + EFFECT_FLAG_CARD_TARGET)
	e2:SetLabelObject(e0)
	e2:SetCountLimit(1, id)
	e2:SetCondition(s.setcon)
	e2:SetCost(aux.bfgcost)
	e2:SetTarget(s.settg)
	e2:SetOperation(s.setop)
	c:RegisterEffect(e2)
end
function s.cfilter(c, tp)
	return c:IsSummonPlayer(1 - tp)
end
function s.cfilter2(c)
	return c:IsType(TYPE_LINK) and c:IsFaceup()
end
function s.descon(e, tp, eg, ep, ev, re, r, rp)
	return eg:IsExists(s.cfilter, 1, nil, tp) and Duel.IsExistingMatchingCard(s.cfilter2, tp, LOCATION_MZONE, 0, 1, nil)
end
function s.filter(c, e)
	return c:IsLocation(LOCATION_MZONE) and c:IsCanBeEffectTarget(e)
end
function s.destg(e, tp, eg, ep, ev, re, r, rp, chk, chkc)
	if chkc then
		return eg:IsContains(chkc) and s.filter(chkc, e)
	end
	if chk == 0 then
		return eg:IsExists(s.filter, 1, nil, e)
	end
	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_DESTROY)
	local g = eg:FilterSelect(tp, s.filter, 1, 1, nil, e)
	Duel.SetTargetCard(g)
	local tc = g:GetFirst()
	local dam = math.max(math.floor(tc:GetTextAttack() / 2), 0)
	Duel.SetOperationInfo(0, CATEGORY_DESTROY, tc, 1, 0, 0)
	if tc:IsFaceup() and dam > 0 then
		Duel.SetOperationInfo(0, CATEGORY_DAMAGE, nil, 0, 1 - tp, dam)
	end
end
function s.desop(e, tp, eg, ep, ev, re, r, rp)
	local tc = Duel.GetFirstTarget()
	if tc:IsRelateToEffect(e) and tc:IsType(TYPE_MONSTER) and Duel.Destroy(tc, REASON_EFFECT) ~= 0 then
		local atk = math.floor(tc:GetTextAttack() / 2)
		if atk > 0 then
			Duel.Damage(1 - tp, atk, REASON_EFFECT)
		end
	end
end
function s.setcon(e, tp, eg, ep, ev, re, r, rp)
	local se = e:GetLabelObject():GetLabelObject()
	return bit.band(r, REASON_EFFECT) ~= 0 and (se == nil or e:GetHandler():GetReasonEffect() ~= se)
end
function s.setfilter(c)
	return c:IsFaceupEx() and c:GetType() == TYPE_SPELL and c:IsSSetable()
end
function s.settg(e, tp, eg, ep, ev, re, r, rp, chk, chkc)
	if chkc then
		return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE + LOCATION_REMOVED) and s.setfilter(chkc)
	end
	if chk == 0 then
		return Duel.IsExistingTarget(s.setfilter, tp, LOCATION_GRAVE + LOCATION_REMOVED, 0, 1, nil)
	end
	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_SET)
	local g = Duel.SelectTarget(tp, s.setfilter, tp, LOCATION_GRAVE + LOCATION_REMOVED, 0, 1, 1, nil)
	if g:GetFirst():IsLocation(LOCATION_GRAVE) then
		Duel.SetOperationInfo(0, CATEGORY_LEAVE_GRAVE, g, g:GetCount(), 0, 0)
	end
end
function s.setop(e, tp, eg, ep, ev, re, r, rp)
	local c = e:GetHandler()
	local tc = Duel.GetFirstTarget()
	if tc:IsRelateToEffect(e) then
		Duel.SSet(tp, tc)
		local e1 = Effect.CreateEffect(c)
		e1:SetType(EFFECT_TYPE_SINGLE)
		e1:SetCode(EFFECT_CANNOT_TRIGGER)
		e1:SetReset(RESET_EVENT + RESETS_STANDARD + RESET_PHASE + PHASE_END)
		tc:RegisterEffect(e1)
	end
end

