name: Divine
card_text: 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.
external_ids: local SETCARD_ID_0 = 0x1c7 --Serket
  
lua: local SETCARD_ID_0 = 0x1c7 --Serket
  local s, id, o = GetID()
  function s.initial_effect(c)
  	--fusion material
  	c:EnableReviveLimit()
  	aux.AddFusionProcFun2(c, aux.FilterBoolFunction(Card.IsFusionSetCard, SETCARD_ID_0), aux.FilterBoolFunction(Card.IsAttackBelow, 2500), true)
  	--remove
  	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:SetCode(EVENT_SPSUMMON_SUCCESS)
  	e1:SetProperty(EFFECT_FLAG_CARD_TARGET + EFFECT_FLAG_DAMAGE_STEP + EFFECT_FLAG_DELAY)
  	e1:SetCountLimit(1, id)
  	e1:SetTarget(s.atktg)
  	e1:SetOperation(s.atkop)
  	c:RegisterEffect(e1)
  	local e2 = Effect.CreateEffect(c)
  	e2:SetDescription(aux.Stringid(id, 0))
  	e2:SetCategory(CATEGORY_REMOVE + CATEGORY_ATKCHANGE)
  	e2:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_TRIGGER_O)
  	e2:SetCode(EVENT_BATTLE_START)
  	e2:SetProperty(EFFECT_FLAG_CARD_TARGET)
  	e2:SetCountLimit(1, id)
  	e2:SetCondition(s.atkcon)
  	e2:SetTarget(s.atktg)
  	e2:SetOperation(s.atkop)
  	c:RegisterEffect(e2)
  	--extra attack
  	local e3 = Effect.CreateEffect(c)
  	e3:SetType(EFFECT_TYPE_SINGLE)
  	e3:SetCode(EFFECT_EXTRA_ATTACK)
  	e3:SetCondition(s.eacon)
  	e3:SetValue(1)
  	c:RegisterEffect(e3)
  end
  function s.atkfilter(c)
  	return c:IsType(TYPE_MONSTER) and c:IsFaceupEx() and c:IsAbleToRemove()
  end
  function s.atkcon(e, tp, eg, ep, ev, re, r, rp)
  	local tc = e:GetHandler():GetBattleTarget()
  	return tc and tc:IsControler(1 - tp)
  end
  function s.atktg(e, tp, eg, ep, ev, re, r, rp, chk, chkc)
  	local c = e:GetHandler()
  	if chkc then
  		return chkc:IsControler(1 - tp) and chkc:IsLocation(LOCATION_MZONE + LOCATION_GRAVE)
  	end
  	if chk == 0 then
  		return Duel.IsExistingTarget(s.atkfilter, tp, 0, LOCATION_MZONE + LOCATION_GRAVE, 1, c)
  	end
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_REMOVE)
  	local g = aux.SelectTargetFromFieldFirst(tp, s.atkfilter, tp, 0, LOCATION_MZONE + LOCATION_GRAVE, 1, 1, c)
  	Duel.SetOperationInfo(0, CATEGORY_REMOVE, g, 1, 0, 0)
  end
  function s.atkop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	local tc = Duel.GetFirstTarget()
  	if
  		tc
  		and aux.NecroValleyFilter()(tc)
  		and tc:IsType(TYPE_MONSTER)
  		and tc:IsRelateToChain()
  		and Duel.Remove(tc, POS_FACEUP, REASON_EFFECT) > 0
  		and (tc:IsLocation(LOCATION_REMOVED) or tc:IsType(TYPE_TOKEN))
  		and c:IsRelateToChain()
  		and c:IsFaceup()
  	then
  		local upval = tc:GetBaseAttack()
  		local e1 = Effect.CreateEffect(c)
  		e1:SetType(EFFECT_TYPE_SINGLE)
  		e1:SetCode(EFFECT_UPDATE_ATTACK)
  		e1:SetValue(upval / 2)
  		e1:SetReset(RESET_EVENT + RESETS_STANDARD + RESET_DISABLE)
  		c:RegisterEffect(e1)
  	end
  end
  function s.eacon(e, tp, eg, ep, ev, re, r, rp)
  	return Duel.IsExistingMatchingCard(aux.AND(Card.IsFaceup, Card.IsLevelAbove), 0, LOCATION_REMOVED, LOCATION_REMOVED, 1, nil, 10)
  end
  
  
source_text: Divine
  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.
target_text: -- Divine
  local SETCARD_ID_0 = 0x1c7 --Serket
  local s, id, o = GetID()
  function s.initial_effect(c)
  	--fusion material
  	c:EnableReviveLimit()
  	aux.AddFusionProcFun2(c, aux.FilterBoolFunction(Card.IsFusionSetCard, SETCARD_ID_0), aux.FilterBoolFunction(Card.IsAttackBelow, 2500), true)
  	--remove
  	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:SetCode(EVENT_SPSUMMON_SUCCESS)
  	e1:SetProperty(EFFECT_FLAG_CARD_TARGET + EFFECT_FLAG_DAMAGE_STEP + EFFECT_FLAG_DELAY)
  	e1:SetCountLimit(1, id)
  	e1:SetTarget(s.atktg)
  	e1:SetOperation(s.atkop)
  	c:RegisterEffect(e1)
  	local e2 = Effect.CreateEffect(c)
  	e2:SetDescription(aux.Stringid(id, 0))
  	e2:SetCategory(CATEGORY_REMOVE + CATEGORY_ATKCHANGE)
  	e2:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_TRIGGER_O)
  	e2:SetCode(EVENT_BATTLE_START)
  	e2:SetProperty(EFFECT_FLAG_CARD_TARGET)
  	e2:SetCountLimit(1, id)
  	e2:SetCondition(s.atkcon)
  	e2:SetTarget(s.atktg)
  	e2:SetOperation(s.atkop)
  	c:RegisterEffect(e2)
  	--extra attack
  	local e3 = Effect.CreateEffect(c)
  	e3:SetType(EFFECT_TYPE_SINGLE)
  	e3:SetCode(EFFECT_EXTRA_ATTACK)
  	e3:SetCondition(s.eacon)
  	e3:SetValue(1)
  	c:RegisterEffect(e3)
  end
  function s.atkfilter(c)
  	return c:IsType(TYPE_MONSTER) and c:IsFaceupEx() and c:IsAbleToRemove()
  end
  function s.atkcon(e, tp, eg, ep, ev, re, r, rp)
  	local tc = e:GetHandler():GetBattleTarget()
  	return tc and tc:IsControler(1 - tp)
  end
  function s.atktg(e, tp, eg, ep, ev, re, r, rp, chk, chkc)
  	local c = e:GetHandler()
  	if chkc then
  		return chkc:IsControler(1 - tp) and chkc:IsLocation(LOCATION_MZONE + LOCATION_GRAVE)
  	end
  	if chk == 0 then
  		return Duel.IsExistingTarget(s.atkfilter, tp, 0, LOCATION_MZONE + LOCATION_GRAVE, 1, c)
  	end
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_REMOVE)
  	local g = aux.SelectTargetFromFieldFirst(tp, s.atkfilter, tp, 0, LOCATION_MZONE + LOCATION_GRAVE, 1, 1, c)
  	Duel.SetOperationInfo(0, CATEGORY_REMOVE, g, 1, 0, 0)
  end
  function s.atkop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	local tc = Duel.GetFirstTarget()
  	if
  		tc
  		and aux.NecroValleyFilter()(tc)
  		and tc:IsType(TYPE_MONSTER)
  		and tc:IsRelateToChain()
  		and Duel.Remove(tc, POS_FACEUP, REASON_EFFECT) > 0
  		and (tc:IsLocation(LOCATION_REMOVED) or tc:IsType(TYPE_TOKEN))
  		and c:IsRelateToChain()
  		and c:IsFaceup()
  	then
  		local upval = tc:GetBaseAttack()
  		local e1 = Effect.CreateEffect(c)
  		e1:SetType(EFFECT_TYPE_SINGLE)
  		e1:SetCode(EFFECT_UPDATE_ATTACK)
  		e1:SetValue(upval / 2)
  		e1:SetReset(RESET_EVENT + RESETS_STANDARD + RESET_DISABLE)
  		c:RegisterEffect(e1)
  	end
  end
  function s.eacon(e, tp, eg, ep, ev, re, r, rp)
  	return Duel.IsExistingMatchingCard(aux.AND(Card.IsFaceup, Card.IsLevelAbove), 0, LOCATION_REMOVED, LOCATION_REMOVED, 1, nil, 10)
  end
  
  