name: Doble
card_text: When an opponent's monster declares an attack on a face-up Attack Position monster you control: Make your opponent's attack a direct attack instead and inflict damage to your opponent equal to the ATK of the attack target you control. Also, that monster you control can attack your opponent directly during your next turn.
lua: local s, id, o = GetID()
  function s.initial_effect(c)
  	--change battle target
  	local e1 = Effect.CreateEffect(c)
  	e1:SetDescription(aux.Stringid(id, 0))
  	e1:SetType(EFFECT_TYPE_ACTIVATE)
  	e1:SetCode(EVENT_ATTACK_ANNOUNCE)
  	e1:SetCondition(s.cbcon)
  	e1:SetTarget(s.cbtg)
  	e1:SetOperation(s.cbop)
  	c:RegisterEffect(e1)
  end
  function s.cbcon(e, tp, eg, ep, ev, re, r, rp)
  	local bt = Duel.GetAttackTarget()
  	return bt and bt:IsLocation(LOCATION_MZONE) and bt:IsPosition(POS_FACEUP_ATTACK) and bt:IsControler(tp)
  end
  function s.cbtg(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return not Duel.GetAttacker():IsHasEffect(EFFECT_CANNOT_DIRECT_ATTACK)
  	end
  end
  function s.cbop(e, tp, eg, ep, ev, re, r, rp)
  	local at = Duel.GetAttacker()
  	local bt = Duel.GetAttackTarget()
  	if not (bt:IsRelateToBattle() and bt:IsControler(tp)) then
  		return
  	end
  	if at:IsAttackable() and not at:IsStatus(STATUS_ATTACK_CANCELED) and Duel.Damage(1 - tp, bt:GetAttack(), REASON_EFFECT) > 0 then
  		Duel.ChangeAttackTarget(nil)
  	end
  	local e1 = Effect.CreateEffect(e:GetHandler())
  	e1:SetType(EFFECT_TYPE_SINGLE)
  	e1:SetCode(EFFECT_DIRECT_ATTACK)
  	e1:SetReset(RESET_EVENT + RESETS_STANDARD + RESET_PHASE + PHASE_END + RESET_SELF_TURN)
  	bt:RegisterEffect(e1)
  end
  
  
source_text: Doble
  When an opponent's monster declares an attack on a face-up Attack Position monster you control: Make your opponent's attack a direct attack instead and inflict damage to your opponent equal to the ATK of the attack target you control. Also, that monster you control can attack your opponent directly during your next turn.
target_text: -- Doble
  local s, id, o = GetID()
  function s.initial_effect(c)
  	--change battle target
  	local e1 = Effect.CreateEffect(c)
  	e1:SetDescription(aux.Stringid(id, 0))
  	e1:SetType(EFFECT_TYPE_ACTIVATE)
  	e1:SetCode(EVENT_ATTACK_ANNOUNCE)
  	e1:SetCondition(s.cbcon)
  	e1:SetTarget(s.cbtg)
  	e1:SetOperation(s.cbop)
  	c:RegisterEffect(e1)
  end
  function s.cbcon(e, tp, eg, ep, ev, re, r, rp)
  	local bt = Duel.GetAttackTarget()
  	return bt and bt:IsLocation(LOCATION_MZONE) and bt:IsPosition(POS_FACEUP_ATTACK) and bt:IsControler(tp)
  end
  function s.cbtg(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return not Duel.GetAttacker():IsHasEffect(EFFECT_CANNOT_DIRECT_ATTACK)
  	end
  end
  function s.cbop(e, tp, eg, ep, ev, re, r, rp)
  	local at = Duel.GetAttacker()
  	local bt = Duel.GetAttackTarget()
  	if not (bt:IsRelateToBattle() and bt:IsControler(tp)) then
  		return
  	end
  	if at:IsAttackable() and not at:IsStatus(STATUS_ATTACK_CANCELED) and Duel.Damage(1 - tp, bt:GetAttack(), REASON_EFFECT) > 0 then
  		Duel.ChangeAttackTarget(nil)
  	end
  	local e1 = Effect.CreateEffect(e:GetHandler())
  	e1:SetType(EFFECT_TYPE_SINGLE)
  	e1:SetCode(EFFECT_DIRECT_ATTACK)
  	e1:SetReset(RESET_EVENT + RESETS_STANDARD + RESET_PHASE + PHASE_END + RESET_SELF_TURN)
  	bt:RegisterEffect(e1)
  end
  
  