name: DoomZ
card_text: 3 Level 8 monsters
  The first time this card would be destroyed by battle or card effect each turn, it is not destroyed. You can only use each of the following effects of "DoomZ XII End - Drastrius" once per turn. If this card is Xyz Summoned: You can equip 1 other face-up monster on the field to this card as an Equip Spell. When your opponent activates a monster effect on the field or GY (Quick Effect): You can detach 1 material from this card; negate that effect, then you can equip 1 face-up monster your opponent controls to this card as an Equip Spell.
lua: local s, id, o = GetID()
  function s.initial_effect(c)
  	--xyz summon
  	aux.AddXyzProcedure(c, nil, 8, 3)
  	c:EnableReviveLimit()
  	--equip
  	local e1 = Effect.CreateEffect(c)
  	e1:SetDescription(aux.Stringid(id, 0))
  	e1:SetCategory(CATEGORY_EQUIP)
  	e1:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_TRIGGER_O)
  	e1:SetCode(EVENT_SPSUMMON_SUCCESS)
  	e1:SetProperty(EFFECT_FLAG_DELAY)
  	e1:SetCountLimit(1, id)
  	e1:SetCondition(s.eqcon)
  	e1:SetTarget(s.eqtg)
  	e1:SetOperation(s.eqop)
  	c:RegisterEffect(e1)
  	--indes
  	local e2 = Effect.CreateEffect(c)
  	e2:SetType(EFFECT_TYPE_SINGLE)
  	e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
  	e2:SetRange(LOCATION_MZONE)
  	e2:SetCode(EFFECT_INDESTRUCTABLE_COUNT)
  	e2:SetCountLimit(1)
  	e2:SetValue(s.indct)
  	c:RegisterEffect(e2)
  	--negate
  	local e3 = Effect.CreateEffect(c)
  	e3:SetDescription(aux.Stringid(id, 1))
  	e3:SetCategory(CATEGORY_DISABLE + CATEGORY_EQUIP)
  	e3:SetType(EFFECT_TYPE_QUICK_O)
  	e3:SetRange(LOCATION_MZONE)
  	e3:SetCountLimit(1, id + o)
  	e3:SetCode(EVENT_CHAINING)
  	e3:SetCondition(s.negcon)
  	e3:SetCost(s.negcost)
  	e3:SetTarget(s.negtg)
  	e3:SetOperation(s.negop)
  	c:RegisterEffect(e3)
  end
  function s.eqcon(e, tp, eg, ep, ev, re, r, rp)
  	return e:GetHandler():IsSummonType(SUMMON_TYPE_XYZ)
  end
  function s.eqfilter(c, tp)
  	return c:IsFaceup() and (c:IsControler(tp) or c:IsAbleToChangeControler())
  end
  function s.eqtg(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return Duel.GetLocationCount(tp, LOCATION_SZONE) > 0 and Duel.IsExistingMatchingCard(s.eqfilter, tp, LOCATION_MZONE, LOCATION_MZONE, 1, e:GetHandler(), tp)
  	end
  	Duel.Hint(HINT_OPSELECTED, 1 - tp, e:GetDescription())
  end
  function s.eqop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	if Duel.GetLocationCount(tp, LOCATION_SZONE) <= 0 then
  		return
  	end
  	if c:IsFacedown() or not c:IsRelateToChain() then
  		return
  	end
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_EQUIP)
  	local g = Duel.SelectMatchingCard(tp, s.eqfilter, tp, LOCATION_MZONE, LOCATION_MZONE, 1, 1, aux.ExceptThisCard(e), tp)
  	local tc = g:GetFirst()
  	if tc then
  		Duel.HintSelection(g)
  		if not Duel.Equip(tp, tc, c) then
  			return
  		end
  		local e1 = Effect.CreateEffect(c)
  		e1:SetProperty(EFFECT_FLAG_OWNER_RELATE)
  		e1:SetType(EFFECT_TYPE_SINGLE)
  		e1:SetCode(EFFECT_EQUIP_LIMIT)
  		e1:SetReset(RESET_EVENT + RESETS_STANDARD)
  		e1:SetValue(s.eqlimit)
  		tc:RegisterEffect(e1)
  	end
  end
  function s.eqlimit(e, c)
  	return e:GetOwner() == c
  end
  function s.indct(e, re, r, rp)
  	return bit.band(r, REASON_BATTLE + REASON_EFFECT) ~= 0
  end
  function s.negcon(e, tp, eg, ep, ev, re, r, rp)
  	local loc = Duel.GetChainInfo(ev, CHAININFO_TRIGGERING_LOCATION)
  	return ep ~= tp and (LOCATION_ONFIELD + LOCATION_GRAVE) & loc ~= 0 and re:IsActiveType(TYPE_MONSTER) and Duel.IsChainDisablable(ev)
  end
  function s.negcost(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return e:GetHandler():CheckRemoveOverlayCard(tp, 1, REASON_COST)
  	end
  	e:GetHandler():RemoveOverlayCard(tp, 1, 1, REASON_COST)
  end
  function s.negtg(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)
  	Duel.Hint(HINT_OPSELECTED, 1 - tp, e:GetDescription())
  end
  function s.negop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	if
  		Duel.NegateEffect(ev) ~= 0
  		and Duel.GetLocationCount(tp, LOCATION_SZONE) > 0
  		and Duel.IsExistingMatchingCard(s.eqfilter, tp, 0, LOCATION_MZONE, 1, aux.ExceptThisCard(e), tp)
  		and c:IsRelateToChain()
  		and c:IsFaceup()
  		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, 0, LOCATION_MZONE, 1, 1, aux.ExceptThisCard(e), tp)
  		local tc = g:GetFirst()
  		if tc then
  			Duel.HintSelection(g)
  			if not Duel.Equip(tp, tc, c) then
  				return
  			end
  			local e1 = Effect.CreateEffect(c)
  			e1:SetProperty(EFFECT_FLAG_OWNER_RELATE)
  			e1:SetType(EFFECT_TYPE_SINGLE)
  			e1:SetCode(EFFECT_EQUIP_LIMIT)
  			e1:SetReset(RESET_EVENT + RESETS_STANDARD)
  			e1:SetValue(s.eqlimit)
  			tc:RegisterEffect(e1)
  		end
  	end
  end
  
  
source_text: DoomZ
  3 Level 8 monsters
  The first time this card would be destroyed by battle or card effect each turn, it is not destroyed. You can only use each of the following effects of "DoomZ XII End - Drastrius" once per turn. If this card is Xyz Summoned: You can equip 1 other face-up monster on the field to this card as an Equip Spell. When your opponent activates a monster effect on the field or GY (Quick Effect): You can detach 1 material from this card; negate that effect, then you can equip 1 face-up monster your opponent controls to this card as an Equip Spell.
target_text: -- DoomZ
  local s, id, o = GetID()
  function s.initial_effect(c)
  	--xyz summon
  	aux.AddXyzProcedure(c, nil, 8, 3)
  	c:EnableReviveLimit()
  	--equip
  	local e1 = Effect.CreateEffect(c)
  	e1:SetDescription(aux.Stringid(id, 0))
  	e1:SetCategory(CATEGORY_EQUIP)
  	e1:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_TRIGGER_O)
  	e1:SetCode(EVENT_SPSUMMON_SUCCESS)
  	e1:SetProperty(EFFECT_FLAG_DELAY)
  	e1:SetCountLimit(1, id)
  	e1:SetCondition(s.eqcon)
  	e1:SetTarget(s.eqtg)
  	e1:SetOperation(s.eqop)
  	c:RegisterEffect(e1)
  	--indes
  	local e2 = Effect.CreateEffect(c)
  	e2:SetType(EFFECT_TYPE_SINGLE)
  	e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
  	e2:SetRange(LOCATION_MZONE)
  	e2:SetCode(EFFECT_INDESTRUCTABLE_COUNT)
  	e2:SetCountLimit(1)
  	e2:SetValue(s.indct)
  	c:RegisterEffect(e2)
  	--negate
  	local e3 = Effect.CreateEffect(c)
  	e3:SetDescription(aux.Stringid(id, 1))
  	e3:SetCategory(CATEGORY_DISABLE + CATEGORY_EQUIP)
  	e3:SetType(EFFECT_TYPE_QUICK_O)
  	e3:SetRange(LOCATION_MZONE)
  	e3:SetCountLimit(1, id + o)
  	e3:SetCode(EVENT_CHAINING)
  	e3:SetCondition(s.negcon)
  	e3:SetCost(s.negcost)
  	e3:SetTarget(s.negtg)
  	e3:SetOperation(s.negop)
  	c:RegisterEffect(e3)
  end
  function s.eqcon(e, tp, eg, ep, ev, re, r, rp)
  	return e:GetHandler():IsSummonType(SUMMON_TYPE_XYZ)
  end
  function s.eqfilter(c, tp)
  	return c:IsFaceup() and (c:IsControler(tp) or c:IsAbleToChangeControler())
  end
  function s.eqtg(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return Duel.GetLocationCount(tp, LOCATION_SZONE) > 0 and Duel.IsExistingMatchingCard(s.eqfilter, tp, LOCATION_MZONE, LOCATION_MZONE, 1, e:GetHandler(), tp)
  	end
  	Duel.Hint(HINT_OPSELECTED, 1 - tp, e:GetDescription())
  end
  function s.eqop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	if Duel.GetLocationCount(tp, LOCATION_SZONE) <= 0 then
  		return
  	end
  	if c:IsFacedown() or not c:IsRelateToChain() then
  		return
  	end
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_EQUIP)
  	local g = Duel.SelectMatchingCard(tp, s.eqfilter, tp, LOCATION_MZONE, LOCATION_MZONE, 1, 1, aux.ExceptThisCard(e), tp)
  	local tc = g:GetFirst()
  	if tc then
  		Duel.HintSelection(g)
  		if not Duel.Equip(tp, tc, c) then
  			return
  		end
  		local e1 = Effect.CreateEffect(c)
  		e1:SetProperty(EFFECT_FLAG_OWNER_RELATE)
  		e1:SetType(EFFECT_TYPE_SINGLE)
  		e1:SetCode(EFFECT_EQUIP_LIMIT)
  		e1:SetReset(RESET_EVENT + RESETS_STANDARD)
  		e1:SetValue(s.eqlimit)
  		tc:RegisterEffect(e1)
  	end
  end
  function s.eqlimit(e, c)
  	return e:GetOwner() == c
  end
  function s.indct(e, re, r, rp)
  	return bit.band(r, REASON_BATTLE + REASON_EFFECT) ~= 0
  end
  function s.negcon(e, tp, eg, ep, ev, re, r, rp)
  	local loc = Duel.GetChainInfo(ev, CHAININFO_TRIGGERING_LOCATION)
  	return ep ~= tp and (LOCATION_ONFIELD + LOCATION_GRAVE) & loc ~= 0 and re:IsActiveType(TYPE_MONSTER) and Duel.IsChainDisablable(ev)
  end
  function s.negcost(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return e:GetHandler():CheckRemoveOverlayCard(tp, 1, REASON_COST)
  	end
  	e:GetHandler():RemoveOverlayCard(tp, 1, 1, REASON_COST)
  end
  function s.negtg(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)
  	Duel.Hint(HINT_OPSELECTED, 1 - tp, e:GetDescription())
  end
  function s.negop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	if
  		Duel.NegateEffect(ev) ~= 0
  		and Duel.GetLocationCount(tp, LOCATION_SZONE) > 0
  		and Duel.IsExistingMatchingCard(s.eqfilter, tp, 0, LOCATION_MZONE, 1, aux.ExceptThisCard(e), tp)
  		and c:IsRelateToChain()
  		and c:IsFaceup()
  		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, 0, LOCATION_MZONE, 1, 1, aux.ExceptThisCard(e), tp)
  		local tc = g:GetFirst()
  		if tc then
  			Duel.HintSelection(g)
  			if not Duel.Equip(tp, tc, c) then
  				return
  			end
  			local e1 = Effect.CreateEffect(c)
  			e1:SetProperty(EFFECT_FLAG_OWNER_RELATE)
  			e1:SetType(EFFECT_TYPE_SINGLE)
  			e1:SetCode(EFFECT_EQUIP_LIMIT)
  			e1:SetReset(RESET_EVENT + RESETS_STANDARD)
  			e1:SetValue(s.eqlimit)
  			tc:RegisterEffect(e1)
  		end
  	end
  end
  
  