name: びっくり箱
card_text: 1:相手フィールドにモンスターが2体以上存在する場合、相手モンスターの攻撃宣言時にそのモンスター1体を対象として発動できる。
  その攻撃を無効にし、そのモンスター以外の相手フィールドのモンスター1体を選んで墓地へ送る。
  その後、墓地へ送られたモンスターの攻撃力と守備力の内、高い方の数値分だけ対象のモンスターの攻撃力をダウンする。
lua: local s, id, o = GetID()
  function s.initial_effect(c)
  	--Activate
  	local e1 = Effect.CreateEffect(c)
  	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.GetFieldGroupCount(tp, 0, LOCATION_MZONE) > 1
  end
  function s.target(e, tp, eg, ep, ev, re, r, rp, chk, chkc)
  	local tc = Duel.GetAttacker()
  	if chkc then
  		return chkc == tc
  	end
  	if chk == 0 then
  		return tc:IsOnField() and tc:IsCanBeEffectTarget(e)
  	end
  	Duel.SetTargetCard(tc)
  end
  function s.activate(e, tp, eg, ep, ev, re, r, rp)
  	local tc = Duel.GetFirstTarget()
  	if not Duel.NegateAttack() then
  		return
  	end
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_TOGRAVE)
  	local g = Duel.SelectMatchingCard(tp, nil, tp, 0, LOCATION_MZONE, 1, 1, tc)
  	local sc = g:GetFirst()
  	if sc and Duel.SendtoGrave(sc, REASON_EFFECT) ~= 0 and sc:IsLocation(LOCATION_GRAVE) then
  		Duel.BreakEffect()
  		local val = math.max(0, sc:GetAttack(), sc:GetDefense())
  		local e1 = Effect.CreateEffect(e:GetHandler())
  		e1:SetType(EFFECT_TYPE_SINGLE)
  		e1:SetCode(EFFECT_UPDATE_ATTACK)
  		e1:SetValue(-val)
  		e1:SetReset(RESET_EVENT + RESETS_STANDARD)
  		tc:RegisterEffect(e1)
  	end
  end
  
  
source_text: びっくり箱
  1:相手フィールドにモンスターが2体以上存在する場合、相手モンスターの攻撃宣言時にそのモンスター1体を対象として発動できる。
  その攻撃を無効にし、そのモンスター以外の相手フィールドのモンスター1体を選んで墓地へ送る。
  その後、墓地へ送られたモンスターの攻撃力と守備力の内、高い方の数値分だけ対象のモンスターの攻撃力をダウンする。
target_text: -- びっくり箱
  local s, id, o = GetID()
  function s.initial_effect(c)
  	--Activate
  	local e1 = Effect.CreateEffect(c)
  	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.GetFieldGroupCount(tp, 0, LOCATION_MZONE) > 1
  end
  function s.target(e, tp, eg, ep, ev, re, r, rp, chk, chkc)
  	local tc = Duel.GetAttacker()
  	if chkc then
  		return chkc == tc
  	end
  	if chk == 0 then
  		return tc:IsOnField() and tc:IsCanBeEffectTarget(e)
  	end
  	Duel.SetTargetCard(tc)
  end
  function s.activate(e, tp, eg, ep, ev, re, r, rp)
  	local tc = Duel.GetFirstTarget()
  	if not Duel.NegateAttack() then
  		return
  	end
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_TOGRAVE)
  	local g = Duel.SelectMatchingCard(tp, nil, tp, 0, LOCATION_MZONE, 1, 1, tc)
  	local sc = g:GetFirst()
  	if sc and Duel.SendtoGrave(sc, REASON_EFFECT) ~= 0 and sc:IsLocation(LOCATION_GRAVE) then
  		Duel.BreakEffect()
  		local val = math.max(0, sc:GetAttack(), sc:GetDefense())
  		local e1 = Effect.CreateEffect(e:GetHandler())
  		e1:SetType(EFFECT_TYPE_SINGLE)
  		e1:SetCode(EFFECT_UPDATE_ATTACK)
  		e1:SetValue(-val)
  		e1:SetReset(RESET_EVENT + RESETS_STANDARD)
  		tc:RegisterEffect(e1)
  	end
  end
  
  