name: あないみじや玉の緒ふたつ
card_text: EXデッキから特殊召喚された自分フィールドのモンスターにのみ装備可能。
  1:装備モンスターより攻撃力が高いモンスターを相手がEXデッキから特殊召喚した場合、その内の1体を対象として発動できる。
  そのモンスター及び装備モンスターを破壊し、自分は破壊したモンスターの元々の攻撃力の合計分のダメージを受ける。
  その後、自分が受けたダメージと同じ数値分のダメージを相手に与える。
lua: local s, id, o = GetID()
  function s.initial_effect(c)
  	--Activate
  	local e1 = Effect.CreateEffect(c)
  	e1:SetCategory(CATEGORY_EQUIP)
  	e1:SetType(EFFECT_TYPE_ACTIVATE)
  	e1:SetProperty(EFFECT_FLAG_CARD_TARGET + EFFECT_FLAG_CONTINUOUS_TARGET)
  	e1:SetCode(EVENT_FREE_CHAIN)
  	e1:SetTarget(s.target)
  	e1:SetOperation(s.operation)
  	c:RegisterEffect(e1)
  	--equip limit
  	local e2 = Effect.CreateEffect(c)
  	e2:SetType(EFFECT_TYPE_SINGLE)
  	e2:SetCode(EFFECT_EQUIP_LIMIT)
  	e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
  	e2:SetValue(s.eqlimit)
  	c:RegisterEffect(e2)
  	--destroy
  	local custom_code = aux.RegisterMergedDelayedEvent_ToSingleCard(c, id, EVENT_SPSUMMON_SUCCESS)
  	local e3 = Effect.CreateEffect(c)
  	e3:SetDescription(aux.Stringid(id, 1))
  	e3:SetCategory(CATEGORY_DESTROY + CATEGORY_DAMAGE)
  	e3:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_TRIGGER_O)
  	e3:SetCode(custom_code)
  	e3:SetRange(LOCATION_SZONE)
  	e3:SetProperty(EFFECT_FLAG_CARD_TARGET + EFFECT_FLAG_DELAY)
  	e3:SetCondition(s.descon)
  	e3:SetTarget(s.destg)
  	e3:SetOperation(s.desop)
  	c:RegisterEffect(e3)
  end
  function s.eqlimit(e, c)
  	return c:IsSummonLocation(LOCATION_EXTRA) and c:IsControler(e:GetHandlerPlayer())
  end
  function s.eqfilter(c, tp)
  	return c:IsFaceup() and c:IsSummonLocation(LOCATION_EXTRA) and c:IsControler(tp)
  end
  function s.target(e, tp, eg, ep, ev, re, r, rp, chk, chkc)
  	if chkc then
  		return chkc:IsLocation(LOCATION_MZONE) and s.eqfilter(chkc, tp)
  	end
  	if chk == 0 then
  		return Duel.IsExistingTarget(s.eqfilter, tp, LOCATION_MZONE, LOCATION_MZONE, 1, nil, tp)
  	end
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_EQUIP)
  	Duel.SelectTarget(tp, s.eqfilter, tp, LOCATION_MZONE, LOCATION_MZONE, 1, 1, nil, tp)
  	Duel.SetOperationInfo(0, CATEGORY_EQUIP, e:GetHandler(), 1, 0, 0)
  end
  function s.operation(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	local tc = Duel.GetFirstTarget()
  	if c:IsRelateToChain() and tc:IsRelateToChain() and tc:IsControler(tp) and tc:IsFaceup() then
  		Duel.Equip(tp, c, tc)
  	end
  end
  function s.desfilter(c, tp, e, ec)
  	return c:IsSummonLocation(LOCATION_EXTRA) and c:IsLocation(LOCATION_MZONE) and c:IsSummonPlayer(1 - tp) and c:IsCanBeEffectTarget(e) and c:IsFaceup() and c:IsAttackAbove(ec:GetAttack() + 1)
  end
  function s.descon(e, tp, eg, ep, ev, re, r, rp)
  	local ec = e:GetHandler():GetEquipTarget()
  	return ec and eg:IsExists(s.desfilter, 1, nil, tp, e, ec)
  end
  function s.destg(e, tp, eg, ep, ev, re, r, rp, chk, chkc)
  	local c = e:GetHandler()
  	local ec = c:GetEquipTarget()
  	local g = eg:Filter(s.desfilter, nil, tp, e, ec)
  	if chkc then
  		return g:IsContains(chkc)
  	end
  	if chk == 0 then
  		return #g > 0
  	end
  	local sg
  	if g:GetCount() == 1 then
  		sg = g:Clone()
  		Duel.SetTargetCard(sg)
  	else
  		Duel.Hint(HINTMSG_DESTROY, tp, HINTMSG_DESTROY)
  		sg = Duel.SelectTarget(tp, aux.IsInGroup, tp, LOCATION_MZONE, LOCATION_MZONE, 1, 1, nil, g)
  	end
  	local dg = sg:Clone()
  	dg:AddCard(ec)
  	Duel.SetOperationInfo(0, CATEGORY_DESTROY, dg, 2, 0, 0)
  	if sg:GetFirst():IsFaceup() and math.max(0, sg:GetFirst():GetTextAttack()) > 0 then
  		Duel.SetOperationInfo(0, CATEGORY_DAMAGE, nil, 0, PLAYER_ALL, 0)
  	end
  end
  function s.desop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	local ec = c:GetEquipTarget()
  	local tc = Duel.GetFirstTarget()
  	local g = Group.FromCards(ec, tc)
  	if tc:IsRelateToChain() and tc:IsType(TYPE_MONSTER) and Duel.Destroy(g, REASON_EFFECT) ~= 0 then
  		local sg = Duel.GetOperatedGroup()
  		local atk = 0
  		for dc in aux.Next(sg) do
  			atk = atk + math.max(0, dc:GetTextAttack())
  		end
  		if atk > 0 then
  			local val = Duel.Damage(tp, atk, REASON_EFFECT)
  			if val > 0 and Duel.GetLP(tp) > 0 then
  				Duel.BreakEffect()
  				Duel.Damage(1 - tp, val, REASON_EFFECT)
  			end
  		end
  	end
  end
  
  
source_text: あないみじや玉の緒ふたつ
  EXデッキから特殊召喚された自分フィールドのモンスターにのみ装備可能。
  1:装備モンスターより攻撃力が高いモンスターを相手がEXデッキから特殊召喚した場合、その内の1体を対象として発動できる。
  そのモンスター及び装備モンスターを破壊し、自分は破壊したモンスターの元々の攻撃力の合計分のダメージを受ける。
  その後、自分が受けたダメージと同じ数値分のダメージを相手に与える。
target_text: -- あないみじや玉の緒ふたつ
  local s, id, o = GetID()
  function s.initial_effect(c)
  	--Activate
  	local e1 = Effect.CreateEffect(c)
  	e1:SetCategory(CATEGORY_EQUIP)
  	e1:SetType(EFFECT_TYPE_ACTIVATE)
  	e1:SetProperty(EFFECT_FLAG_CARD_TARGET + EFFECT_FLAG_CONTINUOUS_TARGET)
  	e1:SetCode(EVENT_FREE_CHAIN)
  	e1:SetTarget(s.target)
  	e1:SetOperation(s.operation)
  	c:RegisterEffect(e1)
  	--equip limit
  	local e2 = Effect.CreateEffect(c)
  	e2:SetType(EFFECT_TYPE_SINGLE)
  	e2:SetCode(EFFECT_EQUIP_LIMIT)
  	e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
  	e2:SetValue(s.eqlimit)
  	c:RegisterEffect(e2)
  	--destroy
  	local custom_code = aux.RegisterMergedDelayedEvent_ToSingleCard(c, id, EVENT_SPSUMMON_SUCCESS)
  	local e3 = Effect.CreateEffect(c)
  	e3:SetDescription(aux.Stringid(id, 1))
  	e3:SetCategory(CATEGORY_DESTROY + CATEGORY_DAMAGE)
  	e3:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_TRIGGER_O)
  	e3:SetCode(custom_code)
  	e3:SetRange(LOCATION_SZONE)
  	e3:SetProperty(EFFECT_FLAG_CARD_TARGET + EFFECT_FLAG_DELAY)
  	e3:SetCondition(s.descon)
  	e3:SetTarget(s.destg)
  	e3:SetOperation(s.desop)
  	c:RegisterEffect(e3)
  end
  function s.eqlimit(e, c)
  	return c:IsSummonLocation(LOCATION_EXTRA) and c:IsControler(e:GetHandlerPlayer())
  end
  function s.eqfilter(c, tp)
  	return c:IsFaceup() and c:IsSummonLocation(LOCATION_EXTRA) and c:IsControler(tp)
  end
  function s.target(e, tp, eg, ep, ev, re, r, rp, chk, chkc)
  	if chkc then
  		return chkc:IsLocation(LOCATION_MZONE) and s.eqfilter(chkc, tp)
  	end
  	if chk == 0 then
  		return Duel.IsExistingTarget(s.eqfilter, tp, LOCATION_MZONE, LOCATION_MZONE, 1, nil, tp)
  	end
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_EQUIP)
  	Duel.SelectTarget(tp, s.eqfilter, tp, LOCATION_MZONE, LOCATION_MZONE, 1, 1, nil, tp)
  	Duel.SetOperationInfo(0, CATEGORY_EQUIP, e:GetHandler(), 1, 0, 0)
  end
  function s.operation(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	local tc = Duel.GetFirstTarget()
  	if c:IsRelateToChain() and tc:IsRelateToChain() and tc:IsControler(tp) and tc:IsFaceup() then
  		Duel.Equip(tp, c, tc)
  	end
  end
  function s.desfilter(c, tp, e, ec)
  	return c:IsSummonLocation(LOCATION_EXTRA) and c:IsLocation(LOCATION_MZONE) and c:IsSummonPlayer(1 - tp) and c:IsCanBeEffectTarget(e) and c:IsFaceup() and c:IsAttackAbove(ec:GetAttack() + 1)
  end
  function s.descon(e, tp, eg, ep, ev, re, r, rp)
  	local ec = e:GetHandler():GetEquipTarget()
  	return ec and eg:IsExists(s.desfilter, 1, nil, tp, e, ec)
  end
  function s.destg(e, tp, eg, ep, ev, re, r, rp, chk, chkc)
  	local c = e:GetHandler()
  	local ec = c:GetEquipTarget()
  	local g = eg:Filter(s.desfilter, nil, tp, e, ec)
  	if chkc then
  		return g:IsContains(chkc)
  	end
  	if chk == 0 then
  		return #g > 0
  	end
  	local sg
  	if g:GetCount() == 1 then
  		sg = g:Clone()
  		Duel.SetTargetCard(sg)
  	else
  		Duel.Hint(HINTMSG_DESTROY, tp, HINTMSG_DESTROY)
  		sg = Duel.SelectTarget(tp, aux.IsInGroup, tp, LOCATION_MZONE, LOCATION_MZONE, 1, 1, nil, g)
  	end
  	local dg = sg:Clone()
  	dg:AddCard(ec)
  	Duel.SetOperationInfo(0, CATEGORY_DESTROY, dg, 2, 0, 0)
  	if sg:GetFirst():IsFaceup() and math.max(0, sg:GetFirst():GetTextAttack()) > 0 then
  		Duel.SetOperationInfo(0, CATEGORY_DAMAGE, nil, 0, PLAYER_ALL, 0)
  	end
  end
  function s.desop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	local ec = c:GetEquipTarget()
  	local tc = Duel.GetFirstTarget()
  	local g = Group.FromCards(ec, tc)
  	if tc:IsRelateToChain() and tc:IsType(TYPE_MONSTER) and Duel.Destroy(g, REASON_EFFECT) ~= 0 then
  		local sg = Duel.GetOperatedGroup()
  		local atk = 0
  		for dc in aux.Next(sg) do
  			atk = atk + math.max(0, dc:GetTextAttack())
  		end
  		if atk > 0 then
  			local val = Duel.Damage(tp, atk, REASON_EFFECT)
  			if val > 0 and Duel.GetLP(tp) > 0 then
  				Duel.BreakEffect()
  				Duel.Damage(1 - tp, val, REASON_EFFECT)
  			end
  		end
  	end
  end
  
  