name: Theia,
card_text: During the Main Phase (Quick Effect): You can Tribute monsters whose total Levels equal 11 or more; Special Summon this card from your hand, then if you control no other monsters, you can destroy 1 monster on the field with the highest ATK (your choice, if tied). You can only use this effect of "Theia, the Primal Being" once per turn. Neither player can Normal and/or Special Summon more than 4 times per turn while this card is face-up in the Monster Zone.
lua: local s, id, o = GetID()
  function s.initial_effect(c)
  	local e1 = Effect.CreateEffect(c)
  	e1:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_CONTINUOUS)
  	e1:SetRange(LOCATION_MZONE)
  	e1:SetCode(EVENT_SUMMON_SUCCESS)
  	e1:SetOperation(s.checkop)
  	c:RegisterEffect(e1)
  	local e2 = e1:Clone()
  	e2:SetCode(EVENT_SPSUMMON_SUCCESS)
  	c:RegisterEffect(e2)
  	--special summon
  	local e3 = Effect.CreateEffect(c)
  	e3:SetDescription(aux.Stringid(id, 0))
  	e3:SetCategory(CATEGORY_SPECIAL_SUMMON)
  	e3:SetType(EFFECT_TYPE_QUICK_O)
  	e3:SetRange(LOCATION_HAND)
  	e3:SetCode(EVENT_FREE_CHAIN)
  	e3:SetHintTiming(0, TIMING_MAIN_END)
  	e3:SetCountLimit(1, id)
  	e3:SetCondition(s.spcon)
  	e3:SetCost(s.spcost)
  	e3:SetTarget(s.sptg)
  	e3:SetOperation(s.spop)
  	c:RegisterEffect(e3)
  end
  function s.checkop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	if eg:IsContains(c) then
  		return
  	end
  	for p = 0, 1 do
  		if eg:IsExists(Card.IsSummonPlayer, 1, nil, p) then
  			c:RegisterFlagEffect(id, RESET_EVENT + RESETS_STANDARD + RESET_PHASE + PHASE_END, 0, 1, p)
  		end
  	end
  	local tptable = table.pack(c:GetFlagEffectLabel(id))
  	local tpvalue = { 0, 0 }
  	for i, v in ipairs(tptable) do
  		if v == 0 then
  			tpvalue[1] = tpvalue[1] + 1
  		elseif v == 1 then
  			tpvalue[2] = tpvalue[2] + 1
  		end
  	end
  	for p = 0, 1 do
  		if tpvalue[p + 1] < 4 then
  			--spsummon count limit
  			local e1 = Effect.CreateEffect(c)
  			e1:SetType(EFFECT_TYPE_FIELD)
  			e1:SetCode(EFFECT_SPSUMMON_COUNT_LIMIT)
  			e1:SetRange(LOCATION_MZONE)
  			e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
  			e1:SetTargetRange(1, 1)
  			e1:SetValue(4 - tpvalue[p + 1])
  			e1:SetLabel(p)
  			e1:SetTarget(s.splimit)
  			e1:SetReset(RESET_EVENT + RESETS_STANDARD + RESET_PHASE + PHASE_END)
  			c:RegisterEffect(e1)
  		elseif tpvalue[p + 1] == 4 then
  			--disable summon
  			local e2 = Effect.CreateEffect(c)
  			e2:SetType(EFFECT_TYPE_FIELD)
  			e2:SetRange(LOCATION_MZONE)
  			e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON)
  			e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
  			e2:SetTargetRange(1, 1)
  			e2:SetLabel(p)
  			e2:SetTarget(s.splimit)
  			e2:SetReset(RESET_EVENT + RESETS_STANDARD + RESET_PHASE + PHASE_END)
  			c:RegisterEffect(e2)
  			local e3 = e2:Clone()
  			e3:SetCode(EFFECT_CANNOT_SUMMON)
  			c:RegisterEffect(e3)
  		end
  	end
  end
  function s.splimit(e, c, sp, st)
  	return sp == e:GetLabel()
  end
  function s.relgoal(sg, tp)
  	Duel.SetSelectedCard(sg)
  	return sg:CheckWithSumGreater(Card.GetLevel, 11) and aux.mzctcheckrel(sg, tp)
  end
  function s.spcon(e, tp, eg, ep, ev, re, r, rp)
  	local ph = Duel.GetCurrentPhase()
  	return ph == PHASE_MAIN1 or ph == PHASE_MAIN2
  end
  function s.rfilter(c)
  	return c:IsType(TYPE_MONSTER) and c:IsLevelAbove(1)
  end
  function s.spcost(e, tp, eg, ep, ev, re, r, rp, chk)
  	local mg = Duel.GetReleaseGroup(tp):Filter(s.rfilter, nil)
  	if chk == 0 then
  		return mg:CheckSubGroup(s.relgoal, 1, 12, tp)
  	end
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_RELEASE)
  	local sg = mg:SelectSubGroup(tp, s.relgoal, false, 1, 12, tp)
  	aux.UseExtraReleaseCount(sg, tp)
  	Duel.Release(sg, REASON_COST)
  end
  function s.sptg(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return e:GetHandler():IsCanBeSpecialSummoned(e, 0, tp, false, false)
  	end
  	Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, e:GetHandler(), 1, 0, 0)
  end
  function s.spop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	if not c:IsRelateToEffect(e) then
  		return
  	end
  	if
  		Duel.SpecialSummon(c, 0, tp, tp, false, false, POS_FACEUP) ~= 0
  		and not Duel.IsExistingMatchingCard(aux.TRUE, tp, LOCATION_MZONE, 0, 1, e:GetHandler())
  		and Duel.GetMatchingGroupCount(Card.IsFaceup, tp, LOCATION_MZONE, LOCATION_MZONE, nil) > 0
  		and Duel.SelectYesNo(tp, aux.Stringid(id, 1))
  	then
  		local g = Duel.GetMatchingGroup(Card.IsFaceup, tp, LOCATION_MZONE, LOCATION_MZONE, nil)
  		if g:GetCount() > 0 then
  			local tg = g:GetMaxGroup(Card.GetAttack)
  			if tg:GetCount() > 1 then
  				Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_DESTROY)
  				local sg = tg:Select(tp, 1, 1, nil)
  				Duel.HintSelection(sg)
  				Duel.Destroy(sg, REASON_EFFECT)
  			else
  				Duel.Destroy(tg, REASON_EFFECT)
  			end
  		end
  	end
  end
  
  
source_text: Theia,
  During the Main Phase (Quick Effect): You can Tribute monsters whose total Levels equal 11 or more; Special Summon this card from your hand, then if you control no other monsters, you can destroy 1 monster on the field with the highest ATK (your choice, if tied). You can only use this effect of "Theia, the Primal Being" once per turn. Neither player can Normal and/or Special Summon more than 4 times per turn while this card is face-up in the Monster Zone.
target_text: -- Theia,
  local s, id, o = GetID()
  function s.initial_effect(c)
  	local e1 = Effect.CreateEffect(c)
  	e1:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_CONTINUOUS)
  	e1:SetRange(LOCATION_MZONE)
  	e1:SetCode(EVENT_SUMMON_SUCCESS)
  	e1:SetOperation(s.checkop)
  	c:RegisterEffect(e1)
  	local e2 = e1:Clone()
  	e2:SetCode(EVENT_SPSUMMON_SUCCESS)
  	c:RegisterEffect(e2)
  	--special summon
  	local e3 = Effect.CreateEffect(c)
  	e3:SetDescription(aux.Stringid(id, 0))
  	e3:SetCategory(CATEGORY_SPECIAL_SUMMON)
  	e3:SetType(EFFECT_TYPE_QUICK_O)
  	e3:SetRange(LOCATION_HAND)
  	e3:SetCode(EVENT_FREE_CHAIN)
  	e3:SetHintTiming(0, TIMING_MAIN_END)
  	e3:SetCountLimit(1, id)
  	e3:SetCondition(s.spcon)
  	e3:SetCost(s.spcost)
  	e3:SetTarget(s.sptg)
  	e3:SetOperation(s.spop)
  	c:RegisterEffect(e3)
  end
  function s.checkop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	if eg:IsContains(c) then
  		return
  	end
  	for p = 0, 1 do
  		if eg:IsExists(Card.IsSummonPlayer, 1, nil, p) then
  			c:RegisterFlagEffect(id, RESET_EVENT + RESETS_STANDARD + RESET_PHASE + PHASE_END, 0, 1, p)
  		end
  	end
  	local tptable = table.pack(c:GetFlagEffectLabel(id))
  	local tpvalue = { 0, 0 }
  	for i, v in ipairs(tptable) do
  		if v == 0 then
  			tpvalue[1] = tpvalue[1] + 1
  		elseif v == 1 then
  			tpvalue[2] = tpvalue[2] + 1
  		end
  	end
  	for p = 0, 1 do
  		if tpvalue[p + 1] < 4 then
  			--spsummon count limit
  			local e1 = Effect.CreateEffect(c)
  			e1:SetType(EFFECT_TYPE_FIELD)
  			e1:SetCode(EFFECT_SPSUMMON_COUNT_LIMIT)
  			e1:SetRange(LOCATION_MZONE)
  			e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
  			e1:SetTargetRange(1, 1)
  			e1:SetValue(4 - tpvalue[p + 1])
  			e1:SetLabel(p)
  			e1:SetTarget(s.splimit)
  			e1:SetReset(RESET_EVENT + RESETS_STANDARD + RESET_PHASE + PHASE_END)
  			c:RegisterEffect(e1)
  		elseif tpvalue[p + 1] == 4 then
  			--disable summon
  			local e2 = Effect.CreateEffect(c)
  			e2:SetType(EFFECT_TYPE_FIELD)
  			e2:SetRange(LOCATION_MZONE)
  			e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON)
  			e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
  			e2:SetTargetRange(1, 1)
  			e2:SetLabel(p)
  			e2:SetTarget(s.splimit)
  			e2:SetReset(RESET_EVENT + RESETS_STANDARD + RESET_PHASE + PHASE_END)
  			c:RegisterEffect(e2)
  			local e3 = e2:Clone()
  			e3:SetCode(EFFECT_CANNOT_SUMMON)
  			c:RegisterEffect(e3)
  		end
  	end
  end
  function s.splimit(e, c, sp, st)
  	return sp == e:GetLabel()
  end
  function s.relgoal(sg, tp)
  	Duel.SetSelectedCard(sg)
  	return sg:CheckWithSumGreater(Card.GetLevel, 11) and aux.mzctcheckrel(sg, tp)
  end
  function s.spcon(e, tp, eg, ep, ev, re, r, rp)
  	local ph = Duel.GetCurrentPhase()
  	return ph == PHASE_MAIN1 or ph == PHASE_MAIN2
  end
  function s.rfilter(c)
  	return c:IsType(TYPE_MONSTER) and c:IsLevelAbove(1)
  end
  function s.spcost(e, tp, eg, ep, ev, re, r, rp, chk)
  	local mg = Duel.GetReleaseGroup(tp):Filter(s.rfilter, nil)
  	if chk == 0 then
  		return mg:CheckSubGroup(s.relgoal, 1, 12, tp)
  	end
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_RELEASE)
  	local sg = mg:SelectSubGroup(tp, s.relgoal, false, 1, 12, tp)
  	aux.UseExtraReleaseCount(sg, tp)
  	Duel.Release(sg, REASON_COST)
  end
  function s.sptg(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return e:GetHandler():IsCanBeSpecialSummoned(e, 0, tp, false, false)
  	end
  	Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, e:GetHandler(), 1, 0, 0)
  end
  function s.spop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	if not c:IsRelateToEffect(e) then
  		return
  	end
  	if
  		Duel.SpecialSummon(c, 0, tp, tp, false, false, POS_FACEUP) ~= 0
  		and not Duel.IsExistingMatchingCard(aux.TRUE, tp, LOCATION_MZONE, 0, 1, e:GetHandler())
  		and Duel.GetMatchingGroupCount(Card.IsFaceup, tp, LOCATION_MZONE, LOCATION_MZONE, nil) > 0
  		and Duel.SelectYesNo(tp, aux.Stringid(id, 1))
  	then
  		local g = Duel.GetMatchingGroup(Card.IsFaceup, tp, LOCATION_MZONE, LOCATION_MZONE, nil)
  		if g:GetCount() > 0 then
  			local tg = g:GetMaxGroup(Card.GetAttack)
  			if tg:GetCount() > 1 then
  				Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_DESTROY)
  				local sg = tg:Select(tp, 1, 1, nil)
  				Duel.HintSelection(sg)
  				Duel.Destroy(sg, REASON_EFFECT)
  			else
  				Duel.Destroy(tg, REASON_EFFECT)
  			end
  		end
  	end
  end
  
  