name: Rise
card_text: During the Main Phase or your opponent's Battle Phase: Target 2 or more "Raidraptor" Xyz Monsters you control and/or in your GY, including a monster on the field; if at least 2 remain face-up at resolution, Special Summon 1 "Raidraptor" Xyz Monster from your Extra Deck with a Rank equal to their combined Ranks, and if you do, attach the targeted monsters to it as material. (This is treated as an Xyz Summon. Transfer their materials to the Summoned monster.) You can only activate 1 "Rise Rank-Up-Magic Raidraptor's Force" per turn.
external_ids: local SETCARD_ID_0 = 0xba --Raidraptor
  
lua: local SETCARD_ID_0 = 0xba --Raidraptor
  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:SetProperty(EFFECT_FLAG_CARD_TARGET)
  	e1:SetCode(EVENT_FREE_CHAIN)
  	e1:SetCountLimit(1, id + EFFECT_COUNT_CODE_OATH)
  	e1:SetCondition(s.condition)
  	e1:SetTarget(s.target)
  	e1:SetOperation(s.activate)
  	c:RegisterEffect(e1)
  end
  function s.condition(e, tp, eg, ep, ev, re, r, rp)
  	return Duel.GetCurrentPhase() == PHASE_MAIN1
  		or Duel.GetCurrentPhase() == PHASE_MAIN2
  		or Duel.GetTurnPlayer() ~= tp and Duel.GetCurrentPhase() >= PHASE_BATTLE_START and Duel.GetCurrentPhase() <= PHASE_BATTLE
  end
  function s.filter1(c, e)
  	return c:GetRank() > 0 and c:IsFaceup() and c:IsSetCard(SETCARD_ID_0) and c:IsCanBeEffectTarget(e) and not c:IsForbidden()
  end
  function s.filter2(c, e, tp, mg)
  	local rk = mg:GetSum(Card.GetRank)
  	return c:IsRank(rk) and c:IsSetCard(SETCARD_ID_0) and c:IsCanBeSpecialSummoned(e, SUMMON_TYPE_XYZ, tp, false, false) and Duel.GetLocationCountFromEx(tp, tp, nil, c) > 0
  end
  function s.fselect(g, tp, e)
  	return g:IsExists(Card.IsLocation, 1, nil, LOCATION_MZONE) and Duel.IsExistingMatchingCard(s.filter2, tp, LOCATION_EXTRA, 0, 1, nil, e, tp, g)
  end
  function s.target(e, tp, eg, ep, ev, re, r, rp, chk, chkc)
  	if chkc then
  		return false
  	end
  	local rg = Duel.GetMatchingGroup(s.filter1, tp, LOCATION_MZONE + LOCATION_GRAVE, 0, nil, e)
  	if chk == 0 then
  		return rg:CheckSubGroup(s.fselect, 2, 99, tp, e)
  	end
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_TARGET)
  	local sg = rg:SelectSubGroup(tp, s.fselect, false, 2, 99, tp, e)
  	Duel.SetTargetCard(sg)
  	Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, nil, 1, tp, LOCATION_EXTRA)
  	Duel.SetOperationInfo(0, CATEGORY_LEAVE_GRAVE, sg:Filter(Card.IsLocation, nil, LOCATION_GRAVE), 1, 0, 0)
  end
  function s.ovfilter(c, e)
  	return c:IsCanOverlay() and not c:IsImmuneToEffect(e)
  end
  function s.activate(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	local tg = Duel.GetTargetsRelateToChain()
  	if tg:GetCount() < 2 then
  		return
  	end
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_SPSUMMON)
  	local sg = Duel.SelectMatchingCard(tp, s.filter2, tp, LOCATION_EXTRA, 0, 1, 1, nil, e, tp, tg)
  	local sc = sg:GetFirst()
  	if sc and Duel.SpecialSummon(sc, SUMMON_TYPE_XYZ, tp, tp, false, false, POS_FACEUP) ~= 0 then
  		sc:CompleteProcedure()
  		local og = tg:Filter(s.ovfilter, nil, e)
  		for tc in aux.Next(og) do
  			local mg = tc:GetOverlayGroup()
  			if mg:GetCount() ~= 0 then
  				Duel.Overlay(sc, mg)
  			end
  			Duel.Overlay(sc, Group.FromCards(tc))
  		end
  	end
  end
  
  
source_text: Rise
  During the Main Phase or your opponent's Battle Phase: Target 2 or more "Raidraptor" Xyz Monsters you control and/or in your GY, including a monster on the field; if at least 2 remain face-up at resolution, Special Summon 1 "Raidraptor" Xyz Monster from your Extra Deck with a Rank equal to their combined Ranks, and if you do, attach the targeted monsters to it as material. (This is treated as an Xyz Summon. Transfer their materials to the Summoned monster.) You can only activate 1 "Rise Rank-Up-Magic Raidraptor's Force" per turn.
target_text: -- Rise
  local SETCARD_ID_0 = 0xba --Raidraptor
  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:SetProperty(EFFECT_FLAG_CARD_TARGET)
  	e1:SetCode(EVENT_FREE_CHAIN)
  	e1:SetCountLimit(1, id + EFFECT_COUNT_CODE_OATH)
  	e1:SetCondition(s.condition)
  	e1:SetTarget(s.target)
  	e1:SetOperation(s.activate)
  	c:RegisterEffect(e1)
  end
  function s.condition(e, tp, eg, ep, ev, re, r, rp)
  	return Duel.GetCurrentPhase() == PHASE_MAIN1
  		or Duel.GetCurrentPhase() == PHASE_MAIN2
  		or Duel.GetTurnPlayer() ~= tp and Duel.GetCurrentPhase() >= PHASE_BATTLE_START and Duel.GetCurrentPhase() <= PHASE_BATTLE
  end
  function s.filter1(c, e)
  	return c:GetRank() > 0 and c:IsFaceup() and c:IsSetCard(SETCARD_ID_0) and c:IsCanBeEffectTarget(e) and not c:IsForbidden()
  end
  function s.filter2(c, e, tp, mg)
  	local rk = mg:GetSum(Card.GetRank)
  	return c:IsRank(rk) and c:IsSetCard(SETCARD_ID_0) and c:IsCanBeSpecialSummoned(e, SUMMON_TYPE_XYZ, tp, false, false) and Duel.GetLocationCountFromEx(tp, tp, nil, c) > 0
  end
  function s.fselect(g, tp, e)
  	return g:IsExists(Card.IsLocation, 1, nil, LOCATION_MZONE) and Duel.IsExistingMatchingCard(s.filter2, tp, LOCATION_EXTRA, 0, 1, nil, e, tp, g)
  end
  function s.target(e, tp, eg, ep, ev, re, r, rp, chk, chkc)
  	if chkc then
  		return false
  	end
  	local rg = Duel.GetMatchingGroup(s.filter1, tp, LOCATION_MZONE + LOCATION_GRAVE, 0, nil, e)
  	if chk == 0 then
  		return rg:CheckSubGroup(s.fselect, 2, 99, tp, e)
  	end
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_TARGET)
  	local sg = rg:SelectSubGroup(tp, s.fselect, false, 2, 99, tp, e)
  	Duel.SetTargetCard(sg)
  	Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, nil, 1, tp, LOCATION_EXTRA)
  	Duel.SetOperationInfo(0, CATEGORY_LEAVE_GRAVE, sg:Filter(Card.IsLocation, nil, LOCATION_GRAVE), 1, 0, 0)
  end
  function s.ovfilter(c, e)
  	return c:IsCanOverlay() and not c:IsImmuneToEffect(e)
  end
  function s.activate(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	local tg = Duel.GetTargetsRelateToChain()
  	if tg:GetCount() < 2 then
  		return
  	end
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_SPSUMMON)
  	local sg = Duel.SelectMatchingCard(tp, s.filter2, tp, LOCATION_EXTRA, 0, 1, 1, nil, e, tp, tg)
  	local sc = sg:GetFirst()
  	if sc and Duel.SpecialSummon(sc, SUMMON_TYPE_XYZ, tp, tp, false, false, POS_FACEUP) ~= 0 then
  		sc:CompleteProcedure()
  		local og = tg:Filter(s.ovfilter, nil, e)
  		for tc in aux.Next(og) do
  			local mg = tc:GetOverlayGroup()
  			if mg:GetCount() ~= 0 then
  				Duel.Overlay(sc, mg)
  			end
  			Duel.Overlay(sc, Group.FromCards(tc))
  		end
  	end
  end
  
  