Commit 03a18df0 authored by nekrozar's avatar nekrozar

fix Forbidden Dark Contract with the Swamp King

Q.

「黒曜岩竜」がモンスターゾーンに存在する場合に、自分が「魔神王の禁断契約書」の①の効果で「DDD壊薙王アビス・ラグナロク」を特殊召喚した場合、「魔神王の禁断契約書」は①の効果で特殊召喚した「DDD壊薙王アビス・ラグナロク」を対象に取り続けますか?
(その「魔神王の禁断契約書」は「黒曜岩竜」の効果で無効化され破壊されますか?)
A.

「魔神王の禁断契約書」の『①』の効果は、対象を取る効果ではありませんので、「黒曜岩竜」の『自分フィールド上の闇属性モンスター1体を対象にする魔法・罠カードの効果を無効にし破壊する』効果は適用されません。
parent 08e0a5b0
...@@ -37,6 +37,10 @@ function c10833828.initial_effect(c) ...@@ -37,6 +37,10 @@ function c10833828.initial_effect(c)
e4:SetTarget(c10833828.damtg) e4:SetTarget(c10833828.damtg)
e4:SetOperation(c10833828.damop) e4:SetOperation(c10833828.damop)
c:RegisterEffect(e4) c:RegisterEffect(e4)
local ng=Group.CreateGroup()
ng:KeepAlive()
e2:SetLabelObject(ng)
e3:SetLabelObject(ng)
end end
function c10833828.spfilter1(c,e,tp) function c10833828.spfilter1(c,e,tp)
return c:IsSetCard(0x10af) and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP_DEFENSE) return c:IsSetCard(0x10af) and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP_DEFENSE)
...@@ -65,36 +69,53 @@ function c10833828.spop1(e,tp,eg,ep,ev,re,r,rp) ...@@ -65,36 +69,53 @@ function c10833828.spop1(e,tp,eg,ep,ev,re,r,rp)
e2:SetCode(EFFECT_DISABLE_EFFECT) e2:SetCode(EFFECT_DISABLE_EFFECT)
e2:SetReset(RESET_EVENT+RESETS_STANDARD) e2:SetReset(RESET_EVENT+RESETS_STANDARD)
tc:RegisterEffect(e2,true) tc:RegisterEffect(e2,true)
c:SetCardTarget(tc) local sg=e:GetLabelObject()
if c:GetFlagEffect(10833828)==0 then
sg:Clear()
c:RegisterFlagEffect(10833828,RESET_EVENT+RESETS_STANDARD,0,1)
end
sg:AddCard(tc)
tc:CreateRelation(c,RESET_EVENT+RESETS_STANDARD)
end end
Duel.SpecialSummonComplete() Duel.SpecialSummonComplete()
end end
function c10833828.spfilter2(c,e) function c10833828.spfilter2(c,e)
return not c:IsImmuneToEffect(e) return not c:IsImmuneToEffect(e)
end end
function c10833828.spfilter3(c,e,tp,m,g,f,chkf) function c10833828.spfilter3(c,e,tp,m,f,chkf)
return c:IsType(TYPE_FUSION) and c:IsRace(RACE_FIEND) and (not f or f(c)) return c:IsType(TYPE_FUSION) and c:IsRace(RACE_FIEND) and (not f or f(c))
and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and g:IsExists(c10833828.spfilter4,1,nil,m,c,chkf) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf)
end
function c10833828.spfilter4(c,tc)
return c:IsRelateToCard(tc)
end end
function c10833828.spfilter4(c,m,fusc,chkf) function c10833828.fcheck1(g)
return fusc:CheckFusionMaterial(m,c,chkf) return function(tp,sg,fc)
return sg:IsExists(c10833828.fcheck2,1,nil,g)
end
end
function c10833828.fcheck2(c,g)
return g:IsContains(c)
end end
function c10833828.sptg2(e,tp,eg,ep,ev,re,r,rp,chk) function c10833828.sptg2(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then if chk==0 then
local g=e:GetHandler():GetCardTarget():Filter(Card.IsControler,nil,tp) local c=e:GetHandler()
if g:GetCount()==0 then return false end local g=e:GetLabelObject():Filter(c10833828.spfilter4,nil,c)
if c:GetFlagEffect(10833828)==0 or g:GetCount()==0 then return false end
local chkf=tp local chkf=tp
local mg1=Duel.GetFusionMaterial(tp) local mg1=Duel.GetFusionMaterial(tp)
local res=Duel.IsExistingMatchingCard(c10833828.spfilter3,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,g,nil,chkf) aux.FCheckAdditional=c10833828.fcheck1(g)
local res=Duel.IsExistingMatchingCard(c10833828.spfilter3,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf)
if not res then if not res then
local ce=Duel.GetChainMaterial(tp) local ce=Duel.GetChainMaterial(tp)
if ce~=nil then if ce~=nil then
local fgroup=ce:GetTarget() local fgroup=ce:GetTarget()
local mg2=fgroup(ce,e,tp) local mg2=fgroup(ce,e,tp)
local mf=ce:GetValue() local mf=ce:GetValue()
res=Duel.IsExistingMatchingCard(c10833828.spfilter3,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,g,mf,chkf) res=Duel.IsExistingMatchingCard(c10833828.spfilter3,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf)
end end
end end
aux.FCheckAdditional=nil
return res return res
end end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA)
...@@ -102,13 +123,13 @@ function c10833828.sptg2(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -102,13 +123,13 @@ function c10833828.sptg2(e,tp,eg,ep,ev,re,r,rp,chk)
end end
function c10833828.spop2(e,tp,eg,ep,ev,re,r,rp) function c10833828.spop2(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
if not c:IsRelateToEffect(e) then return end if not c:IsRelateToEffect(e) or c:GetFlagEffect(10833828)==0 then return end
local g=c:GetCardTarget():Filter(Card.IsControler,nil,tp) local g=e:GetLabelObject():Filter(c10833828.spfilter4,nil,e:GetHandler())
g:Remove(Card.IsImmuneToEffect,nil,e) if g:GetCount()==0 then return end
if g:GetCount()==0 then return false end
local chkf=tp local chkf=tp
local mg1=Duel.GetFusionMaterial(tp):Filter(c10833828.spfilter2,nil,e) local mg1=Duel.GetFusionMaterial(tp):Filter(c10833828.spfilter2,nil,e)
local sg1=Duel.GetMatchingGroup(c10833828.spfilter3,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,g,nil,chkf) aux.FCheckAdditional=c10833828.fcheck1(g)
local sg1=Duel.GetMatchingGroup(c10833828.spfilter3,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf)
local mg2=nil local mg2=nil
local sg2=nil local sg2=nil
local ce=Duel.GetChainMaterial(tp) local ce=Duel.GetChainMaterial(tp)
...@@ -116,7 +137,7 @@ function c10833828.spop2(e,tp,eg,ep,ev,re,r,rp) ...@@ -116,7 +137,7 @@ function c10833828.spop2(e,tp,eg,ep,ev,re,r,rp)
local fgroup=ce:GetTarget() local fgroup=ce:GetTarget()
mg2=fgroup(ce,e,tp) mg2=fgroup(ce,e,tp)
local mf=ce:GetValue() local mf=ce:GetValue()
sg2=Duel.GetMatchingGroup(c10833828.spfilter3,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,g,mf,chkf) sg2=Duel.GetMatchingGroup(c10833828.spfilter3,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf)
end end
if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then
local sg=sg1:Clone() local sg=sg1:Clone()
...@@ -125,22 +146,19 @@ function c10833828.spop2(e,tp,eg,ep,ev,re,r,rp) ...@@ -125,22 +146,19 @@ function c10833828.spop2(e,tp,eg,ep,ev,re,r,rp)
local tg=sg:Select(tp,1,1,nil) local tg=sg:Select(tp,1,1,nil)
local tc=tg:GetFirst() local tc=tg:GetFirst()
if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf)
local ec=g:FilterSelect(tp,c10833828.spfilter4,1,1,nil,mg1,tc,chkf):GetFirst()
local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,ec,chkf)
tc:SetMaterial(mat1) tc:SetMaterial(mat1)
Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION)
Duel.BreakEffect() Duel.BreakEffect()
Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP)
else else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf)
local ec=g:FilterSelect(tp,c10833828.spfilter4,1,1,nil,mg2,tc,chkf):GetFirst()
local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,ec,chkf)
local fop=ce:GetOperation() local fop=ce:GetOperation()
fop(ce,e,tp,tc,mat2) fop(ce,e,tp,tc,mat2)
end end
tc:CompleteProcedure() tc:CompleteProcedure()
end end
aux.FCheckAdditional=nil
end end
function c10833828.damcon(e,tp,eg,ep,ev,re,r,rp) function c10833828.damcon(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetTurnPlayer()==tp return Duel.GetTurnPlayer()==tp
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment