ファイヤー・エジェクション
このカード名のカードは1ターンに1枚しか発動できない。
1:デッキから炎族モンスター1体を墓地へ送る。
この効果で「ヴォルカニック」モンスターを墓地へ送った場合、さらに以下の効果から1つを選んで適用できる。
●そのレベル×100ダメージを相手に与える。
●相手フィールドに「ボムトークン」(炎族・炎・星1・攻/守1000)1体を特殊召喚する。
このトークンが破壊された時にそのコントローラーは500ダメージを受ける。
local CARD_ID_0 = 11654068 --ボムトークン
local SETCARD_ID_0 = 0x32 --ヴォルカニック

local CARD_ID_0 = 11654068 --ボムトークン
local SETCARD_ID_0 = 0x32 --ヴォルカニック
local s, id, o = GetID()
function s.initial_effect(c)
	--Activate
	local e1 = Effect.CreateEffect(c)
	e1:SetCategory(CATEGORY_TOGRAVE + CATEGORY_DAMAGE + CATEGORY_DECKDES + CATEGORY_SPECIAL_SUMMON + CATEGORY_TOKEN)
	e1:SetType(EFFECT_TYPE_ACTIVATE)
	e1:SetCode(EVENT_FREE_CHAIN)
	e1:SetCountLimit(1, id + EFFECT_COUNT_CODE_OATH)
	e1:SetTarget(s.target)
	e1:SetOperation(s.activate)
	c:RegisterEffect(e1)
end
function s.tgfilter(c)
	return c:IsRace(RACE_PYRO) and c:IsAbleToGrave()
end
function s.target(e, tp, eg, ep, ev, re, r, rp, chk)
	if chk == 0 then
		return Duel.IsExistingMatchingCard(s.tgfilter, tp, LOCATION_DECK, 0, 1, nil)
	end
	Duel.SetOperationInfo(0, CATEGORY_TOGRAVE, nil, 1, tp, LOCATION_DECK)
end
function s.activate(e, tp, eg, ep, ev, re, r, rp)
	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_TOGRAVE)
	local g = Duel.SelectMatchingCard(tp, s.tgfilter, tp, LOCATION_DECK, 0, 1, 1, nil)
	local tc = g:GetFirst()
	if tc and Duel.SendtoGrave(tc, REASON_EFFECT) > 0 and tc:IsLocation(LOCATION_GRAVE) and tc:IsSetCard(SETCARD_ID_0) then
		local b1 = tc:GetLevel() > 0
		local b2 = Duel.GetLocationCount(1 - tp, LOCATION_MZONE, tp) > 0
			and Duel.IsPlayerCanSpecialSummonMonster(tp, id + 1, 0, TYPES_TOKEN_MONSTER, 1000, 1000, 1, RACE_PYRO, ATTRIBUTE_FIRE, POS_FACEUP, 1 - tp)
		local sel = aux.SelectFromOptions(tp, { b1, aux.Stringid(id, 0) }, { b2, aux.Stringid(id, 1) }, { true, aux.Stringid(id, 2) })
		if sel == 1 then
			Duel.BreakEffect()
			local val = tc:GetLevel() * 100
			Duel.Damage(1 - tp, val, REASON_EFFECT)
		elseif sel == 2 then
			Duel.BreakEffect()
			local token = Duel.CreateToken(tp, id + 1)
			if Duel.SpecialSummonStep(token, 0, tp, 1 - tp, false, false, POS_FACEUP) then
				local e1 = Effect.CreateEffect(e:GetHandler())
				e1:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_CONTINUOUS)
				e1:SetCode(EVENT_LEAVE_FIELD)
				e1:SetOperation(s.damop)
				token:RegisterEffect(e1, true)
			end
			Duel.SpecialSummonComplete()
		end
	end
end
function s.damop(e, tp, eg, ep, ev, re, r, rp)
	local c = e:GetHandler()
	if c:IsReason(REASON_DESTROY) then
		Duel.Damage(c:GetPreviousControler(), 500, REASON_EFFECT)
	end
	e:Reset()
end


ファイヤー・エジェクション
このカード名のカードは1ターンに1枚しか発動できない。
1:デッキから炎族モンスター1体を墓地へ送る。
この効果で「ヴォルカニック」モンスターを墓地へ送った場合、さらに以下の効果から1つを選んで適用できる。
●そのレベル×100ダメージを相手に与える。
●相手フィールドに「ボムトークン」(炎族・炎・星1・攻/守1000)1体を特殊召喚する。
このトークンが破壊された時にそのコントローラーは500ダメージを受ける。
-- ファイヤー・エジェクション
local CARD_ID_0 = 11654068 --ボムトークン
local SETCARD_ID_0 = 0x32 --ヴォルカニック
local s, id, o = GetID()
function s.initial_effect(c)
	--Activate
	local e1 = Effect.CreateEffect(c)
	e1:SetCategory(CATEGORY_TOGRAVE + CATEGORY_DAMAGE + CATEGORY_DECKDES + CATEGORY_SPECIAL_SUMMON + CATEGORY_TOKEN)
	e1:SetType(EFFECT_TYPE_ACTIVATE)
	e1:SetCode(EVENT_FREE_CHAIN)
	e1:SetCountLimit(1, id + EFFECT_COUNT_CODE_OATH)
	e1:SetTarget(s.target)
	e1:SetOperation(s.activate)
	c:RegisterEffect(e1)
end
function s.tgfilter(c)
	return c:IsRace(RACE_PYRO) and c:IsAbleToGrave()
end
function s.target(e, tp, eg, ep, ev, re, r, rp, chk)
	if chk == 0 then
		return Duel.IsExistingMatchingCard(s.tgfilter, tp, LOCATION_DECK, 0, 1, nil)
	end
	Duel.SetOperationInfo(0, CATEGORY_TOGRAVE, nil, 1, tp, LOCATION_DECK)
end
function s.activate(e, tp, eg, ep, ev, re, r, rp)
	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_TOGRAVE)
	local g = Duel.SelectMatchingCard(tp, s.tgfilter, tp, LOCATION_DECK, 0, 1, 1, nil)
	local tc = g:GetFirst()
	if tc and Duel.SendtoGrave(tc, REASON_EFFECT) > 0 and tc:IsLocation(LOCATION_GRAVE) and tc:IsSetCard(SETCARD_ID_0) then
		local b1 = tc:GetLevel() > 0
		local b2 = Duel.GetLocationCount(1 - tp, LOCATION_MZONE, tp) > 0
			and Duel.IsPlayerCanSpecialSummonMonster(tp, id + 1, 0, TYPES_TOKEN_MONSTER, 1000, 1000, 1, RACE_PYRO, ATTRIBUTE_FIRE, POS_FACEUP, 1 - tp)
		local sel = aux.SelectFromOptions(tp, { b1, aux.Stringid(id, 0) }, { b2, aux.Stringid(id, 1) }, { true, aux.Stringid(id, 2) })
		if sel == 1 then
			Duel.BreakEffect()
			local val = tc:GetLevel() * 100
			Duel.Damage(1 - tp, val, REASON_EFFECT)
		elseif sel == 2 then
			Duel.BreakEffect()
			local token = Duel.CreateToken(tp, id + 1)
			if Duel.SpecialSummonStep(token, 0, tp, 1 - tp, false, false, POS_FACEUP) then
				local e1 = Effect.CreateEffect(e:GetHandler())
				e1:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_CONTINUOUS)
				e1:SetCode(EVENT_LEAVE_FIELD)
				e1:SetOperation(s.damop)
				token:RegisterEffect(e1, true)
			end
			Duel.SpecialSummonComplete()
		end
	end
end
function s.damop(e, tp, eg, ep, ev, re, r, rp)
	local c = e:GetHandler()
	if c:IsReason(REASON_DESTROY) then
		Duel.Damage(c:GetPreviousControler(), 500, REASON_EFFECT)
	end
	e:Reset()
end

