name: EMコール
card_text: 1:相手モンスターの直接攻撃宣言時に、その攻撃モンスター1体を対象として発動できる。
  その攻撃を無効にし、守備力の合計が対象のモンスターの攻撃力以下となるように、デッキから「EM」モンスターを2体まで手札に加える。
  このカードの発動後、次の自分ターンの終了時まで自分はエクストラデッキからモンスターを特殊召喚できない。
external_ids: local SETCARD_ID_0 = 0x9f --EM
  
lua: local SETCARD_ID_0 = 0x9f --EM
  local s, id, o = GetID()
  function s.initial_effect(c)
  	--Activate
  	local e1 = Effect.CreateEffect(c)
  	e1:SetCategory(CATEGORY_TOHAND + CATEGORY_SEARCH)
  	e1:SetType(EFFECT_TYPE_ACTIVATE)
  	e1:SetCode(EVENT_ATTACK_ANNOUNCE)
  	e1:SetProperty(EFFECT_FLAG_CARD_TARGET)
  	e1:SetCondition(s.condition)
  	e1:SetTarget(s.target)
  	e1:SetOperation(s.activate)
  	c:RegisterEffect(e1)
  end
  function s.condition(e, tp, eg, ep, ev, re, r, rp)
  	return Duel.GetAttacker():IsControler(1 - tp) and Duel.GetAttackTarget() == nil
  end
  function s.filter(c, def)
  	return c:IsSetCard(SETCARD_ID_0) and c:IsDefenseBelow(def) and c:IsAbleToHand()
  end
  function s.target(e, tp, eg, ep, ev, re, r, rp, chk, chkc)
  	local at = Duel.GetAttacker()
  	if chkc then
  		return chkc == at
  	end
  	if chk == 0 then
  		return at:IsOnField() and at:IsCanBeEffectTarget(e) and Duel.IsExistingMatchingCard(s.filter, tp, LOCATION_DECK, 0, 1, nil, at:GetAttack())
  	end
  	Duel.SetTargetCard(at)
  	Duel.SetOperationInfo(0, CATEGORY_TOHAND, nil, 1, tp, LOCATION_DECK)
  end
  function s.activate(e, tp, eg, ep, ev, re, r, rp)
  	local tc = Duel.GetFirstTarget()
  	if Duel.NegateAttack() then
  		local val = tc:GetAttack()
  		Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_ATOHAND)
  		local g1 = Duel.SelectMatchingCard(tp, s.filter, tp, LOCATION_DECK, 0, 1, 1, nil, val)
  		local sc = g1:GetFirst()
  		if sc then
  			val = val - sc:GetDefense()
  			if Duel.IsExistingMatchingCard(s.filter, tp, LOCATION_DECK, 0, 1, sc, val) and Duel.SelectYesNo(tp, aux.Stringid(id, 0)) then
  				Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_ATOHAND)
  				local g2 = Duel.SelectMatchingCard(tp, s.filter, tp, LOCATION_DECK, 0, 1, 1, sc, val)
  				g1:Merge(g2)
  			end
  			Duel.SendtoHand(g1, nil, REASON_EFFECT)
  			Duel.ConfirmCards(1 - tp, g1)
  		end
  	end
  	if e:IsHasType(EFFECT_TYPE_ACTIVATE) then
  		local e1 = Effect.CreateEffect(e:GetHandler())
  		e1:SetType(EFFECT_TYPE_FIELD)
  		e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
  		e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON)
  		e1:SetTargetRange(1, 0)
  		e1:SetTarget(s.sumlimit)
  		if Duel.GetTurnPlayer() == tp then
  			e1:SetReset(RESET_PHASE + PHASE_END + RESET_SELF_TURN, 2)
  		else
  			e1:SetReset(RESET_PHASE + PHASE_END + RESET_SELF_TURN)
  		end
  		Duel.RegisterEffect(e1, tp)
  	end
  end
  function s.sumlimit(e, c, sump, sumtype, sumpos, targetp, se)
  	return c:IsLocation(LOCATION_EXTRA)
  end
  
  
source_text: EMコール
  1:相手モンスターの直接攻撃宣言時に、その攻撃モンスター1体を対象として発動できる。
  その攻撃を無効にし、守備力の合計が対象のモンスターの攻撃力以下となるように、デッキから「EM」モンスターを2体まで手札に加える。
  このカードの発動後、次の自分ターンの終了時まで自分はエクストラデッキからモンスターを特殊召喚できない。
target_text: -- EMコール
  local SETCARD_ID_0 = 0x9f --EM
  local s, id, o = GetID()
  function s.initial_effect(c)
  	--Activate
  	local e1 = Effect.CreateEffect(c)
  	e1:SetCategory(CATEGORY_TOHAND + CATEGORY_SEARCH)
  	e1:SetType(EFFECT_TYPE_ACTIVATE)
  	e1:SetCode(EVENT_ATTACK_ANNOUNCE)
  	e1:SetProperty(EFFECT_FLAG_CARD_TARGET)
  	e1:SetCondition(s.condition)
  	e1:SetTarget(s.target)
  	e1:SetOperation(s.activate)
  	c:RegisterEffect(e1)
  end
  function s.condition(e, tp, eg, ep, ev, re, r, rp)
  	return Duel.GetAttacker():IsControler(1 - tp) and Duel.GetAttackTarget() == nil
  end
  function s.filter(c, def)
  	return c:IsSetCard(SETCARD_ID_0) and c:IsDefenseBelow(def) and c:IsAbleToHand()
  end
  function s.target(e, tp, eg, ep, ev, re, r, rp, chk, chkc)
  	local at = Duel.GetAttacker()
  	if chkc then
  		return chkc == at
  	end
  	if chk == 0 then
  		return at:IsOnField() and at:IsCanBeEffectTarget(e) and Duel.IsExistingMatchingCard(s.filter, tp, LOCATION_DECK, 0, 1, nil, at:GetAttack())
  	end
  	Duel.SetTargetCard(at)
  	Duel.SetOperationInfo(0, CATEGORY_TOHAND, nil, 1, tp, LOCATION_DECK)
  end
  function s.activate(e, tp, eg, ep, ev, re, r, rp)
  	local tc = Duel.GetFirstTarget()
  	if Duel.NegateAttack() then
  		local val = tc:GetAttack()
  		Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_ATOHAND)
  		local g1 = Duel.SelectMatchingCard(tp, s.filter, tp, LOCATION_DECK, 0, 1, 1, nil, val)
  		local sc = g1:GetFirst()
  		if sc then
  			val = val - sc:GetDefense()
  			if Duel.IsExistingMatchingCard(s.filter, tp, LOCATION_DECK, 0, 1, sc, val) and Duel.SelectYesNo(tp, aux.Stringid(id, 0)) then
  				Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_ATOHAND)
  				local g2 = Duel.SelectMatchingCard(tp, s.filter, tp, LOCATION_DECK, 0, 1, 1, sc, val)
  				g1:Merge(g2)
  			end
  			Duel.SendtoHand(g1, nil, REASON_EFFECT)
  			Duel.ConfirmCards(1 - tp, g1)
  		end
  	end
  	if e:IsHasType(EFFECT_TYPE_ACTIVATE) then
  		local e1 = Effect.CreateEffect(e:GetHandler())
  		e1:SetType(EFFECT_TYPE_FIELD)
  		e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
  		e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON)
  		e1:SetTargetRange(1, 0)
  		e1:SetTarget(s.sumlimit)
  		if Duel.GetTurnPlayer() == tp then
  			e1:SetReset(RESET_PHASE + PHASE_END + RESET_SELF_TURN, 2)
  		else
  			e1:SetReset(RESET_PHASE + PHASE_END + RESET_SELF_TURN)
  		end
  		Duel.RegisterEffect(e1, tp)
  	end
  end
  function s.sumlimit(e, c, sump, sumtype, sumpos, targetp, se)
  	return c:IsLocation(LOCATION_EXTRA)
  end
  
  