name: Intrigue
card_text: Target 1 face-up monster you control; equip this card to that target. Once per turn, while the equipped monster is in Attack Position, it cannot be destroyed by battle. You take no battle damage from attacks involving it.
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:SetCode(EVENT_FREE_CHAIN)
  	e1:SetProperty(EFFECT_FLAG_CARD_TARGET)
  	e1:SetCost(s.cost)
  	e1:SetTarget(s.target)
  	e1:SetOperation(s.operation)
  	c:RegisterEffect(e1)
  end
  function s.cost(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return true
  	end
  	local c = e:GetHandler()
  	local cid = Duel.GetChainInfo(0, CHAININFO_CHAIN_ID)
  	local e1 = Effect.CreateEffect(c)
  	e1:SetType(EFFECT_TYPE_SINGLE)
  	e1:SetCode(EFFECT_REMAIN_FIELD)
  	e1:SetProperty(EFFECT_FLAG_OATH)
  	e1:SetReset(RESET_CHAIN)
  	c:RegisterEffect(e1)
  	local e2 = Effect.CreateEffect(c)
  	e2:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_CONTINUOUS)
  	e2:SetCode(EVENT_CHAIN_DISABLED)
  	e2:SetOperation(s.tgop)
  	e2:SetLabel(cid)
  	e2:SetReset(RESET_CHAIN)
  	Duel.RegisterEffect(e2, tp)
  end
  function s.tgop(e, tp, eg, ep, ev, re, r, rp)
  	local cid = Duel.GetChainInfo(ev, CHAININFO_CHAIN_ID)
  	if cid ~= e:GetLabel() then
  		return
  	end
  	if e:GetOwner():IsRelateToChain(ev) then
  		e:GetOwner():CancelToGrave(false)
  	end
  end
  function s.filter(c)
  	return c:IsFaceup()
  end
  function s.target(e, tp, eg, ep, ev, re, r, rp, chk, chkc)
  	if chkc then
  		return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and s.filter(chkc)
  	end
  	if chk == 0 then
  		return e:IsCostChecked() and Duel.IsExistingTarget(s.filter, tp, LOCATION_MZONE, 0, 1, nil)
  	end
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_EQUIP)
  	Duel.SelectTarget(tp, s.filter, tp, LOCATION_MZONE, 0, 1, 1, nil)
  	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()
  	if not c:IsLocation(LOCATION_SZONE) then
  		return
  	end
  	if not c:IsRelateToEffect(e) or c:IsStatus(STATUS_LEAVE_CONFIRMED) then
  		return
  	end
  	local tc = Duel.GetFirstTarget()
  	if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:GetControler() == c:GetControler() then
  		Duel.Equip(tp, c, tc)
  		--indes
  		local e1 = Effect.CreateEffect(c)
  		e1:SetType(EFFECT_TYPE_EQUIP)
  		e1:SetCode(EFFECT_INDESTRUCTABLE_COUNT)
  		e1:SetCountLimit(1)
  		e1:SetValue(s.valcon)
  		e1:SetReset(RESET_EVENT + RESETS_STANDARD)
  		c:RegisterEffect(e1)
  		local e2 = Effect.CreateEffect(c)
  		e2:SetType(EFFECT_TYPE_EQUIP)
  		e2:SetCode(EFFECT_AVOID_BATTLE_DAMAGE)
  		e2:SetCondition(s.damcon)
  		e2:SetValue(1)
  		e2:SetReset(RESET_EVENT + RESETS_STANDARD)
  		c:RegisterEffect(e2)
  		--Equip limit
  		local e3 = Effect.CreateEffect(c)
  		e3:SetType(EFFECT_TYPE_SINGLE)
  		e3:SetCode(EFFECT_EQUIP_LIMIT)
  		e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
  		e3:SetValue(s.eqlimit)
  		e3:SetReset(RESET_EVENT + RESETS_STANDARD)
  		c:RegisterEffect(e3)
  	else
  		c:CancelToGrave(false)
  	end
  end
  function s.valcon(e, re, r, rp)
  	return bit.band(r, REASON_BATTLE) ~= 0 and e:GetHandler():GetEquipTarget():IsPosition(POS_FACEUP_ATTACK)
  end
  function s.damcon(e)
  	return e:GetHandler():GetEquipTarget():GetControler() == e:GetHandlerPlayer()
  end
  function s.eqlimit(e, c)
  	return e:GetHandler():GetEquipTarget() == c or c:IsControler(e:GetHandlerPlayer())
  end
  
  
source_text: Intrigue
  Target 1 face-up monster you control; equip this card to that target. Once per turn, while the equipped monster is in Attack Position, it cannot be destroyed by battle. You take no battle damage from attacks involving it.
target_text: -- Intrigue
  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:SetCode(EVENT_FREE_CHAIN)
  	e1:SetProperty(EFFECT_FLAG_CARD_TARGET)
  	e1:SetCost(s.cost)
  	e1:SetTarget(s.target)
  	e1:SetOperation(s.operation)
  	c:RegisterEffect(e1)
  end
  function s.cost(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return true
  	end
  	local c = e:GetHandler()
  	local cid = Duel.GetChainInfo(0, CHAININFO_CHAIN_ID)
  	local e1 = Effect.CreateEffect(c)
  	e1:SetType(EFFECT_TYPE_SINGLE)
  	e1:SetCode(EFFECT_REMAIN_FIELD)
  	e1:SetProperty(EFFECT_FLAG_OATH)
  	e1:SetReset(RESET_CHAIN)
  	c:RegisterEffect(e1)
  	local e2 = Effect.CreateEffect(c)
  	e2:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_CONTINUOUS)
  	e2:SetCode(EVENT_CHAIN_DISABLED)
  	e2:SetOperation(s.tgop)
  	e2:SetLabel(cid)
  	e2:SetReset(RESET_CHAIN)
  	Duel.RegisterEffect(e2, tp)
  end
  function s.tgop(e, tp, eg, ep, ev, re, r, rp)
  	local cid = Duel.GetChainInfo(ev, CHAININFO_CHAIN_ID)
  	if cid ~= e:GetLabel() then
  		return
  	end
  	if e:GetOwner():IsRelateToChain(ev) then
  		e:GetOwner():CancelToGrave(false)
  	end
  end
  function s.filter(c)
  	return c:IsFaceup()
  end
  function s.target(e, tp, eg, ep, ev, re, r, rp, chk, chkc)
  	if chkc then
  		return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and s.filter(chkc)
  	end
  	if chk == 0 then
  		return e:IsCostChecked() and Duel.IsExistingTarget(s.filter, tp, LOCATION_MZONE, 0, 1, nil)
  	end
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_EQUIP)
  	Duel.SelectTarget(tp, s.filter, tp, LOCATION_MZONE, 0, 1, 1, nil)
  	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()
  	if not c:IsLocation(LOCATION_SZONE) then
  		return
  	end
  	if not c:IsRelateToEffect(e) or c:IsStatus(STATUS_LEAVE_CONFIRMED) then
  		return
  	end
  	local tc = Duel.GetFirstTarget()
  	if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:GetControler() == c:GetControler() then
  		Duel.Equip(tp, c, tc)
  		--indes
  		local e1 = Effect.CreateEffect(c)
  		e1:SetType(EFFECT_TYPE_EQUIP)
  		e1:SetCode(EFFECT_INDESTRUCTABLE_COUNT)
  		e1:SetCountLimit(1)
  		e1:SetValue(s.valcon)
  		e1:SetReset(RESET_EVENT + RESETS_STANDARD)
  		c:RegisterEffect(e1)
  		local e2 = Effect.CreateEffect(c)
  		e2:SetType(EFFECT_TYPE_EQUIP)
  		e2:SetCode(EFFECT_AVOID_BATTLE_DAMAGE)
  		e2:SetCondition(s.damcon)
  		e2:SetValue(1)
  		e2:SetReset(RESET_EVENT + RESETS_STANDARD)
  		c:RegisterEffect(e2)
  		--Equip limit
  		local e3 = Effect.CreateEffect(c)
  		e3:SetType(EFFECT_TYPE_SINGLE)
  		e3:SetCode(EFFECT_EQUIP_LIMIT)
  		e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
  		e3:SetValue(s.eqlimit)
  		e3:SetReset(RESET_EVENT + RESETS_STANDARD)
  		c:RegisterEffect(e3)
  	else
  		c:CancelToGrave(false)
  	end
  end
  function s.valcon(e, re, r, rp)
  	return bit.band(r, REASON_BATTLE) ~= 0 and e:GetHandler():GetEquipTarget():IsPosition(POS_FACEUP_ATTACK)
  end
  function s.damcon(e)
  	return e:GetHandler():GetEquipTarget():GetControler() == e:GetHandlerPlayer()
  end
  function s.eqlimit(e, c)
  	return e:GetHandler():GetEquipTarget() == c or c:IsControler(e:GetHandlerPlayer())
  end
  
  