name: Golem
card_text: The activation of your "Millennium Ankh" cannot be negated. You can only use each of the following effects of "Golem that Guards the Millennium Treasures" once per turn. If this card is in your hand: You can place it in your Spell & Trap Zone as a face-up Continuous Spell. While this card is a Continuous Spell: You can either pay 2000 LP, or reveal 1 "Millennium Ankh" in your hand; Special Summon this card, then you can add 1 "Wedju Temple" from your Deck to your hand.
external_ids: local CARD_ID_0 = 63017368 --Wedju Temple
  local CARD_ID_1 = 37613663 --Millennium Ankh
  local SETCARD_ID_0 = 0x1ae --Millennium
  
lua: local CARD_ID_0 = 63017368 --Wedju Temple
  local CARD_ID_1 = 37613663 --Millennium Ankh
  local SETCARD_ID_0 = 0x1ae --Millennium
  local s, id, o = GetID()
  function s.initial_effect(c)
  	aux.AddCodeList(c, CARD_ID_1, CARD_ID_0)
  	--
  	local e1 = Effect.CreateEffect(c)
  	e1:SetDescription(aux.Stringid(id, 0))
  	e1:SetType(EFFECT_TYPE_IGNITION)
  	e1:SetRange(LOCATION_HAND)
  	e1:SetCountLimit(1, id)
  	e1:SetTarget(s.target)
  	e1:SetOperation(s.operation)
  	c:RegisterEffect(e1)
  	--
  	local e2 = Effect.CreateEffect(c)
  	e2:SetDescription(aux.Stringid(id, 1))
  	e2:SetCategory(CATEGORY_SPECIAL_SUMMON + CATEGORY_SEARCH + CATEGORY_TOHAND)
  	e2:SetType(EFFECT_TYPE_IGNITION)
  	e2:SetRange(LOCATION_SZONE)
  	e2:SetCountLimit(1, id + o)
  	e2:SetCondition(s.spcon)
  	e2:SetCost(s.spcost)
  	e2:SetTarget(s.sptg)
  	e2:SetOperation(s.spop)
  	c:RegisterEffect(e2)
  	--
  	local e3 = Effect.CreateEffect(c)
  	e3:SetType(EFFECT_TYPE_FIELD)
  	e3:SetCode(EFFECT_CANNOT_INACTIVATE)
  	e3:SetRange(LOCATION_MZONE)
  	e3:SetValue(s.efilter)
  	c:RegisterEffect(e3)
  end
  function s.target(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return Duel.GetLocationCount(tp, LOCATION_SZONE) > 0
  	end
  end
  function s.operation(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	if not c:IsRelateToEffect(e) then
  		return
  	end
  	if Duel.MoveToField(c, tp, tp, LOCATION_SZONE, POS_FACEUP, true) then
  		local e1 = Effect.CreateEffect(c)
  		e1:SetCode(EFFECT_CHANGE_TYPE)
  		e1:SetType(EFFECT_TYPE_SINGLE)
  		e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
  		e1:SetReset(RESET_EVENT + RESETS_STANDARD - RESET_TURN_SET)
  		e1:SetValue(TYPE_SPELL + TYPE_CONTINUOUS)
  		c:RegisterEffect(e1)
  	end
  end
  function s.spcon(e, tp, eg, ep, ev, re, r, rp)
  	return e:GetHandler():GetType() == TYPE_SPELL + TYPE_CONTINUOUS
  end
  function s.cfilter1(c, tp)
  	return c:IsCode(CARD_ID_1) and not c:IsPublic()
  end
  function s.spcost(e, tp, eg, ep, ev, re, r, rp, chk)
  	local b1 = Duel.IsExistingMatchingCard(s.cfilter1, tp, LOCATION_HAND, 0, 1, nil)
  	local b2 = Duel.CheckLPCost(tp, 2000)
  	if chk == 0 then
  		return b1 or b2
  	end
  	if b1 and b2 and Duel.SelectYesNo(tp, aux.Stringid(id, 2)) then
  		Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_CONFIRM)
  		local g = Duel.SelectMatchingCard(tp, s.cfilter1, tp, LOCATION_HAND, 0, 1, 1, nil)
  		Duel.ConfirmCards(1 - tp, g)
  		Duel.ShuffleHand(tp)
  	elseif b2 then
  		Duel.PayLPCost(tp, 2000)
  	else
  		Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_CONFIRM)
  		local g = Duel.SelectMatchingCard(tp, s.cfilter1, tp, LOCATION_HAND, 0, 1, 1, nil)
  		Duel.ConfirmCards(1 - tp, g)
  		Duel.ShuffleHand(tp)
  	end
  end
  function s.sptg(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return Duel.GetLocationCount(tp, LOCATION_MZONE) > 0 and Duel.IsPlayerCanSpecialSummonMonster(tp, id, SETCARD_ID_0, TYPE_MONSTER + TYPE_EFFECT, 2000, 2200, 6, RACE_ROCK, ATTRIBUTE_EARTH)
  	end
  	Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, e:GetHandler(), 1, 0, 0)
  end
  function s.filter(c)
  	return c:IsCode(CARD_ID_0) and c:IsAbleToHand()
  end
  function s.spop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	if
  		c:IsRelateToEffect(e)
  		and Duel.SpecialSummon(c, 0, tp, tp, false, false, POS_FACEUP) ~= 0
  		and Duel.IsExistingMatchingCard(s.filter, tp, LOCATION_DECK, 0, 1, nil)
  		and Duel.SelectYesNo(tp, aux.Stringid(id, 3))
  	then
  		Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_ATOHAND)
  		local g = Duel.SelectMatchingCard(tp, s.filter, tp, LOCATION_DECK, 0, 1, 1, nil)
  		if g:GetCount() > 0 then
  			Duel.BreakEffect()
  			Duel.SendtoHand(g, nil, REASON_EFFECT)
  			Duel.ConfirmCards(1 - tp, g)
  		end
  	end
  end
  function s.efilter(e, ct)
  	local p = e:GetHandlerPlayer()
  	local te, tp = Duel.GetChainInfo(ct, CHAININFO_TRIGGERING_EFFECT, CHAININFO_TRIGGERING_PLAYER)
  	return p == tp and te:IsHasType(EFFECT_TYPE_ACTIVATE) and te:GetHandler():IsCode(CARD_ID_1)
  end
  
  
source_text: Golem
  The activation of your "Millennium Ankh" cannot be negated. You can only use each of the following effects of "Golem that Guards the Millennium Treasures" once per turn. If this card is in your hand: You can place it in your Spell & Trap Zone as a face-up Continuous Spell. While this card is a Continuous Spell: You can either pay 2000 LP, or reveal 1 "Millennium Ankh" in your hand; Special Summon this card, then you can add 1 "Wedju Temple" from your Deck to your hand.
target_text: -- Golem
  local CARD_ID_0 = 63017368 --Wedju Temple
  local CARD_ID_1 = 37613663 --Millennium Ankh
  local SETCARD_ID_0 = 0x1ae --Millennium
  local s, id, o = GetID()
  function s.initial_effect(c)
  	aux.AddCodeList(c, CARD_ID_1, CARD_ID_0)
  	--
  	local e1 = Effect.CreateEffect(c)
  	e1:SetDescription(aux.Stringid(id, 0))
  	e1:SetType(EFFECT_TYPE_IGNITION)
  	e1:SetRange(LOCATION_HAND)
  	e1:SetCountLimit(1, id)
  	e1:SetTarget(s.target)
  	e1:SetOperation(s.operation)
  	c:RegisterEffect(e1)
  	--
  	local e2 = Effect.CreateEffect(c)
  	e2:SetDescription(aux.Stringid(id, 1))
  	e2:SetCategory(CATEGORY_SPECIAL_SUMMON + CATEGORY_SEARCH + CATEGORY_TOHAND)
  	e2:SetType(EFFECT_TYPE_IGNITION)
  	e2:SetRange(LOCATION_SZONE)
  	e2:SetCountLimit(1, id + o)
  	e2:SetCondition(s.spcon)
  	e2:SetCost(s.spcost)
  	e2:SetTarget(s.sptg)
  	e2:SetOperation(s.spop)
  	c:RegisterEffect(e2)
  	--
  	local e3 = Effect.CreateEffect(c)
  	e3:SetType(EFFECT_TYPE_FIELD)
  	e3:SetCode(EFFECT_CANNOT_INACTIVATE)
  	e3:SetRange(LOCATION_MZONE)
  	e3:SetValue(s.efilter)
  	c:RegisterEffect(e3)
  end
  function s.target(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return Duel.GetLocationCount(tp, LOCATION_SZONE) > 0
  	end
  end
  function s.operation(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	if not c:IsRelateToEffect(e) then
  		return
  	end
  	if Duel.MoveToField(c, tp, tp, LOCATION_SZONE, POS_FACEUP, true) then
  		local e1 = Effect.CreateEffect(c)
  		e1:SetCode(EFFECT_CHANGE_TYPE)
  		e1:SetType(EFFECT_TYPE_SINGLE)
  		e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
  		e1:SetReset(RESET_EVENT + RESETS_STANDARD - RESET_TURN_SET)
  		e1:SetValue(TYPE_SPELL + TYPE_CONTINUOUS)
  		c:RegisterEffect(e1)
  	end
  end
  function s.spcon(e, tp, eg, ep, ev, re, r, rp)
  	return e:GetHandler():GetType() == TYPE_SPELL + TYPE_CONTINUOUS
  end
  function s.cfilter1(c, tp)
  	return c:IsCode(CARD_ID_1) and not c:IsPublic()
  end
  function s.spcost(e, tp, eg, ep, ev, re, r, rp, chk)
  	local b1 = Duel.IsExistingMatchingCard(s.cfilter1, tp, LOCATION_HAND, 0, 1, nil)
  	local b2 = Duel.CheckLPCost(tp, 2000)
  	if chk == 0 then
  		return b1 or b2
  	end
  	if b1 and b2 and Duel.SelectYesNo(tp, aux.Stringid(id, 2)) then
  		Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_CONFIRM)
  		local g = Duel.SelectMatchingCard(tp, s.cfilter1, tp, LOCATION_HAND, 0, 1, 1, nil)
  		Duel.ConfirmCards(1 - tp, g)
  		Duel.ShuffleHand(tp)
  	elseif b2 then
  		Duel.PayLPCost(tp, 2000)
  	else
  		Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_CONFIRM)
  		local g = Duel.SelectMatchingCard(tp, s.cfilter1, tp, LOCATION_HAND, 0, 1, 1, nil)
  		Duel.ConfirmCards(1 - tp, g)
  		Duel.ShuffleHand(tp)
  	end
  end
  function s.sptg(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return Duel.GetLocationCount(tp, LOCATION_MZONE) > 0 and Duel.IsPlayerCanSpecialSummonMonster(tp, id, SETCARD_ID_0, TYPE_MONSTER + TYPE_EFFECT, 2000, 2200, 6, RACE_ROCK, ATTRIBUTE_EARTH)
  	end
  	Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, e:GetHandler(), 1, 0, 0)
  end
  function s.filter(c)
  	return c:IsCode(CARD_ID_0) and c:IsAbleToHand()
  end
  function s.spop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	if
  		c:IsRelateToEffect(e)
  		and Duel.SpecialSummon(c, 0, tp, tp, false, false, POS_FACEUP) ~= 0
  		and Duel.IsExistingMatchingCard(s.filter, tp, LOCATION_DECK, 0, 1, nil)
  		and Duel.SelectYesNo(tp, aux.Stringid(id, 3))
  	then
  		Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_ATOHAND)
  		local g = Duel.SelectMatchingCard(tp, s.filter, tp, LOCATION_DECK, 0, 1, 1, nil)
  		if g:GetCount() > 0 then
  			Duel.BreakEffect()
  			Duel.SendtoHand(g, nil, REASON_EFFECT)
  			Duel.ConfirmCards(1 - tp, g)
  		end
  	end
  end
  function s.efilter(e, ct)
  	local p = e:GetHandlerPlayer()
  	local te, tp = Duel.GetChainInfo(ct, CHAININFO_TRIGGERING_EFFECT, CHAININFO_TRIGGERING_PLAYER)
  	return p == tp and te:IsHasType(EFFECT_TYPE_ACTIVATE) and te:GetHandler():IsCode(CARD_ID_1)
  end
  
  