name: Rank-Up-Magic
card_text: Target 1 face-up Xyz Monster you control; Special Summon from your Extra Deck, 1 "Number C" monster with the same Type as that monster you control, but 1 Rank higher, by using it as the Xyz Material. (This Special Summon is treated as an Xyz Summon. Xyz Materials attached to it also become Xyz Materials on the Summoned monster.) Then, if any face-up cards are on the field other than this card and the monster Summoned by it, negate the effects of those other cards.
external_ids: local CARD_ID_0 = 6165656 --Number C88: Gimmick Puppet Disaster Leo
  local CARD_ID_1 = 48995978 --Number 88: Gimmick Puppet of Leo
  local SETCARD_ID_0 = 0x1048 --Number
  
lua: local CARD_ID_0 = 6165656 --Number C88: Gimmick Puppet Disaster Leo
  local CARD_ID_1 = 48995978 --Number 88: Gimmick Puppet of Leo
  local SETCARD_ID_0 = 0x1048 --Number
  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:SetCode(EVENT_FREE_CHAIN)
  	e1:SetProperty(EFFECT_FLAG_CARD_TARGET)
  	e1:SetTarget(s.target)
  	e1:SetOperation(s.activate)
  	c:RegisterEffect(e1)
  end
  function s.filter1(c, e, tp)
  	local rk = c:GetRank()
  	return c:IsFaceup()
  		and c:IsType(TYPE_XYZ)
  		and Duel.IsExistingMatchingCard(s.filter2, tp, LOCATION_EXTRA, 0, 1, nil, e, tp, c, rk + 1, c:GetRace(), c:GetCode())
  		and aux.MustMaterialCheck(c, tp, EFFECT_MUST_BE_XMATERIAL)
  end
  function s.filter2(c, e, tp, mc, rk, rc, code)
  	if c:GetOriginalCode() == CARD_ID_0 and code ~= CARD_ID_1 then
  		return false
  	end
  	return c:IsRank(rk)
  		and c:IsRace(rc)
  		and c:IsSetCard(SETCARD_ID_0)
  		and mc:IsCanBeXyzMaterial(c)
  		and c:IsCanBeSpecialSummoned(e, SUMMON_TYPE_XYZ, tp, false, false)
  		and Duel.GetLocationCountFromEx(tp, tp, mc, c) > 0
  end
  function s.target(e, tp, eg, ep, ev, re, r, rp, chk, chkc)
  	if chkc then
  		return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and s.filter1(chkc, e, tp)
  	end
  	if chk == 0 then
  		return Duel.IsExistingTarget(s.filter1, tp, LOCATION_MZONE, 0, 1, nil, e, tp)
  	end
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_TARGET)
  	Duel.SelectTarget(tp, s.filter1, tp, LOCATION_MZONE, 0, 1, 1, nil, e, tp)
  	Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, nil, 1, tp, LOCATION_EXTRA)
  end
  function s.activate(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	local tc = Duel.GetFirstTarget()
  	if not aux.MustMaterialCheck(tc, tp, EFFECT_MUST_BE_XMATERIAL) then
  		return
  	end
  	if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1 - tp) or tc:IsImmuneToEffect(e) then
  		return
  	end
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_SPSUMMON)
  	local g = Duel.SelectMatchingCard(tp, s.filter2, tp, LOCATION_EXTRA, 0, 1, 1, nil, e, tp, tc, tc:GetRank() + 1, tc:GetRace(), tc:GetCode())
  	local sc = g:GetFirst()
  	if sc then
  		local mg = tc:GetOverlayGroup()
  		if mg:GetCount() ~= 0 then
  			Duel.Overlay(sc, mg)
  		end
  		sc:SetMaterial(Group.FromCards(tc))
  		Duel.Overlay(sc, Group.FromCards(tc))
  		Duel.SpecialSummon(sc, SUMMON_TYPE_XYZ, tp, tp, false, false, POS_FACEUP)
  		sc:CompleteProcedure()
  		local g1 = Duel.GetMatchingGroup(Card.IsFaceup, tp, LOCATION_ONFIELD, LOCATION_ONFIELD, sc)
  		if c:IsStatus(STATUS_LEAVE_CONFIRMED) then
  			g1:RemoveCard(c)
  		end
  		if g1:GetCount() > 0 then
  			Duel.BreakEffect()
  		end
  		local ng = g1:Filter(aux.NegateAnyFilter, nil)
  		local nc = ng:GetFirst()
  		while nc do
  			local e1 = Effect.CreateEffect(c)
  			e1:SetType(EFFECT_TYPE_SINGLE)
  			e1:SetCode(EFFECT_DISABLE)
  			e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
  			e1:SetReset(RESET_EVENT + RESETS_STANDARD)
  			nc:RegisterEffect(e1)
  			local e2 = e1:Clone()
  			e2:SetCode(EFFECT_DISABLE_EFFECT)
  			nc:RegisterEffect(e2)
  			if nc:IsType(TYPE_TRAPMONSTER) then
  				local e3 = e1:Clone()
  				e3:SetCode(EFFECT_DISABLE_TRAPMONSTER)
  				nc:RegisterEffect(e3)
  			end
  			nc = ng:GetNext()
  		end
  	end
  end
  
  
source_text: Rank-Up-Magic
  Target 1 face-up Xyz Monster you control; Special Summon from your Extra Deck, 1 "Number C" monster with the same Type as that monster you control, but 1 Rank higher, by using it as the Xyz Material. (This Special Summon is treated as an Xyz Summon. Xyz Materials attached to it also become Xyz Materials on the Summoned monster.) Then, if any face-up cards are on the field other than this card and the monster Summoned by it, negate the effects of those other cards.
target_text: -- Rank-Up-Magic
  local CARD_ID_0 = 6165656 --Number C88: Gimmick Puppet Disaster Leo
  local CARD_ID_1 = 48995978 --Number 88: Gimmick Puppet of Leo
  local SETCARD_ID_0 = 0x1048 --Number
  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:SetCode(EVENT_FREE_CHAIN)
  	e1:SetProperty(EFFECT_FLAG_CARD_TARGET)
  	e1:SetTarget(s.target)
  	e1:SetOperation(s.activate)
  	c:RegisterEffect(e1)
  end
  function s.filter1(c, e, tp)
  	local rk = c:GetRank()
  	return c:IsFaceup()
  		and c:IsType(TYPE_XYZ)
  		and Duel.IsExistingMatchingCard(s.filter2, tp, LOCATION_EXTRA, 0, 1, nil, e, tp, c, rk + 1, c:GetRace(), c:GetCode())
  		and aux.MustMaterialCheck(c, tp, EFFECT_MUST_BE_XMATERIAL)
  end
  function s.filter2(c, e, tp, mc, rk, rc, code)
  	if c:GetOriginalCode() == CARD_ID_0 and code ~= CARD_ID_1 then
  		return false
  	end
  	return c:IsRank(rk)
  		and c:IsRace(rc)
  		and c:IsSetCard(SETCARD_ID_0)
  		and mc:IsCanBeXyzMaterial(c)
  		and c:IsCanBeSpecialSummoned(e, SUMMON_TYPE_XYZ, tp, false, false)
  		and Duel.GetLocationCountFromEx(tp, tp, mc, c) > 0
  end
  function s.target(e, tp, eg, ep, ev, re, r, rp, chk, chkc)
  	if chkc then
  		return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and s.filter1(chkc, e, tp)
  	end
  	if chk == 0 then
  		return Duel.IsExistingTarget(s.filter1, tp, LOCATION_MZONE, 0, 1, nil, e, tp)
  	end
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_TARGET)
  	Duel.SelectTarget(tp, s.filter1, tp, LOCATION_MZONE, 0, 1, 1, nil, e, tp)
  	Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, nil, 1, tp, LOCATION_EXTRA)
  end
  function s.activate(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	local tc = Duel.GetFirstTarget()
  	if not aux.MustMaterialCheck(tc, tp, EFFECT_MUST_BE_XMATERIAL) then
  		return
  	end
  	if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1 - tp) or tc:IsImmuneToEffect(e) then
  		return
  	end
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_SPSUMMON)
  	local g = Duel.SelectMatchingCard(tp, s.filter2, tp, LOCATION_EXTRA, 0, 1, 1, nil, e, tp, tc, tc:GetRank() + 1, tc:GetRace(), tc:GetCode())
  	local sc = g:GetFirst()
  	if sc then
  		local mg = tc:GetOverlayGroup()
  		if mg:GetCount() ~= 0 then
  			Duel.Overlay(sc, mg)
  		end
  		sc:SetMaterial(Group.FromCards(tc))
  		Duel.Overlay(sc, Group.FromCards(tc))
  		Duel.SpecialSummon(sc, SUMMON_TYPE_XYZ, tp, tp, false, false, POS_FACEUP)
  		sc:CompleteProcedure()
  		local g1 = Duel.GetMatchingGroup(Card.IsFaceup, tp, LOCATION_ONFIELD, LOCATION_ONFIELD, sc)
  		if c:IsStatus(STATUS_LEAVE_CONFIRMED) then
  			g1:RemoveCard(c)
  		end
  		if g1:GetCount() > 0 then
  			Duel.BreakEffect()
  		end
  		local ng = g1:Filter(aux.NegateAnyFilter, nil)
  		local nc = ng:GetFirst()
  		while nc do
  			local e1 = Effect.CreateEffect(c)
  			e1:SetType(EFFECT_TYPE_SINGLE)
  			e1:SetCode(EFFECT_DISABLE)
  			e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
  			e1:SetReset(RESET_EVENT + RESETS_STANDARD)
  			nc:RegisterEffect(e1)
  			local e2 = e1:Clone()
  			e2:SetCode(EFFECT_DISABLE_EFFECT)
  			nc:RegisterEffect(e2)
  			if nc:IsType(TYPE_TRAPMONSTER) then
  				local e3 = e1:Clone()
  				e3:SetCode(EFFECT_DISABLE_TRAPMONSTER)
  				nc:RegisterEffect(e3)
  			end
  			nc = ng:GetNext()
  		end
  	end
  end
  
  