ヘル・パニッシャー
1:以下の効果から1つを選択して発動できる
(このカード名の以下の効果はそれぞれ1ターンに1度しか選択できない)。
●デッキから恐竜族・水属性モンスター1体を手札に加える。
相手フィールドにモンスターが存在する場合、さらに手札に加えたそのモンスターを特殊召喚できる。
●自分フィールドのモンスター1体をリリースして発動できる。
自分の手札・デッキ・墓地からレベル6以上の炎属性モンスター1体を特殊召喚する。
この効果で悪魔族以外のモンスターを特殊召喚した場合、そのモンスターの効果は無効化される。
local s, id, o = GetID()
function s.initial_effect(c)
	--Activate
	local e1 = Effect.CreateEffect(c)
	e1:SetDescription(aux.Stringid(id, 0))
	e1:SetCategory(CATEGORY_SPECIAL_SUMMON + CATEGORY_SEARCH + CATEGORY_TOHAND + CATEGORY_DECKDES)
	e1:SetType(EFFECT_TYPE_ACTIVATE)
	e1:SetCode(EVENT_FREE_CHAIN)
	e1:SetTarget(s.target)
	e1:SetOperation(s.activate)
	c:RegisterEffect(e1)
end
function s.costfilter(c, e, tp)
	return Duel.IsExistingMatchingCard(s.spfilter, tp, LOCATION_DECK + LOCATION_GRAVE + LOCATION_HAND, 0, 1, nil, e, tp) and Duel.GetMZoneCount(tp, c) > 0
end
function s.spfilter(c, e, tp)
	return c:IsAttribute(ATTRIBUTE_FIRE) and c:IsLevelAbove(6) and c:IsCanBeSpecialSummoned(e, 0, tp, false, false)
end
function s.thfilter(c)
	return c:IsAttribute(ATTRIBUTE_WATER) and c:IsRace(RACE_DINOSAUR) and c:IsAbleToHand()
end
function s.target(e, tp, eg, ep, ev, re, r, rp, chk)
	local b1 = Duel.IsExistingMatchingCard(s.thfilter, tp, LOCATION_DECK, 0, 1, nil) and (not e:IsCostChecked() or Duel.GetFlagEffect(tp, id) == 0)
	local b2 = not e:IsCostChecked() and Duel.GetLocationCount(tp, LOCATION_MZONE) > 0 and Duel.IsExistingMatchingCard(s.spfilter, tp, LOCATION_DECK + LOCATION_GRAVE + LOCATION_HAND, 0, 1, nil, e, tp)
		or Duel.CheckReleaseGroup(tp, s.costfilter, 1, nil, e, tp) and Duel.GetFlagEffect(tp, id + o) == 0
	if chk == 0 then
		return b1 or b2
	end
	local op = aux.SelectFromOptions(tp, { b1, aux.Stringid(id, 1), 1 }, { b2, aux.Stringid(id, 2), 2 })
	e:SetLabel(op)
	if op == 1 then
		if e:IsCostChecked() then
			e:SetCategory(CATEGORY_TOHAND + CATEGORY_SEARCH + CATEGORY_SPECIAL_SUMMON)
			Duel.RegisterFlagEffect(tp, id, RESET_PHASE + PHASE_END, 0, 1)
		end
		Duel.SetOperationInfo(0, CATEGORY_SEARCH + CATEGORY_TOHAND, nil, 1, tp, LOCATION_DECK)
	elseif op == 2 then
		if e:IsCostChecked() then
			local g = Duel.SelectReleaseGroup(tp, s.costfilter, 1, 1, nil, e, tp)
			Duel.Release(g, REASON_COST)
			e:SetCategory(CATEGORY_SPECIAL_SUMMON)
			Duel.RegisterFlagEffect(tp, id + o, RESET_PHASE + PHASE_END, 0, 1)
		end
		Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, nil, 1, tp, LOCATION_DECK + LOCATION_GRAVE + LOCATION_HAND)
	end
end
function s.activate(e, tp, eg, ep, ev, re, r, rp)
	if e:GetLabel() == 1 then
		Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_ATOHAND)
		local g = Duel.SelectMatchingCard(tp, s.thfilter, tp, LOCATION_DECK, 0, 1, 1, nil)
		if g:GetCount() > 0 then
			local tc = g:GetFirst()
			Duel.SendtoHand(tc, nil, REASON_EFFECT)
			Duel.ConfirmCards(1 - tp, tc)
			if
				Duel.GetFieldGroupCount(tp, 0, LOCATION_MZONE) > 0
				and Duel.GetLocationCount(tp, LOCATION_MZONE) > 0
				and tc:IsType(TYPE_MONSTER)
				and tc:IsCanBeSpecialSummoned(e, 0, tp, false, false)
				and Duel.SelectYesNo(tp, aux.Stringid(id, 3))
			then
				Duel.BreakEffect()
				Duel.SpecialSummon(tc, 0, tp, tp, false, false, POS_FACEUP)
			end
		end
	elseif e:GetLabel() == 2 then
		if Duel.GetLocationCount(tp, LOCATION_MZONE) <= 0 then
			return
		end
		Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_SPSUMMON)
		local g = Duel.SelectMatchingCard(tp, aux.NecroValleyFilter(s.spfilter), tp, LOCATION_DECK + LOCATION_GRAVE + LOCATION_HAND, 0, 1, 1, nil, e, tp)
		local tc = g:GetFirst()
		if tc and Duel.SpecialSummonStep(tc, 0, tp, tp, false, false, POS_FACEUP) ~= 0 and not tc:IsRace(RACE_FIEND) then
			local e1 = Effect.CreateEffect(e:GetHandler())
			e1:SetType(EFFECT_TYPE_SINGLE)
			e1:SetCode(EFFECT_DISABLE)
			e1:SetReset(RESET_EVENT + RESETS_STANDARD)
			tc:RegisterEffect(e1)
			local e2 = Effect.CreateEffect(e:GetHandler())
			e2:SetType(EFFECT_TYPE_SINGLE)
			e2:SetCode(EFFECT_DISABLE_EFFECT)
			e2:SetValue(RESET_TURN_SET)
			e2:SetReset(RESET_EVENT + RESETS_STANDARD)
			tc:RegisterEffect(e2)
		end
		Duel.SpecialSummonComplete()
	end
end


ヘル・パニッシャー
1:以下の効果から1つを選択して発動できる
(このカード名の以下の効果はそれぞれ1ターンに1度しか選択できない)。
●デッキから恐竜族・水属性モンスター1体を手札に加える。
相手フィールドにモンスターが存在する場合、さらに手札に加えたそのモンスターを特殊召喚できる。
●自分フィールドのモンスター1体をリリースして発動できる。
自分の手札・デッキ・墓地からレベル6以上の炎属性モンスター1体を特殊召喚する。
この効果で悪魔族以外のモンスターを特殊召喚した場合、そのモンスターの効果は無効化される。
-- ヘル・パニッシャー
local s, id, o = GetID()
function s.initial_effect(c)
	--Activate
	local e1 = Effect.CreateEffect(c)
	e1:SetDescription(aux.Stringid(id, 0))
	e1:SetCategory(CATEGORY_SPECIAL_SUMMON + CATEGORY_SEARCH + CATEGORY_TOHAND + CATEGORY_DECKDES)
	e1:SetType(EFFECT_TYPE_ACTIVATE)
	e1:SetCode(EVENT_FREE_CHAIN)
	e1:SetTarget(s.target)
	e1:SetOperation(s.activate)
	c:RegisterEffect(e1)
end
function s.costfilter(c, e, tp)
	return Duel.IsExistingMatchingCard(s.spfilter, tp, LOCATION_DECK + LOCATION_GRAVE + LOCATION_HAND, 0, 1, nil, e, tp) and Duel.GetMZoneCount(tp, c) > 0
end
function s.spfilter(c, e, tp)
	return c:IsAttribute(ATTRIBUTE_FIRE) and c:IsLevelAbove(6) and c:IsCanBeSpecialSummoned(e, 0, tp, false, false)
end
function s.thfilter(c)
	return c:IsAttribute(ATTRIBUTE_WATER) and c:IsRace(RACE_DINOSAUR) and c:IsAbleToHand()
end
function s.target(e, tp, eg, ep, ev, re, r, rp, chk)
	local b1 = Duel.IsExistingMatchingCard(s.thfilter, tp, LOCATION_DECK, 0, 1, nil) and (not e:IsCostChecked() or Duel.GetFlagEffect(tp, id) == 0)
	local b2 = not e:IsCostChecked() and Duel.GetLocationCount(tp, LOCATION_MZONE) > 0 and Duel.IsExistingMatchingCard(s.spfilter, tp, LOCATION_DECK + LOCATION_GRAVE + LOCATION_HAND, 0, 1, nil, e, tp)
		or Duel.CheckReleaseGroup(tp, s.costfilter, 1, nil, e, tp) and Duel.GetFlagEffect(tp, id + o) == 0
	if chk == 0 then
		return b1 or b2
	end
	local op = aux.SelectFromOptions(tp, { b1, aux.Stringid(id, 1), 1 }, { b2, aux.Stringid(id, 2), 2 })
	e:SetLabel(op)
	if op == 1 then
		if e:IsCostChecked() then
			e:SetCategory(CATEGORY_TOHAND + CATEGORY_SEARCH + CATEGORY_SPECIAL_SUMMON)
			Duel.RegisterFlagEffect(tp, id, RESET_PHASE + PHASE_END, 0, 1)
		end
		Duel.SetOperationInfo(0, CATEGORY_SEARCH + CATEGORY_TOHAND, nil, 1, tp, LOCATION_DECK)
	elseif op == 2 then
		if e:IsCostChecked() then
			local g = Duel.SelectReleaseGroup(tp, s.costfilter, 1, 1, nil, e, tp)
			Duel.Release(g, REASON_COST)
			e:SetCategory(CATEGORY_SPECIAL_SUMMON)
			Duel.RegisterFlagEffect(tp, id + o, RESET_PHASE + PHASE_END, 0, 1)
		end
		Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, nil, 1, tp, LOCATION_DECK + LOCATION_GRAVE + LOCATION_HAND)
	end
end
function s.activate(e, tp, eg, ep, ev, re, r, rp)
	if e:GetLabel() == 1 then
		Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_ATOHAND)
		local g = Duel.SelectMatchingCard(tp, s.thfilter, tp, LOCATION_DECK, 0, 1, 1, nil)
		if g:GetCount() > 0 then
			local tc = g:GetFirst()
			Duel.SendtoHand(tc, nil, REASON_EFFECT)
			Duel.ConfirmCards(1 - tp, tc)
			if
				Duel.GetFieldGroupCount(tp, 0, LOCATION_MZONE) > 0
				and Duel.GetLocationCount(tp, LOCATION_MZONE) > 0
				and tc:IsType(TYPE_MONSTER)
				and tc:IsCanBeSpecialSummoned(e, 0, tp, false, false)
				and Duel.SelectYesNo(tp, aux.Stringid(id, 3))
			then
				Duel.BreakEffect()
				Duel.SpecialSummon(tc, 0, tp, tp, false, false, POS_FACEUP)
			end
		end
	elseif e:GetLabel() == 2 then
		if Duel.GetLocationCount(tp, LOCATION_MZONE) <= 0 then
			return
		end
		Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_SPSUMMON)
		local g = Duel.SelectMatchingCard(tp, aux.NecroValleyFilter(s.spfilter), tp, LOCATION_DECK + LOCATION_GRAVE + LOCATION_HAND, 0, 1, 1, nil, e, tp)
		local tc = g:GetFirst()
		if tc and Duel.SpecialSummonStep(tc, 0, tp, tp, false, false, POS_FACEUP) ~= 0 and not tc:IsRace(RACE_FIEND) then
			local e1 = Effect.CreateEffect(e:GetHandler())
			e1:SetType(EFFECT_TYPE_SINGLE)
			e1:SetCode(EFFECT_DISABLE)
			e1:SetReset(RESET_EVENT + RESETS_STANDARD)
			tc:RegisterEffect(e1)
			local e2 = Effect.CreateEffect(e:GetHandler())
			e2:SetType(EFFECT_TYPE_SINGLE)
			e2:SetCode(EFFECT_DISABLE_EFFECT)
			e2:SetValue(RESET_TURN_SET)
			e2:SetReset(RESET_EVENT + RESETS_STANDARD)
			tc:RegisterEffect(e2)
		end
		Duel.SpecialSummonComplete()
	end
end

