name: Awakening
card_text: Place 1 "Obsidim, the Ashened City" from your Deck, face-up in either Field Zone, then if your opponent controls a card in their Field Zone, you can add 1 Level 5 or higher DARK Pyro monster from your Deck to your hand. For the rest of this turn after this card resolves, you cannot Special Summon from the Deck or Extra Deck, except Pyro monsters. You can only activate 1 "Awakening of Veidos" per turn.
external_ids: local CARD_ID_0 = 3055018 --Obsidim, the Ashened City
  
lua: local CARD_ID_0 = 3055018 --Obsidim, the Ashened City
  local s, id, o = GetID()
  function s.initial_effect(c)
  	aux.AddCodeList(c, CARD_ID_0)
  	--Activate
  	local e1 = Effect.CreateEffect(c)
  	e1:SetCategory(CATEGORY_TOHAND + CATEGORY_SEARCH)
  	e1:SetType(EFFECT_TYPE_ACTIVATE)
  	e1:SetCode(EVENT_FREE_CHAIN)
  	e1:SetHintTiming(0, TIMING_END_PHASE)
  	e1:SetCountLimit(1, id + EFFECT_COUNT_CODE_OATH)
  	e1:SetTarget(s.target)
  	e1:SetOperation(s.activate)
  	c:RegisterEffect(e1)
  end
  function s.setfilter(c)
  	return c:IsCode(CARD_ID_0) and not c:IsForbidden()
  end
  function s.target(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return Duel.IsExistingMatchingCard(s.setfilter, tp, LOCATION_DECK, 0, 1, nil)
  	end
  end
  function s.thfilter(c)
  	return c:IsType(TYPE_MONSTER) and c:IsAttribute(ATTRIBUTE_DARK) and c:IsRace(RACE_PYRO) and c:IsLevelAbove(5) and c:IsAbleToHand()
  end
  function s.activate(e, tp, eg, ep, ev, re, r, rp)
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_TOFIELD)
  	local tc = Duel.SelectMatchingCard(tp, s.setfilter, tp, LOCATION_DECK, 0, 1, 1, nil):GetFirst()
  	local p = tp
  	if Duel.SelectOption(tp, aux.Stringid(id, 1), aux.Stringid(id, 2)) == 1 then
  		p = 1 - p
  	end
  	if tc then
  		local fc = Duel.GetFieldCard(p, LOCATION_SZONE, 5)
  		if fc then
  			Duel.SendtoGrave(fc, REASON_RULE)
  			Duel.BreakEffect()
  		end
  		if
  			Duel.MoveToField(tc, tp, p, LOCATION_FZONE, POS_FACEUP, true)
  			and Duel.GetFieldGroupCount(tp, 0, LOCATION_FZONE) > 0
  			and Duel.IsExistingMatchingCard(s.thfilter, tp, LOCATION_DECK, 0, 1, nil)
  			and Duel.SelectYesNo(tp, aux.Stringid(id, 3))
  		then
  			Duel.BreakEffect()
  			local g = Duel.SelectMatchingCard(tp, s.thfilter, tp, LOCATION_DECK, 0, 1, 1, nil)
  			Duel.SendtoHand(g, nil, REASON_EFFECT)
  			Duel.ConfirmCards(1 - tp, g)
  		end
  	end
  	if not e:IsHasType(EFFECT_TYPE_ACTIVATE) then
  		return
  	end
  	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:SetTarget(s.splimit)
  	e1:SetReset(RESET_PHASE + PHASE_END)
  	Duel.RegisterEffect(e1, tp)
  end
  function s.splimit(e, c)
  	return not c:IsRace(RACE_PYRO) and c:IsLocation(LOCATION_DECK + LOCATION_EXTRA)
  end
  
  
source_text: Awakening
  Place 1 "Obsidim, the Ashened City" from your Deck, face-up in either Field Zone, then if your opponent controls a card in their Field Zone, you can add 1 Level 5 or higher DARK Pyro monster from your Deck to your hand. For the rest of this turn after this card resolves, you cannot Special Summon from the Deck or Extra Deck, except Pyro monsters. You can only activate 1 "Awakening of Veidos" per turn.
target_text: -- Awakening
  local CARD_ID_0 = 3055018 --Obsidim, the Ashened City
  local s, id, o = GetID()
  function s.initial_effect(c)
  	aux.AddCodeList(c, CARD_ID_0)
  	--Activate
  	local e1 = Effect.CreateEffect(c)
  	e1:SetCategory(CATEGORY_TOHAND + CATEGORY_SEARCH)
  	e1:SetType(EFFECT_TYPE_ACTIVATE)
  	e1:SetCode(EVENT_FREE_CHAIN)
  	e1:SetHintTiming(0, TIMING_END_PHASE)
  	e1:SetCountLimit(1, id + EFFECT_COUNT_CODE_OATH)
  	e1:SetTarget(s.target)
  	e1:SetOperation(s.activate)
  	c:RegisterEffect(e1)
  end
  function s.setfilter(c)
  	return c:IsCode(CARD_ID_0) and not c:IsForbidden()
  end
  function s.target(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return Duel.IsExistingMatchingCard(s.setfilter, tp, LOCATION_DECK, 0, 1, nil)
  	end
  end
  function s.thfilter(c)
  	return c:IsType(TYPE_MONSTER) and c:IsAttribute(ATTRIBUTE_DARK) and c:IsRace(RACE_PYRO) and c:IsLevelAbove(5) and c:IsAbleToHand()
  end
  function s.activate(e, tp, eg, ep, ev, re, r, rp)
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_TOFIELD)
  	local tc = Duel.SelectMatchingCard(tp, s.setfilter, tp, LOCATION_DECK, 0, 1, 1, nil):GetFirst()
  	local p = tp
  	if Duel.SelectOption(tp, aux.Stringid(id, 1), aux.Stringid(id, 2)) == 1 then
  		p = 1 - p
  	end
  	if tc then
  		local fc = Duel.GetFieldCard(p, LOCATION_SZONE, 5)
  		if fc then
  			Duel.SendtoGrave(fc, REASON_RULE)
  			Duel.BreakEffect()
  		end
  		if
  			Duel.MoveToField(tc, tp, p, LOCATION_FZONE, POS_FACEUP, true)
  			and Duel.GetFieldGroupCount(tp, 0, LOCATION_FZONE) > 0
  			and Duel.IsExistingMatchingCard(s.thfilter, tp, LOCATION_DECK, 0, 1, nil)
  			and Duel.SelectYesNo(tp, aux.Stringid(id, 3))
  		then
  			Duel.BreakEffect()
  			local g = Duel.SelectMatchingCard(tp, s.thfilter, tp, LOCATION_DECK, 0, 1, 1, nil)
  			Duel.SendtoHand(g, nil, REASON_EFFECT)
  			Duel.ConfirmCards(1 - tp, g)
  		end
  	end
  	if not e:IsHasType(EFFECT_TYPE_ACTIVATE) then
  		return
  	end
  	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:SetTarget(s.splimit)
  	e1:SetReset(RESET_PHASE + PHASE_END)
  	Duel.RegisterEffect(e1, tp)
  end
  function s.splimit(e, c)
  	return not c:IsRace(RACE_PYRO) and c:IsLocation(LOCATION_DECK + LOCATION_EXTRA)
  end
  
  