name: Ancient
card_text: At the end of the Damage Step, when this card that was Tribute Summoned by Tributing an "Ancient Gear" monster battles an opponent's monster, but the opponent's monster was not destroyed by the battle: You can banish that opponent's monster. If this card was Tribute Summoned by Tributing a "Gadget" monster, it can attack all monsters your opponent controls, once each. If an "Ancient Gear" monster you control attacks, your opponent cannot activate Spell/Trap Cards and monster effects until the end of the Damage Step.
external_ids: local SETCARD_ID_0 = 0x7 --Ancient
  local SETCARD_ID_1 = 0x51 --Gadget
  
lua: local SETCARD_ID_0 = 0x7 --Ancient
  local SETCARD_ID_1 = 0x51 --Gadget
  local s, id, o = GetID()
  function s.initial_effect(c)
  	--mat check
  	local e1 = Effect.CreateEffect(c)
  	e1:SetType(EFFECT_TYPE_SINGLE)
  	e1:SetCode(EFFECT_MATERIAL_CHECK)
  	e1:SetValue(s.valcheck)
  	c:RegisterEffect(e1)
  	--summon success
  	local e2 = Effect.CreateEffect(c)
  	e2:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_CONTINUOUS)
  	e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
  	e2:SetCode(EVENT_SUMMON_SUCCESS)
  	e2:SetCondition(s.regcon)
  	e2:SetOperation(s.regop)
  	e2:SetLabelObject(e1)
  	c:RegisterEffect(e2)
  	--actlimit
  	local e3 = Effect.CreateEffect(c)
  	e3:SetType(EFFECT_TYPE_FIELD)
  	e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
  	e3:SetCode(EFFECT_CANNOT_ACTIVATE)
  	e3:SetRange(LOCATION_MZONE)
  	e3:SetTargetRange(0, 1)
  	e3:SetValue(s.aclimit)
  	e3:SetCondition(s.actcon)
  	c:RegisterEffect(e3)
  end
  function s.valcheck(e, c)
  	local g = c:GetMaterial()
  	local flag = 0
  	local tc = g:GetFirst()
  	while tc do
  		if tc:IsSetCard(SETCARD_ID_1) and tc:IsType(TYPE_MONSTER) then
  			flag = bit.bor(flag, 0x1)
  		end
  		if tc:IsSetCard(SETCARD_ID_1) and tc:IsType(TYPE_MONSTER) then
  			flag = bit.bor(flag, 0x2)
  		end
  		tc = g:GetNext()
  	end
  	e:SetLabel(flag)
  end
  function s.regcon(e, tp, eg, ep, ev, re, r, rp)
  	return e:GetHandler():IsSummonType(SUMMON_TYPE_ADVANCE)
  end
  function s.regop(e, tp, eg, ep, ev, re, r, rp)
  	local flag = e:GetLabelObject():GetLabel()
  	local c = e:GetHandler()
  	if bit.band(flag, 0x1) ~= 0 then
  		local e1 = Effect.CreateEffect(c)
  		e1:SetDescription(aux.Stringid(id, 0))
  		e1:SetCategory(CATEGORY_REMOVE)
  		e1:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_TRIGGER_O)
  		e1:SetCode(EVENT_DAMAGE_STEP_END)
  		e1:SetCondition(s.rmcon)
  		e1:SetTarget(s.rmtg)
  		e1:SetOperation(s.rmop)
  		e1:SetReset(RESET_EVENT + RESET_TURN_SET + RESET_TOHAND + RESET_TODECK + RESET_TOFIELD)
  		c:RegisterEffect(e1)
  	end
  	if bit.band(flag, 0x2) ~= 0 then
  		local e2 = Effect.CreateEffect(c)
  		e2:SetType(EFFECT_TYPE_SINGLE)
  		e2:SetCode(EFFECT_ATTACK_ALL)
  		e2:SetValue(1)
  		e2:SetReset(RESET_EVENT + RESETS_STANDARD)
  		c:RegisterEffect(e2)
  	end
  end
  function s.rmcon(e, tp, eg, ep, ev, re, r, rp)
  	local t = Duel.GetBattleMonster(1 - tp)
  	e:SetLabelObject(t)
  	return aux.dsercon(e, tp, eg, ep, ev, re, r, rp) and t and t:IsRelateToBattle()
  end
  function s.rmtg(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return e:GetLabelObject():IsAbleToRemove()
  	end
  	Duel.SetOperationInfo(0, CATEGORY_REMOVE, e:GetLabelObject(), 1, 0, 0)
  end
  function s.rmop(e, tp, eg, ep, ev, re, r, rp)
  	local bc = e:GetLabelObject()
  	if bc:IsRelateToBattle() then
  		Duel.Remove(bc, POS_FACEUP, REASON_EFFECT)
  	end
  end
  function s.aclimit(e, re, tp)
  	return re:IsHasType(EFFECT_TYPE_ACTIVATE) or re:IsActiveType(TYPE_MONSTER)
  end
  function s.actcon(e)
  	local tp = e:GetHandlerPlayer()
  	local a = Duel.GetAttacker()
  	return a and a:IsSetCard(SETCARD_ID_1) and a:IsControler(tp)
  end
  
  
source_text: Ancient
  At the end of the Damage Step, when this card that was Tribute Summoned by Tributing an "Ancient Gear" monster battles an opponent's monster, but the opponent's monster was not destroyed by the battle: You can banish that opponent's monster. If this card was Tribute Summoned by Tributing a "Gadget" monster, it can attack all monsters your opponent controls, once each. If an "Ancient Gear" monster you control attacks, your opponent cannot activate Spell/Trap Cards and monster effects until the end of the Damage Step.
target_text: -- Ancient
  local SETCARD_ID_0 = 0x7 --Ancient
  local SETCARD_ID_1 = 0x51 --Gadget
  local s, id, o = GetID()
  function s.initial_effect(c)
  	--mat check
  	local e1 = Effect.CreateEffect(c)
  	e1:SetType(EFFECT_TYPE_SINGLE)
  	e1:SetCode(EFFECT_MATERIAL_CHECK)
  	e1:SetValue(s.valcheck)
  	c:RegisterEffect(e1)
  	--summon success
  	local e2 = Effect.CreateEffect(c)
  	e2:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_CONTINUOUS)
  	e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
  	e2:SetCode(EVENT_SUMMON_SUCCESS)
  	e2:SetCondition(s.regcon)
  	e2:SetOperation(s.regop)
  	e2:SetLabelObject(e1)
  	c:RegisterEffect(e2)
  	--actlimit
  	local e3 = Effect.CreateEffect(c)
  	e3:SetType(EFFECT_TYPE_FIELD)
  	e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
  	e3:SetCode(EFFECT_CANNOT_ACTIVATE)
  	e3:SetRange(LOCATION_MZONE)
  	e3:SetTargetRange(0, 1)
  	e3:SetValue(s.aclimit)
  	e3:SetCondition(s.actcon)
  	c:RegisterEffect(e3)
  end
  function s.valcheck(e, c)
  	local g = c:GetMaterial()
  	local flag = 0
  	local tc = g:GetFirst()
  	while tc do
  		if tc:IsSetCard(SETCARD_ID_1) and tc:IsType(TYPE_MONSTER) then
  			flag = bit.bor(flag, 0x1)
  		end
  		if tc:IsSetCard(SETCARD_ID_1) and tc:IsType(TYPE_MONSTER) then
  			flag = bit.bor(flag, 0x2)
  		end
  		tc = g:GetNext()
  	end
  	e:SetLabel(flag)
  end
  function s.regcon(e, tp, eg, ep, ev, re, r, rp)
  	return e:GetHandler():IsSummonType(SUMMON_TYPE_ADVANCE)
  end
  function s.regop(e, tp, eg, ep, ev, re, r, rp)
  	local flag = e:GetLabelObject():GetLabel()
  	local c = e:GetHandler()
  	if bit.band(flag, 0x1) ~= 0 then
  		local e1 = Effect.CreateEffect(c)
  		e1:SetDescription(aux.Stringid(id, 0))
  		e1:SetCategory(CATEGORY_REMOVE)
  		e1:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_TRIGGER_O)
  		e1:SetCode(EVENT_DAMAGE_STEP_END)
  		e1:SetCondition(s.rmcon)
  		e1:SetTarget(s.rmtg)
  		e1:SetOperation(s.rmop)
  		e1:SetReset(RESET_EVENT + RESET_TURN_SET + RESET_TOHAND + RESET_TODECK + RESET_TOFIELD)
  		c:RegisterEffect(e1)
  	end
  	if bit.band(flag, 0x2) ~= 0 then
  		local e2 = Effect.CreateEffect(c)
  		e2:SetType(EFFECT_TYPE_SINGLE)
  		e2:SetCode(EFFECT_ATTACK_ALL)
  		e2:SetValue(1)
  		e2:SetReset(RESET_EVENT + RESETS_STANDARD)
  		c:RegisterEffect(e2)
  	end
  end
  function s.rmcon(e, tp, eg, ep, ev, re, r, rp)
  	local t = Duel.GetBattleMonster(1 - tp)
  	e:SetLabelObject(t)
  	return aux.dsercon(e, tp, eg, ep, ev, re, r, rp) and t and t:IsRelateToBattle()
  end
  function s.rmtg(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return e:GetLabelObject():IsAbleToRemove()
  	end
  	Duel.SetOperationInfo(0, CATEGORY_REMOVE, e:GetLabelObject(), 1, 0, 0)
  end
  function s.rmop(e, tp, eg, ep, ev, re, r, rp)
  	local bc = e:GetLabelObject()
  	if bc:IsRelateToBattle() then
  		Duel.Remove(bc, POS_FACEUP, REASON_EFFECT)
  	end
  end
  function s.aclimit(e, re, tp)
  	return re:IsHasType(EFFECT_TYPE_ACTIVATE) or re:IsActiveType(TYPE_MONSTER)
  end
  function s.actcon(e)
  	local tp = e:GetHandlerPlayer()
  	local a = Duel.GetAttacker()
  	return a and a:IsSetCard(SETCARD_ID_1) and a:IsControler(tp)
  end
  
  