name: No.7
card_text: レベル7モンスター×3
  1:このカードのX素材を1つ取り除いて発動できる。
  サイコロを2回振る。
  このカードの攻撃力は、相手ターン終了時まで、大きい方の出た目×700になる。
  出た目の合計が7だった場合、さらに以下の効果から1つを選んで適用する。
  ●このカード以外のフィールドのカードを全て墓地へ送る。
  ●手札または自分・相手の墓地からモンスター1体を選んで自分フィールドに特殊召喚する。
  ●自分はデッキから3枚ドローし、その後手札を2枚選んで捨てる。
lua: local s, id, o = GetID()
  function s.initial_effect(c)
  	--xyz summon
  	aux.AddXyzProcedure(c, nil, 7, 3)
  	c:EnableReviveLimit()
  	--destroy
  	local e1 = Effect.CreateEffect(c)
  	e1:SetDescription(aux.Stringid(id, 0))
  	e1:SetCategory(CATEGORY_DICE | CATEGORY_ATKCHANGE | CATEGORY_DRAW | CATEGORY_SPECIAL_SUMMON | CATEGORY_TOGRAVE)
  	e1:SetType(EFFECT_TYPE_IGNITION)
  	e1:SetRange(LOCATION_MZONE)
  	e1:SetCost(s.cost)
  	e1:SetTarget(s.target)
  	e1:SetOperation(s.operation)
  	c:RegisterEffect(e1)
  end
  aux.xyz_number[id] = 7
  function s.cost(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return e:GetHandler():CheckRemoveOverlayCard(tp, 1, REASON_COST)
  	end
  	e:GetHandler():RemoveOverlayCard(tp, 1, 1, REASON_COST)
  end
  function s.target(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return true
  	end
  	Duel.SetOperationInfo(0, CATEGORY_DICE, nil, 0, tp, 2)
  end
  function s.spfilter(c, e, tp)
  	return c:IsCanBeSpecialSummoned(e, 0, tp, false, false)
  end
  function s.operation(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	local d1, d2 = Duel.TossDice(tp, 2)
  	if d2 > d1 then
  		d1, d2 = d2, d1
  	end
  	local e1 = Effect.CreateEffect(c)
  	e1:SetType(EFFECT_TYPE_SINGLE)
  	e1:SetCode(EFFECT_SET_ATTACK_FINAL)
  	e1:SetValue(d1 * 700)
  	e1:SetReset(RESET_EVENT + RESETS_STANDARD + RESET_PHASE + PHASE_END, 2)
  	c:RegisterEffect(e1)
  	if d1 + d2 == 7 then
  		local b1 = Duel.GetFieldGroupCount(tp, LOCATION_ONFIELD, LOCATION_ONFIELD) > 1
  		local spg = Duel.GetMatchingGroup(aux.NecroValleyFilter(s.spfilter), tp, LOCATION_HAND + LOCATION_GRAVE, LOCATION_GRAVE, nil, e, tp)
  		local b2 = Duel.GetLocationCount(tp, LOCATION_MZONE) > 0 and spg:GetCount() > 0
  		local b3 = Duel.IsPlayerCanDraw(tp, 3)
  		if not b1 and not b2 and not b3 then
  			return
  		end
  		local op = 0
  		if b1 and not b2 and not b3 then
  			op = Duel.SelectOption(tp, aux.Stringid(id, 1))
  		elseif not b1 and b2 and not b3 then
  			op = Duel.SelectOption(tp, aux.Stringid(id, 2)) + 1
  		elseif not b1 and not b2 and b3 then
  			op = Duel.SelectOption(tp, aux.Stringid(id, 3)) + 2
  		elseif b1 and b2 and not b3 then
  			op = Duel.SelectOption(tp, aux.Stringid(id, 1), aux.Stringid(id, 2))
  		elseif b1 and not b2 and b3 then
  			op = Duel.SelectOption(tp, aux.Stringid(id, 1), aux.Stringid(id, 3))
  			if op == 1 then
  				op = 2
  			end
  		elseif not b1 and b2 and b3 then
  			op = Duel.SelectOption(tp, aux.Stringid(id, 2), aux.Stringid(id, 3)) + 1
  		else
  			op = Duel.SelectOption(tp, aux.Stringid(id, 1), aux.Stringid(id, 2), aux.Stringid(id, 3))
  		end
  		if op == 0 then
  			local g = Duel.GetMatchingGroup(aux.TRUE, tp, LOCATION_ONFIELD, LOCATION_ONFIELD, aux.ExceptThisCard(e))
  			Duel.SendtoGrave(g, REASON_EFFECT)
  		elseif op == 1 then
  			Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_SPSUMMON)
  			local sg = spg:Select(tp, 1, 1, nil)
  			Duel.SpecialSummon(sg, 0, tp, tp, false, false, POS_FACEUP)
  		else
  			Duel.Draw(tp, 3, REASON_EFFECT)
  			Duel.BreakEffect()
  			Duel.DiscardHand(tp, aux.TRUE, 2, 2, REASON_EFFECT + REASON_DISCARD)
  		end
  	end
  end
  
  
source_text: No.7
  レベル7モンスター×3
  1:このカードのX素材を1つ取り除いて発動できる。
  サイコロを2回振る。
  このカードの攻撃力は、相手ターン終了時まで、大きい方の出た目×700になる。
  出た目の合計が7だった場合、さらに以下の効果から1つを選んで適用する。
  ●このカード以外のフィールドのカードを全て墓地へ送る。
  ●手札または自分・相手の墓地からモンスター1体を選んで自分フィールドに特殊召喚する。
  ●自分はデッキから3枚ドローし、その後手札を2枚選んで捨てる。
target_text: -- No.7
  local s, id, o = GetID()
  function s.initial_effect(c)
  	--xyz summon
  	aux.AddXyzProcedure(c, nil, 7, 3)
  	c:EnableReviveLimit()
  	--destroy
  	local e1 = Effect.CreateEffect(c)
  	e1:SetDescription(aux.Stringid(id, 0))
  	e1:SetCategory(CATEGORY_DICE | CATEGORY_ATKCHANGE | CATEGORY_DRAW | CATEGORY_SPECIAL_SUMMON | CATEGORY_TOGRAVE)
  	e1:SetType(EFFECT_TYPE_IGNITION)
  	e1:SetRange(LOCATION_MZONE)
  	e1:SetCost(s.cost)
  	e1:SetTarget(s.target)
  	e1:SetOperation(s.operation)
  	c:RegisterEffect(e1)
  end
  aux.xyz_number[id] = 7
  function s.cost(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return e:GetHandler():CheckRemoveOverlayCard(tp, 1, REASON_COST)
  	end
  	e:GetHandler():RemoveOverlayCard(tp, 1, 1, REASON_COST)
  end
  function s.target(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return true
  	end
  	Duel.SetOperationInfo(0, CATEGORY_DICE, nil, 0, tp, 2)
  end
  function s.spfilter(c, e, tp)
  	return c:IsCanBeSpecialSummoned(e, 0, tp, false, false)
  end
  function s.operation(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	local d1, d2 = Duel.TossDice(tp, 2)
  	if d2 > d1 then
  		d1, d2 = d2, d1
  	end
  	local e1 = Effect.CreateEffect(c)
  	e1:SetType(EFFECT_TYPE_SINGLE)
  	e1:SetCode(EFFECT_SET_ATTACK_FINAL)
  	e1:SetValue(d1 * 700)
  	e1:SetReset(RESET_EVENT + RESETS_STANDARD + RESET_PHASE + PHASE_END, 2)
  	c:RegisterEffect(e1)
  	if d1 + d2 == 7 then
  		local b1 = Duel.GetFieldGroupCount(tp, LOCATION_ONFIELD, LOCATION_ONFIELD) > 1
  		local spg = Duel.GetMatchingGroup(aux.NecroValleyFilter(s.spfilter), tp, LOCATION_HAND + LOCATION_GRAVE, LOCATION_GRAVE, nil, e, tp)
  		local b2 = Duel.GetLocationCount(tp, LOCATION_MZONE) > 0 and spg:GetCount() > 0
  		local b3 = Duel.IsPlayerCanDraw(tp, 3)
  		if not b1 and not b2 and not b3 then
  			return
  		end
  		local op = 0
  		if b1 and not b2 and not b3 then
  			op = Duel.SelectOption(tp, aux.Stringid(id, 1))
  		elseif not b1 and b2 and not b3 then
  			op = Duel.SelectOption(tp, aux.Stringid(id, 2)) + 1
  		elseif not b1 and not b2 and b3 then
  			op = Duel.SelectOption(tp, aux.Stringid(id, 3)) + 2
  		elseif b1 and b2 and not b3 then
  			op = Duel.SelectOption(tp, aux.Stringid(id, 1), aux.Stringid(id, 2))
  		elseif b1 and not b2 and b3 then
  			op = Duel.SelectOption(tp, aux.Stringid(id, 1), aux.Stringid(id, 3))
  			if op == 1 then
  				op = 2
  			end
  		elseif not b1 and b2 and b3 then
  			op = Duel.SelectOption(tp, aux.Stringid(id, 2), aux.Stringid(id, 3)) + 1
  		else
  			op = Duel.SelectOption(tp, aux.Stringid(id, 1), aux.Stringid(id, 2), aux.Stringid(id, 3))
  		end
  		if op == 0 then
  			local g = Duel.GetMatchingGroup(aux.TRUE, tp, LOCATION_ONFIELD, LOCATION_ONFIELD, aux.ExceptThisCard(e))
  			Duel.SendtoGrave(g, REASON_EFFECT)
  		elseif op == 1 then
  			Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_SPSUMMON)
  			local sg = spg:Select(tp, 1, 1, nil)
  			Duel.SpecialSummon(sg, 0, tp, tp, false, false, POS_FACEUP)
  		else
  			Duel.Draw(tp, 3, REASON_EFFECT)
  			Duel.BreakEffect()
  			Duel.DiscardHand(tp, aux.TRUE, 2, 2, REASON_EFFECT + REASON_DISCARD)
  		end
  	end
  end
  
  