name: Super
card_text: 2 Level 12 monsters
  During the turn, or turn after, your opponent Special Summoned 2 or more monsters from the Extra Deck, you can also Xyz Summon this card by using 1 monster you control with the highest ATK (your choice, if tied). (Transfer its materials to this card.) If you do, you cannot Normal or Special Summon monsters for the rest of this turn. While this Xyz Summoned monster is on the field, neither player can activate the effects of monsters with 3000 or more ATK. Once per turn: You can detach 1 material from this card; return 1 monster from the field to the hand.
lua: local s, id, o = GetID()
  function s.initial_effect(c)
  	c:EnableReviveLimit()
  	--material
  	aux.AddXyzProcedure(c, nil, 12, 2, s.mfilter, aux.Stringid(id, 0), 2, s.altop)
  	if not s.global_check then
  		s.global_check = true
  		local ge1 = Effect.CreateEffect(c)
  		ge1:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_CONTINUOUS)
  		ge1:SetCode(EVENT_SPSUMMON_SUCCESS)
  		ge1:SetOperation(s.chk)
  		Duel.RegisterEffect(ge1, 0)
  	end
  	--limit summons
  	local e1 = Effect.CreateEffect(c)
  	e1:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_CONTINUOUS)
  	e1:SetCode(EVENT_SPSUMMON_SUCCESS)
  	e1:SetProperty(EFFECT_FLAG_UNCOPYABLE + EFFECT_FLAG_CANNOT_DISABLE)
  	e1:SetCondition(s.lscon)
  	e1:SetOperation(s.lsop)
  	c:RegisterEffect(e1)
  	--limit effects
  	local e2 = Effect.CreateEffect(c)
  	e2:SetType(EFFECT_TYPE_FIELD)
  	e2:SetCode(EFFECT_CANNOT_ACTIVATE)
  	e2:SetRange(LOCATION_MZONE)
  	e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
  	e2:SetTargetRange(1, 1)
  	e2:SetCondition(s.lecon)
  	e2:SetValue(s.aclimit)
  	c:RegisterEffect(e2)
  	--to hand
  	local e3 = Effect.CreateEffect(c)
  	e3:SetDescription(aux.Stringid(id, 1))
  	e3:SetCategory(CATEGORY_TOHAND)
  	e3:SetType(EFFECT_TYPE_IGNITION)
  	e3:SetRange(LOCATION_MZONE)
  	e3:SetCountLimit(1)
  	e3:SetCost(s.thcost)
  	e3:SetTarget(s.thtg)
  	e3:SetOperation(s.thop)
  	c:RegisterEffect(e3)
  end
  function s.chkfilter(c, tp)
  	return c:IsSummonPlayer(1 - tp) and c:IsSummonLocation(LOCATION_EXTRA)
  end
  function s.chk(e, tp, eg, ep, ev, re, r, rp)
  	for p = 0, 1 do
  		local tc = eg:GetFirst()
  		while tc do
  			if s.chkfilter(tc, p) then
  				Duel.RegisterFlagEffect(p, id, RESET_PHASE + PHASE_END, 0, 1)
  			end
  			tc = eg:GetNext()
  		end
  		if Duel.GetFlagEffect(p, id) > 1 then
  			Duel.RegisterFlagEffect(p, id + o, RESET_PHASE + PHASE_END, 0, 2)
  		end
  	end
  end
  function s.mfilter(c, e, tp)
  	local g = Duel.GetMatchingGroup(Card.IsFaceup, tp, LOCATION_MZONE, 0, nil):GetMaxGroup(Card.GetAttack)
  	return g and #g > 0 and g:IsContains(c)
  end
  function s.altop(e, tp, chk)
  	if chk == 0 then
  		return Duel.GetFlagEffect(tp, id + o) > 0
  	end
  	e:GetHandler():RegisterFlagEffect(id, RESET_EVENT + RESETS_STANDARD - RESET_TOFIELD + RESET_PHASE + PHASE_END, 0, 1)
  end
  function s.lscon(e, tp, eg, ep, ev, re, r, rp)
  	return e:GetHandler():GetFlagEffect(id) > 0
  end
  function s.lsop(e, tp, eg, ep, ev, re, r, rp)
  	local e1 = Effect.CreateEffect(e:GetHandler())
  	e1:SetType(EFFECT_TYPE_FIELD)
  	e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON)
  	e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
  	e1:SetTargetRange(1, 0)
  	e1:SetReset(RESET_PHASE + PHASE_END)
  	Duel.RegisterEffect(e1, tp)
  	local e2 = e1:Clone()
  	e2:SetCode(EFFECT_CANNOT_SUMMON)
  	Duel.RegisterEffect(e2, tp)
  end
  function s.lecon(e, tp, eg, ep, ev, re, r, rp)
  	return e:GetHandler():IsSummonType(SUMMON_TYPE_XYZ)
  end
  function s.aclimit(e, te, tp)
  	return te:IsActiveType(TYPE_MONSTER) and te:GetHandler():IsAttackAbove(3000)
  end
  function s.thcost(e, tp, eg, ep, ev, re, r, rp, chk)
  	local c = e:GetHandler()
  	if chk == 0 then
  		return c:CheckRemoveOverlayCard(tp, 1, REASON_COST)
  	end
  	c:RemoveOverlayCard(tp, 1, 1, REASON_COST)
  end
  function s.thtg(e, tp, eg, ep, ev, re, r, rp, chk)
  	local g = Duel.GetMatchingGroup(Card.IsAbleToHand, tp, LOCATION_MZONE, LOCATION_MZONE, nil)
  	if chk == 0 then
  		return #g > 0
  	end
  	Duel.SetOperationInfo(0, CATEGORY_TOHAND, g, 1, 0, 0)
  end
  function s.thop(e, tp, eg, ep, ev, re, r, rp)
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_RTOHAND)
  	local g = Duel.SelectMatchingCard(tp, Card.IsAbleToHand, tp, LOCATION_MZONE, LOCATION_MZONE, 1, 1, nil)
  	if #g > 0 then
  		Duel.HintSelection(g)
  		Duel.SendtoHand(g, nil, REASON_EFFECT)
  	end
  end
  
  
source_text: Super
  2 Level 12 monsters
  During the turn, or turn after, your opponent Special Summoned 2 or more monsters from the Extra Deck, you can also Xyz Summon this card by using 1 monster you control with the highest ATK (your choice, if tied). (Transfer its materials to this card.) If you do, you cannot Normal or Special Summon monsters for the rest of this turn. While this Xyz Summoned monster is on the field, neither player can activate the effects of monsters with 3000 or more ATK. Once per turn: You can detach 1 material from this card; return 1 monster from the field to the hand.
target_text: -- Super
  local s, id, o = GetID()
  function s.initial_effect(c)
  	c:EnableReviveLimit()
  	--material
  	aux.AddXyzProcedure(c, nil, 12, 2, s.mfilter, aux.Stringid(id, 0), 2, s.altop)
  	if not s.global_check then
  		s.global_check = true
  		local ge1 = Effect.CreateEffect(c)
  		ge1:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_CONTINUOUS)
  		ge1:SetCode(EVENT_SPSUMMON_SUCCESS)
  		ge1:SetOperation(s.chk)
  		Duel.RegisterEffect(ge1, 0)
  	end
  	--limit summons
  	local e1 = Effect.CreateEffect(c)
  	e1:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_CONTINUOUS)
  	e1:SetCode(EVENT_SPSUMMON_SUCCESS)
  	e1:SetProperty(EFFECT_FLAG_UNCOPYABLE + EFFECT_FLAG_CANNOT_DISABLE)
  	e1:SetCondition(s.lscon)
  	e1:SetOperation(s.lsop)
  	c:RegisterEffect(e1)
  	--limit effects
  	local e2 = Effect.CreateEffect(c)
  	e2:SetType(EFFECT_TYPE_FIELD)
  	e2:SetCode(EFFECT_CANNOT_ACTIVATE)
  	e2:SetRange(LOCATION_MZONE)
  	e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
  	e2:SetTargetRange(1, 1)
  	e2:SetCondition(s.lecon)
  	e2:SetValue(s.aclimit)
  	c:RegisterEffect(e2)
  	--to hand
  	local e3 = Effect.CreateEffect(c)
  	e3:SetDescription(aux.Stringid(id, 1))
  	e3:SetCategory(CATEGORY_TOHAND)
  	e3:SetType(EFFECT_TYPE_IGNITION)
  	e3:SetRange(LOCATION_MZONE)
  	e3:SetCountLimit(1)
  	e3:SetCost(s.thcost)
  	e3:SetTarget(s.thtg)
  	e3:SetOperation(s.thop)
  	c:RegisterEffect(e3)
  end
  function s.chkfilter(c, tp)
  	return c:IsSummonPlayer(1 - tp) and c:IsSummonLocation(LOCATION_EXTRA)
  end
  function s.chk(e, tp, eg, ep, ev, re, r, rp)
  	for p = 0, 1 do
  		local tc = eg:GetFirst()
  		while tc do
  			if s.chkfilter(tc, p) then
  				Duel.RegisterFlagEffect(p, id, RESET_PHASE + PHASE_END, 0, 1)
  			end
  			tc = eg:GetNext()
  		end
  		if Duel.GetFlagEffect(p, id) > 1 then
  			Duel.RegisterFlagEffect(p, id + o, RESET_PHASE + PHASE_END, 0, 2)
  		end
  	end
  end
  function s.mfilter(c, e, tp)
  	local g = Duel.GetMatchingGroup(Card.IsFaceup, tp, LOCATION_MZONE, 0, nil):GetMaxGroup(Card.GetAttack)
  	return g and #g > 0 and g:IsContains(c)
  end
  function s.altop(e, tp, chk)
  	if chk == 0 then
  		return Duel.GetFlagEffect(tp, id + o) > 0
  	end
  	e:GetHandler():RegisterFlagEffect(id, RESET_EVENT + RESETS_STANDARD - RESET_TOFIELD + RESET_PHASE + PHASE_END, 0, 1)
  end
  function s.lscon(e, tp, eg, ep, ev, re, r, rp)
  	return e:GetHandler():GetFlagEffect(id) > 0
  end
  function s.lsop(e, tp, eg, ep, ev, re, r, rp)
  	local e1 = Effect.CreateEffect(e:GetHandler())
  	e1:SetType(EFFECT_TYPE_FIELD)
  	e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON)
  	e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
  	e1:SetTargetRange(1, 0)
  	e1:SetReset(RESET_PHASE + PHASE_END)
  	Duel.RegisterEffect(e1, tp)
  	local e2 = e1:Clone()
  	e2:SetCode(EFFECT_CANNOT_SUMMON)
  	Duel.RegisterEffect(e2, tp)
  end
  function s.lecon(e, tp, eg, ep, ev, re, r, rp)
  	return e:GetHandler():IsSummonType(SUMMON_TYPE_XYZ)
  end
  function s.aclimit(e, te, tp)
  	return te:IsActiveType(TYPE_MONSTER) and te:GetHandler():IsAttackAbove(3000)
  end
  function s.thcost(e, tp, eg, ep, ev, re, r, rp, chk)
  	local c = e:GetHandler()
  	if chk == 0 then
  		return c:CheckRemoveOverlayCard(tp, 1, REASON_COST)
  	end
  	c:RemoveOverlayCard(tp, 1, 1, REASON_COST)
  end
  function s.thtg(e, tp, eg, ep, ev, re, r, rp, chk)
  	local g = Duel.GetMatchingGroup(Card.IsAbleToHand, tp, LOCATION_MZONE, LOCATION_MZONE, nil)
  	if chk == 0 then
  		return #g > 0
  	end
  	Duel.SetOperationInfo(0, CATEGORY_TOHAND, g, 1, 0, 0)
  end
  function s.thop(e, tp, eg, ep, ev, re, r, rp)
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_RTOHAND)
  	local g = Duel.SelectMatchingCard(tp, Card.IsAbleToHand, tp, LOCATION_MZONE, LOCATION_MZONE, 1, 1, nil)
  	if #g > 0 then
  		Duel.HintSelection(g)
  		Duel.SendtoHand(g, nil, REASON_EFFECT)
  	end
  end
  
  