name: Ancient
card_text: Cannot be Special Summoned. If you control no monsters, or all monsters you control are EARTH Machine monsters, you can Normal Summon this card without Tributing. When your opponent activates a Spell/Trap Card or effect (Quick Effect): You can send to the GY, 1 Machine monster from your hand or face-up field, or 1 "Ancient Gear Golem" from your Deck; negate that effect. You can only use this effect of "Ancient Gear Dragon" once per turn.
external_ids: local CARD_ID_0 = 83104731 --Ancient Gear Golem
  
lua: local CARD_ID_0 = 83104731 --Ancient Gear Golem
  local s, id, o = GetID()
  function s.initial_effect(c)
  	aux.AddCodeList(c, CARD_ID_0)
  	--
  	local e0 = Effect.CreateEffect(c)
  	e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE + EFFECT_FLAG_UNCOPYABLE)
  	e0:SetType(EFFECT_TYPE_SINGLE)
  	e0:SetCode(EFFECT_SPSUMMON_CONDITION)
  	e0:SetValue(aux.FALSE)
  	c:RegisterEffect(e0)
  	--
  	local e1 = Effect.CreateEffect(c)
  	e1:SetDescription(aux.Stringid(id, 0))
  	e1:SetType(EFFECT_TYPE_SINGLE)
  	e1:SetCode(EFFECT_SUMMON_PROC)
  	e1:SetCondition(s.ntcon)
  	c:RegisterEffect(e1)
  	--
  	local e2 = Effect.CreateEffect(c)
  	e2:SetDescription(aux.Stringid(id, 1))
  	e2:SetCategory(CATEGORY_DISABLE)
  	e2:SetType(EFFECT_TYPE_QUICK_O)
  	e2:SetCode(EVENT_CHAINING)
  	e2:SetRange(LOCATION_MZONE)
  	e2:SetCountLimit(1, id + o)
  	e2:SetCondition(s.discon)
  	e2:SetCost(s.discost)
  	e2:SetTarget(s.distg)
  	e2:SetOperation(s.disop)
  	c:RegisterEffect(e2)
  end
  function s.cfilter(c)
  	return c:IsFaceup() and c:IsRace(RACE_MACHINE) and c:IsAttribute(ATTRIBUTE_EARTH)
  end
  function s.ntcon(e, c, minc)
  	if c == nil then
  		return true
  	end
  	local tp = c:GetControler()
  	return minc == 0
  		and c:IsLevelAbove(5)
  		and Duel.GetLocationCount(tp, LOCATION_MZONE) > 0
  		and (
  			Duel.IsExistingMatchingCard(s.cfilter, tp, LOCATION_MZONE, 0, 1, nil) and not Duel.IsExistingMatchingCard(aux.NOT(s.cfilter), tp, LOCATION_MZONE, 0, 1, nil)
  			or not Duel.IsExistingMatchingCard(nil, tp, LOCATION_MZONE, 0, 1, nil)
  		)
  end
  function s.discon(e, tp, eg, ep, ev, re, r, rp)
  	if e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) then
  		return false
  	end
  	return ep == 1 - tp and re:IsActiveType(TYPE_SPELL + TYPE_TRAP) and Duel.IsChainNegatable(ev)
  end
  function s.cgfilter(c)
  	return (c:IsRace(RACE_MACHINE) and c:IsLocation(LOCATION_HAND + LOCATION_MZONE) or c:IsCode(CARD_ID_0) and c:IsLocation(LOCATION_DECK)) and c:IsAbleToGraveAsCost() and c:IsFaceupEx()
  end
  function s.discost(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return Duel.IsExistingMatchingCard(s.cgfilter, tp, LOCATION_HAND + LOCATION_MZONE + LOCATION_DECK, 0, 1, nil)
  	end
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_TOGRAVE)
  	local g = Duel.SelectMatchingCard(tp, s.cgfilter, tp, LOCATION_HAND + LOCATION_MZONE + LOCATION_DECK, 0, 1, 1, nil)
  	Duel.SendtoGrave(g, REASON_COST)
  end
  function s.distg(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return true
  	end
  	Duel.SetOperationInfo(0, CATEGORY_DISABLE, eg, 1, 0, 0)
  end
  function s.disop(e, tp, eg, ep, ev, re, r, rp)
  	Duel.NegateEffect(ev)
  end
  
  
source_text: Ancient
  Cannot be Special Summoned. If you control no monsters, or all monsters you control are EARTH Machine monsters, you can Normal Summon this card without Tributing. When your opponent activates a Spell/Trap Card or effect (Quick Effect): You can send to the GY, 1 Machine monster from your hand or face-up field, or 1 "Ancient Gear Golem" from your Deck; negate that effect. You can only use this effect of "Ancient Gear Dragon" once per turn.
target_text: -- Ancient
  local CARD_ID_0 = 83104731 --Ancient Gear Golem
  local s, id, o = GetID()
  function s.initial_effect(c)
  	aux.AddCodeList(c, CARD_ID_0)
  	--
  	local e0 = Effect.CreateEffect(c)
  	e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE + EFFECT_FLAG_UNCOPYABLE)
  	e0:SetType(EFFECT_TYPE_SINGLE)
  	e0:SetCode(EFFECT_SPSUMMON_CONDITION)
  	e0:SetValue(aux.FALSE)
  	c:RegisterEffect(e0)
  	--
  	local e1 = Effect.CreateEffect(c)
  	e1:SetDescription(aux.Stringid(id, 0))
  	e1:SetType(EFFECT_TYPE_SINGLE)
  	e1:SetCode(EFFECT_SUMMON_PROC)
  	e1:SetCondition(s.ntcon)
  	c:RegisterEffect(e1)
  	--
  	local e2 = Effect.CreateEffect(c)
  	e2:SetDescription(aux.Stringid(id, 1))
  	e2:SetCategory(CATEGORY_DISABLE)
  	e2:SetType(EFFECT_TYPE_QUICK_O)
  	e2:SetCode(EVENT_CHAINING)
  	e2:SetRange(LOCATION_MZONE)
  	e2:SetCountLimit(1, id + o)
  	e2:SetCondition(s.discon)
  	e2:SetCost(s.discost)
  	e2:SetTarget(s.distg)
  	e2:SetOperation(s.disop)
  	c:RegisterEffect(e2)
  end
  function s.cfilter(c)
  	return c:IsFaceup() and c:IsRace(RACE_MACHINE) and c:IsAttribute(ATTRIBUTE_EARTH)
  end
  function s.ntcon(e, c, minc)
  	if c == nil then
  		return true
  	end
  	local tp = c:GetControler()
  	return minc == 0
  		and c:IsLevelAbove(5)
  		and Duel.GetLocationCount(tp, LOCATION_MZONE) > 0
  		and (
  			Duel.IsExistingMatchingCard(s.cfilter, tp, LOCATION_MZONE, 0, 1, nil) and not Duel.IsExistingMatchingCard(aux.NOT(s.cfilter), tp, LOCATION_MZONE, 0, 1, nil)
  			or not Duel.IsExistingMatchingCard(nil, tp, LOCATION_MZONE, 0, 1, nil)
  		)
  end
  function s.discon(e, tp, eg, ep, ev, re, r, rp)
  	if e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) then
  		return false
  	end
  	return ep == 1 - tp and re:IsActiveType(TYPE_SPELL + TYPE_TRAP) and Duel.IsChainNegatable(ev)
  end
  function s.cgfilter(c)
  	return (c:IsRace(RACE_MACHINE) and c:IsLocation(LOCATION_HAND + LOCATION_MZONE) or c:IsCode(CARD_ID_0) and c:IsLocation(LOCATION_DECK)) and c:IsAbleToGraveAsCost() and c:IsFaceupEx()
  end
  function s.discost(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return Duel.IsExistingMatchingCard(s.cgfilter, tp, LOCATION_HAND + LOCATION_MZONE + LOCATION_DECK, 0, 1, nil)
  	end
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_TOGRAVE)
  	local g = Duel.SelectMatchingCard(tp, s.cgfilter, tp, LOCATION_HAND + LOCATION_MZONE + LOCATION_DECK, 0, 1, 1, nil)
  	Duel.SendtoGrave(g, REASON_COST)
  end
  function s.distg(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return true
  	end
  	Duel.SetOperationInfo(0, CATEGORY_DISABLE, eg, 1, 0, 0)
  end
  function s.disop(e, tp, eg, ep, ev, re, r, rp)
  	Duel.NegateEffect(ev)
  end
  
  