name: DoomZ
card_text: You can target 1 "DoomZ" card you control; destroy it, and if you do, Special Summon this card from your hand, then you can equip 1 Equip Spell from your Deck to it. While this card is equipped with an Equip Card (Quick Effect): You can Special Summon 1 WIND Machine Xyz Monster from your Extra Deck with a Rank equal to this card's Level (this is treated as an Xyz Summon), and if you do, attach this card, also all cards equipped to it, to that monster. You can only use each effect of "DoomZ Zero - Drastia" once per turn.
external_ids: local SETCARD_ID_0 = 0x1d2 --DoomZ
  
lua: local SETCARD_ID_0 = 0x1d2 --DoomZ
  local s, id, o = GetID()
  function s.initial_effect(c)
  	--spsummon
  	local e1 = Effect.CreateEffect(c)
  	e1:SetDescription(aux.Stringid(id, 0))
  	e1:SetCategory(CATEGORY_SPECIAL_SUMMON + CATEGORY_DESTROY + CATEGORY_EQUIP)
  	e1:SetProperty(EFFECT_FLAG_CARD_TARGET)
  	e1:SetType(EFFECT_TYPE_IGNITION)
  	e1:SetRange(LOCATION_HAND)
  	e1:SetCountLimit(1, id)
  	e1:SetTarget(s.sptg)
  	e1:SetOperation(s.spop)
  	c:RegisterEffect(e1)
  	--spsummon
  	local e2 = Effect.CreateEffect(c)
  	e2:SetDescription(aux.Stringid(id, 1))
  	e2:SetCategory(CATEGORY_SPECIAL_SUMMON)
  	e2:SetType(EFFECT_TYPE_QUICK_O)
  	e2:SetCode(EVENT_FREE_CHAIN)
  	e2:SetRange(LOCATION_MZONE)
  	e2:SetHintTiming(0, TIMINGS_CHECK_MONSTER + TIMING_END_PHASE)
  	e2:SetCountLimit(1, id + o)
  	e2:SetCondition(s.xyzcon)
  	e2:SetTarget(s.xyztg)
  	e2:SetOperation(s.xyzop)
  	c:RegisterEffect(e2)
  end
  function s.desfilter(c, tp)
  	return c:IsFaceup() and c:IsSetCard(SETCARD_ID_0) and Duel.GetMZoneCount(tp, c) > 0
  end
  function s.sptg(e, tp, eg, ep, ev, re, r, rp, chk, chkc)
  	local c = e:GetHandler()
  	if chkc then
  		return chkc:IsLocation(LOCATION_ONFIELD) and chkc:IsControler(tp) and s.desfilter(chkc, tp)
  	end
  	if chk == 0 then
  		return c:IsCanBeSpecialSummoned(e, 0, tp, false, false) and Duel.IsExistingTarget(s.desfilter, tp, LOCATION_ONFIELD, 0, 1, nil, tp)
  	end
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_DESTROY)
  	local g = Duel.SelectTarget(tp, s.desfilter, tp, LOCATION_ONFIELD, 0, 1, 1, nil, tp)
  	Duel.SetOperationInfo(0, CATEGORY_DESTROY, g, 1, 0, 0)
  	Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, c, 1, 0, 0)
  end
  function s.eqfilter(c, ec, tp)
  	return c:IsType(TYPE_EQUIP) and c:CheckEquipTarget(ec) and c:CheckUniqueOnField(tp, LOCATION_SZONE) and not c:IsForbidden()
  end
  function s.spop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	local tc = Duel.GetFirstTarget()
  	if tc:IsRelateToChain() and Duel.Destroy(tc, REASON_EFFECT) ~= 0 then
  		if
  			c:IsRelateToChain()
  			and Duel.SpecialSummon(c, 0, tp, tp, false, false, POS_FACEUP) ~= 0
  			and Duel.IsExistingMatchingCard(s.eqfilter, tp, LOCATION_DECK, 0, 1, nil, c, tp)
  			and Duel.GetLocationCount(tp, LOCATION_SZONE) > 0
  			and Duel.SelectYesNo(tp, aux.Stringid(id, 2))
  		then
  			Duel.BreakEffect()
  			Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_EQUIP)
  			local g = Duel.SelectMatchingCard(tp, s.eqfilter, tp, LOCATION_DECK, 0, 1, 1, nil, c, tp)
  			local ec = g:GetFirst()
  			if ec then
  				Duel.Equip(tp, ec, c)
  			end
  		end
  	end
  end
  function s.xyzcon(e, tp, eg, ep, ev, re, r, rp)
  	local g = e:GetHandler():GetEquipGroup()
  	return g:GetCount() > 0 and not g:IsExists(aux.NOT(Card.IsCanOverlay), 1, nil)
  end
  function s.spfilter(c, e, tp, lv)
  	return c:IsRace(RACE_MACHINE)
  		and c:IsAttribute(ATTRIBUTE_WIND)
  		and c:IsRank(lv)
  		and c:IsAllTypes(TYPE_XYZ + TYPE_MONSTER)
  		and c:IsCanBeSpecialSummoned(e, SUMMON_TYPE_XYZ, tp, false, false)
  		and Duel.GetLocationCountFromEx(tp, tp, nil, c) > 0
  end
  function s.xyztg(e, tp, eg, ep, ev, re, r, rp, chk)
  	local c = e:GetHandler()
  	if chk == 0 then
  		return c:IsCanOverlay() and aux.MustMaterialCheck(nil, tp, EFFECT_MUST_BE_XMATERIAL) and Duel.IsExistingMatchingCard(s.spfilter, tp, LOCATION_EXTRA, 0, 1, nil, e, tp, c:GetLevel())
  	end
  	Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, nil, 1, tp, LOCATION_EXTRA)
  	Duel.Hint(HINT_OPSELECTED, 1 - tp, e:GetDescription())
  end
  function s.xyzop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	if not c:IsRelateToChain() or c:IsFacedown() then
  		return
  	end
  	if not aux.MustMaterialCheck(nil, tp, EFFECT_MUST_BE_XMATERIAL) then
  		return
  	end
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_SPSUMMON)
  	local sg = Duel.SelectMatchingCard(tp, s.spfilter, tp, LOCATION_EXTRA, 0, 1, 1, nil, e, tp, c:GetLevel())
  	local sc = sg:GetFirst()
  	if sc and Duel.SpecialSummon(sc, SUMMON_TYPE_XYZ, tp, tp, false, false, POS_FACEUP) ~= 0 then
  		sc:CompleteProcedure()
  		local g = c:GetEquipGroup()
  		g:AddCard(c)
  		Duel.Overlay(sc, g)
  	end
  end
  
  
source_text: DoomZ
  You can target 1 "DoomZ" card you control; destroy it, and if you do, Special Summon this card from your hand, then you can equip 1 Equip Spell from your Deck to it. While this card is equipped with an Equip Card (Quick Effect): You can Special Summon 1 WIND Machine Xyz Monster from your Extra Deck with a Rank equal to this card's Level (this is treated as an Xyz Summon), and if you do, attach this card, also all cards equipped to it, to that monster. You can only use each effect of "DoomZ Zero - Drastia" once per turn.
target_text: -- DoomZ
  local SETCARD_ID_0 = 0x1d2 --DoomZ
  local s, id, o = GetID()
  function s.initial_effect(c)
  	--spsummon
  	local e1 = Effect.CreateEffect(c)
  	e1:SetDescription(aux.Stringid(id, 0))
  	e1:SetCategory(CATEGORY_SPECIAL_SUMMON + CATEGORY_DESTROY + CATEGORY_EQUIP)
  	e1:SetProperty(EFFECT_FLAG_CARD_TARGET)
  	e1:SetType(EFFECT_TYPE_IGNITION)
  	e1:SetRange(LOCATION_HAND)
  	e1:SetCountLimit(1, id)
  	e1:SetTarget(s.sptg)
  	e1:SetOperation(s.spop)
  	c:RegisterEffect(e1)
  	--spsummon
  	local e2 = Effect.CreateEffect(c)
  	e2:SetDescription(aux.Stringid(id, 1))
  	e2:SetCategory(CATEGORY_SPECIAL_SUMMON)
  	e2:SetType(EFFECT_TYPE_QUICK_O)
  	e2:SetCode(EVENT_FREE_CHAIN)
  	e2:SetRange(LOCATION_MZONE)
  	e2:SetHintTiming(0, TIMINGS_CHECK_MONSTER + TIMING_END_PHASE)
  	e2:SetCountLimit(1, id + o)
  	e2:SetCondition(s.xyzcon)
  	e2:SetTarget(s.xyztg)
  	e2:SetOperation(s.xyzop)
  	c:RegisterEffect(e2)
  end
  function s.desfilter(c, tp)
  	return c:IsFaceup() and c:IsSetCard(SETCARD_ID_0) and Duel.GetMZoneCount(tp, c) > 0
  end
  function s.sptg(e, tp, eg, ep, ev, re, r, rp, chk, chkc)
  	local c = e:GetHandler()
  	if chkc then
  		return chkc:IsLocation(LOCATION_ONFIELD) and chkc:IsControler(tp) and s.desfilter(chkc, tp)
  	end
  	if chk == 0 then
  		return c:IsCanBeSpecialSummoned(e, 0, tp, false, false) and Duel.IsExistingTarget(s.desfilter, tp, LOCATION_ONFIELD, 0, 1, nil, tp)
  	end
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_DESTROY)
  	local g = Duel.SelectTarget(tp, s.desfilter, tp, LOCATION_ONFIELD, 0, 1, 1, nil, tp)
  	Duel.SetOperationInfo(0, CATEGORY_DESTROY, g, 1, 0, 0)
  	Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, c, 1, 0, 0)
  end
  function s.eqfilter(c, ec, tp)
  	return c:IsType(TYPE_EQUIP) and c:CheckEquipTarget(ec) and c:CheckUniqueOnField(tp, LOCATION_SZONE) and not c:IsForbidden()
  end
  function s.spop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	local tc = Duel.GetFirstTarget()
  	if tc:IsRelateToChain() and Duel.Destroy(tc, REASON_EFFECT) ~= 0 then
  		if
  			c:IsRelateToChain()
  			and Duel.SpecialSummon(c, 0, tp, tp, false, false, POS_FACEUP) ~= 0
  			and Duel.IsExistingMatchingCard(s.eqfilter, tp, LOCATION_DECK, 0, 1, nil, c, tp)
  			and Duel.GetLocationCount(tp, LOCATION_SZONE) > 0
  			and Duel.SelectYesNo(tp, aux.Stringid(id, 2))
  		then
  			Duel.BreakEffect()
  			Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_EQUIP)
  			local g = Duel.SelectMatchingCard(tp, s.eqfilter, tp, LOCATION_DECK, 0, 1, 1, nil, c, tp)
  			local ec = g:GetFirst()
  			if ec then
  				Duel.Equip(tp, ec, c)
  			end
  		end
  	end
  end
  function s.xyzcon(e, tp, eg, ep, ev, re, r, rp)
  	local g = e:GetHandler():GetEquipGroup()
  	return g:GetCount() > 0 and not g:IsExists(aux.NOT(Card.IsCanOverlay), 1, nil)
  end
  function s.spfilter(c, e, tp, lv)
  	return c:IsRace(RACE_MACHINE)
  		and c:IsAttribute(ATTRIBUTE_WIND)
  		and c:IsRank(lv)
  		and c:IsAllTypes(TYPE_XYZ + TYPE_MONSTER)
  		and c:IsCanBeSpecialSummoned(e, SUMMON_TYPE_XYZ, tp, false, false)
  		and Duel.GetLocationCountFromEx(tp, tp, nil, c) > 0
  end
  function s.xyztg(e, tp, eg, ep, ev, re, r, rp, chk)
  	local c = e:GetHandler()
  	if chk == 0 then
  		return c:IsCanOverlay() and aux.MustMaterialCheck(nil, tp, EFFECT_MUST_BE_XMATERIAL) and Duel.IsExistingMatchingCard(s.spfilter, tp, LOCATION_EXTRA, 0, 1, nil, e, tp, c:GetLevel())
  	end
  	Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, nil, 1, tp, LOCATION_EXTRA)
  	Duel.Hint(HINT_OPSELECTED, 1 - tp, e:GetDescription())
  end
  function s.xyzop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	if not c:IsRelateToChain() or c:IsFacedown() then
  		return
  	end
  	if not aux.MustMaterialCheck(nil, tp, EFFECT_MUST_BE_XMATERIAL) then
  		return
  	end
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_SPSUMMON)
  	local sg = Duel.SelectMatchingCard(tp, s.spfilter, tp, LOCATION_EXTRA, 0, 1, 1, nil, e, tp, c:GetLevel())
  	local sc = sg:GetFirst()
  	if sc and Duel.SpecialSummon(sc, SUMMON_TYPE_XYZ, tp, tp, false, false, POS_FACEUP) ~= 0 then
  		sc:CompleteProcedure()
  		local g = c:GetEquipGroup()
  		g:AddCard(c)
  		Duel.Overlay(sc, g)
  	end
  end
  
  