神の警告
1:2000LPを払って以下の効果を発動できる。
●モンスターを特殊召喚する効果を含む、モンスターの効果・魔法・罠カードが発動した時に発動できる。
その発動を無効にし破壊する。
●自分か相手がモンスターを召喚・反転召喚・特殊召喚する際に発動できる。
それを無効にし、そのモンスターを破壊する。
local s, id, o = GetID()
function s.initial_effect(c)
	--Activate(summon)
	local e1 = Effect.CreateEffect(c)
	e1:SetCategory(CATEGORY_DISABLE_SUMMON + CATEGORY_DESTROY)
	e1:SetType(EFFECT_TYPE_ACTIVATE)
	e1:SetCode(EVENT_SUMMON)
	e1:SetCondition(aux.NegateSummonCondition)
	e1:SetCost(s.cost1)
	e1:SetTarget(s.target1)
	e1:SetOperation(s.activate1)
	c:RegisterEffect(e1)
	local e2 = e1:Clone()
	e2:SetCode(EVENT_FLIP_SUMMON)
	c:RegisterEffect(e2)
	local e3 = e1:Clone()
	e3:SetCode(EVENT_SPSUMMON)
	c:RegisterEffect(e3)
	--Activate(effect)
	local e4 = Effect.CreateEffect(c)
	e4:SetCategory(CATEGORY_NEGATE + CATEGORY_DESTROY)
	e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP + EFFECT_FLAG_DAMAGE_CAL)
	e4:SetType(EFFECT_TYPE_ACTIVATE)
	e4:SetCode(EVENT_CHAINING)
	e4:SetCondition(s.condition2)
	e4:SetCost(s.cost2)
	e4:SetTarget(s.target2)
	e4:SetOperation(s.activate2)
	c:RegisterEffect(e4)
end
function s.cost1(e, tp, eg, ep, ev, re, r, rp, chk)
	if chk == 0 then
		return Duel.CheckLPCost(tp, 2000)
	else
		Duel.PayLPCost(tp, 2000)
	end
end
function s.target1(e, tp, eg, ep, ev, re, r, rp, chk)
	if chk == 0 then
		return true
	end
	Duel.SetOperationInfo(0, CATEGORY_DISABLE_SUMMON, eg, eg:GetCount(), 0, 0)
	Duel.SetOperationInfo(0, CATEGORY_DESTROY, eg, eg:GetCount(), 0, 0)
end
function s.activate1(e, tp, eg, ep, ev, re, r, rp)
	Duel.NegateSummon(eg)
	Duel.Destroy(eg, REASON_EFFECT)
end
function s.condition2(e, tp, eg, ep, ev, re, r, rp)
	if not Duel.IsChainNegatable(ev) then
		return false
	end
	if not re:IsActiveType(TYPE_MONSTER) and not re:IsHasType(EFFECT_TYPE_ACTIVATE) then
		return false
	end
	return re:IsHasCategory(CATEGORY_SPECIAL_SUMMON)
end
function s.cost2(e, tp, eg, ep, ev, re, r, rp, chk)
	if chk == 0 then
		return Duel.CheckLPCost(tp, 2000)
	else
		Duel.PayLPCost(tp, 2000)
	end
end
function s.target2(e, tp, eg, ep, ev, re, r, rp, chk)
	if chk == 0 then
		return true
	end
	Duel.SetOperationInfo(0, CATEGORY_NEGATE, eg, 1, 0, 0)
	if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then
		Duel.SetOperationInfo(0, CATEGORY_DESTROY, eg, 1, 0, 0)
	end
end
function s.activate2(e, tp, eg, ep, ev, re, r, rp)
	if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then
		Duel.Destroy(eg, REASON_EFFECT)
	end
end


神の警告
1:2000LPを払って以下の効果を発動できる。
●モンスターを特殊召喚する効果を含む、モンスターの効果・魔法・罠カードが発動した時に発動できる。
その発動を無効にし破壊する。
●自分か相手がモンスターを召喚・反転召喚・特殊召喚する際に発動できる。
それを無効にし、そのモンスターを破壊する。
-- 神の警告
local s, id, o = GetID()
function s.initial_effect(c)
	--Activate(summon)
	local e1 = Effect.CreateEffect(c)
	e1:SetCategory(CATEGORY_DISABLE_SUMMON + CATEGORY_DESTROY)
	e1:SetType(EFFECT_TYPE_ACTIVATE)
	e1:SetCode(EVENT_SUMMON)
	e1:SetCondition(aux.NegateSummonCondition)
	e1:SetCost(s.cost1)
	e1:SetTarget(s.target1)
	e1:SetOperation(s.activate1)
	c:RegisterEffect(e1)
	local e2 = e1:Clone()
	e2:SetCode(EVENT_FLIP_SUMMON)
	c:RegisterEffect(e2)
	local e3 = e1:Clone()
	e3:SetCode(EVENT_SPSUMMON)
	c:RegisterEffect(e3)
	--Activate(effect)
	local e4 = Effect.CreateEffect(c)
	e4:SetCategory(CATEGORY_NEGATE + CATEGORY_DESTROY)
	e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP + EFFECT_FLAG_DAMAGE_CAL)
	e4:SetType(EFFECT_TYPE_ACTIVATE)
	e4:SetCode(EVENT_CHAINING)
	e4:SetCondition(s.condition2)
	e4:SetCost(s.cost2)
	e4:SetTarget(s.target2)
	e4:SetOperation(s.activate2)
	c:RegisterEffect(e4)
end
function s.cost1(e, tp, eg, ep, ev, re, r, rp, chk)
	if chk == 0 then
		return Duel.CheckLPCost(tp, 2000)
	else
		Duel.PayLPCost(tp, 2000)
	end
end
function s.target1(e, tp, eg, ep, ev, re, r, rp, chk)
	if chk == 0 then
		return true
	end
	Duel.SetOperationInfo(0, CATEGORY_DISABLE_SUMMON, eg, eg:GetCount(), 0, 0)
	Duel.SetOperationInfo(0, CATEGORY_DESTROY, eg, eg:GetCount(), 0, 0)
end
function s.activate1(e, tp, eg, ep, ev, re, r, rp)
	Duel.NegateSummon(eg)
	Duel.Destroy(eg, REASON_EFFECT)
end
function s.condition2(e, tp, eg, ep, ev, re, r, rp)
	if not Duel.IsChainNegatable(ev) then
		return false
	end
	if not re:IsActiveType(TYPE_MONSTER) and not re:IsHasType(EFFECT_TYPE_ACTIVATE) then
		return false
	end
	return re:IsHasCategory(CATEGORY_SPECIAL_SUMMON)
end
function s.cost2(e, tp, eg, ep, ev, re, r, rp, chk)
	if chk == 0 then
		return Duel.CheckLPCost(tp, 2000)
	else
		Duel.PayLPCost(tp, 2000)
	end
end
function s.target2(e, tp, eg, ep, ev, re, r, rp, chk)
	if chk == 0 then
		return true
	end
	Duel.SetOperationInfo(0, CATEGORY_NEGATE, eg, 1, 0, 0)
	if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then
		Duel.SetOperationInfo(0, CATEGORY_DESTROY, eg, 1, 0, 0)
	end
end
function s.activate2(e, tp, eg, ep, ev, re, r, rp)
	if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then
		Duel.Destroy(eg, REASON_EFFECT)
	end
end

