Generate a YGOPro Lua script for the following Yu-Gi-Oh card effect:
1 "Serket" monster + 1 monster with 2500 or less ATK If this card is Special Summoned, or at the start of the Damage Step if this card battles an opponent's monster: You can target 1 face-up monster your opponent controls or in their GY; banish it, and if you do, this card gains ATK equal to half the banished monster's original ATK. You can only use this effect of "Divine Scorpion Beast of Serket" once per turn. Can make a second attack during each Battle Phase, while a Level 10 or higher monster is banished.
--聖神獣セルケト
--Divine Scorpion Beast of Serket
--Scripted by Eerie Code
local s,id=GetID()
function s.initial_effect(c)
	c:EnableReviveLimit()
	--Fusion Materials: 1 "Serket" monster + 1 monster with 2500 or less ATK
	Fusion.AddProcMix(c,true,true,aux.FilterBoolFunctionEx(Card.IsSetCard,SET_SERKET),aux.FilterBoolFunction(Card.IsAttackBelow,2500))
	--Banish 1 face-up monster your opponent controls or in their GY, and if you do, this card gains ATK equal to half the banished monster's original ATK
	local e1=Effect.CreateEffect(c)
	e1:SetDescription(aux.Stringid(id,0))
	e1:SetCategory(CATEGORY_REMOVE+CATEGORY_ATKCHANGE)
	e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
	e1:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET)
	e1:SetCode(EVENT_SPSUMMON_SUCCESS)
	e1:SetCountLimit(1,id)
	e1:SetTarget(s.rmtg)
	e1:SetOperation(s.rmop)
	c:RegisterEffect(e1)
	local e2=e1:Clone()
	e2:SetCode(EVENT_BATTLE_START)
	e2:SetCondition(s.rmcon)
	c:RegisterEffect(e2)
	--Can make a second attack during each Battle Phase, while a Level 10 or higher monster is banished
	local e3=Effect.CreateEffect(c)
	e3:SetType(EFFECT_TYPE_SINGLE)
	e3:SetCode(EFFECT_EXTRA_ATTACK)
	e3:SetCondition(function(e) return Duel.IsExistingMatchingCard(aux.FaceupFilter(Card.IsLevelAbove,10),0,LOCATION_REMOVED,LOCATION_REMOVED,1,nil) end)
	e3:SetValue(1)
	c:RegisterEffect(e3)
end
s.listed_series={SET_SERKET}
function s.rmcon(e,tp,eg,ep,ev,re,r,rp)
	local bc=e:GetHandler():GetBattleTarget()
	return bc and bc:IsControler(1-tp)
end
function s.rmfilter(c)
	return c:IsFaceup() and c:IsMonster() and c:IsAbleToRemove()
end
function s.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
	if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE|LOCATION_GRAVE) and s.rmfilter(chkc) end
	if chk==0 then return Duel.IsExistingTarget(s.rmfilter,tp,0,LOCATION_MZONE|LOCATION_GRAVE,1,nil) end
	Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
	local g=Duel.SelectTarget(tp,s.rmfilter,tp,0,LOCATION_MZONE|LOCATION_GRAVE,1,1,nil)
	Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,tp,0)
end
function s.rmop(e,tp,eg,ep,ev,re,r,rp)
	local c=e:GetHandler()
	local tc=Duel.GetFirstTarget()
	local atk=tc:GetBaseAttack()/2
	if tc:IsRelateToEffect(e) and Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)>0
		and c:IsRelateToEffect(e) and c:IsFaceup() then
		--This card gains ATK equal to half the banished monster's original ATK
		c:UpdateAttack(atk)
	end
end