Commit 442abffe authored by Huangnan's avatar Huangnan

fix

parent 82b54184
Pipeline #41546 failed with stages
in 4 minutes and 21 seconds
......@@ -79,31 +79,34 @@ function s.eftg(e,c)
return c:IsCode(12866600)
end
function s.tgcon(e,tp,eg,ep,ev,re,r,rp)
return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) and rp==1-tp and re:IsActiveType(TYPE_MONSTER) and ((re:GetHandler():IsAttribute(ATTRIBUTE_DARK) and Duel.GetFlagEffect(tp,id)==0)
or (re:GetHandler():IsAttribute(ATTRIBUTE_EARTH) and Duel.GetFlagEffect(tp,id+o)==0)
or (re:GetHandler():IsAttribute(ATTRIBUTE_WATER) and Duel.GetFlagEffect(tp,id+o*2)==0)
or (re:GetHandler():IsAttribute(ATTRIBUTE_FIRE) and Duel.GetFlagEffect(tp,id+o*3)==0)
or (re:GetHandler():IsAttribute(ATTRIBUTE_WIND) and Duel.GetFlagEffect(tp,id+o*4)==0))
local p=e:GetHandlerPlayer()
return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) and rp==1-p and re:IsActiveType(TYPE_MONSTER) and
((re:GetHandler():IsAttribute(ATTRIBUTE_DARK) and Duel.GetFlagEffect(p,id)==0)
or (re:GetHandler():IsAttribute(ATTRIBUTE_EARTH) and Duel.GetFlagEffect(p,id+o)==0)
or (re:GetHandler():IsAttribute(ATTRIBUTE_WATER) and Duel.GetFlagEffect(p,id+o*2)==0)
or (re:GetHandler():IsAttribute(ATTRIBUTE_FIRE) and Duel.GetFlagEffect(p,id+o*3)==0)
or (re:GetHandler():IsAttribute(ATTRIBUTE_WIND) and Duel.GetFlagEffect(p,id+o*4)==0))
end
function s.tgtg(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
local rc=re:GetHandler()
local p=e:GetHandlerPlayer()
if not rc:IsRelateToEffect(re) then return end
local proc=rc:IsCode(12866705,12866890) and c:IsCode(12866600)
local b1=rc:IsAbleToGrave() and not rc:IsLocation(LOCATION_GRAVE+LOCATION_REMOVED)
local b2=(Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and (rc:IsCanBeSpecialSummoned(e,0,tp,false,false)) or rc:IsCanBeSpecialSummoned(e,0,tp,proc,proc))
local b2=(Duel.GetLocationCount(p,LOCATION_MZONE)>0
and (rc:IsCanBeSpecialSummoned(e,0,tp,false,false)) or rc:IsCanBeSpecialSummoned(e,0,p,proc,proc))
if chk==0 then return b1 or b2 end
if re:GetHandler():IsAttribute(ATTRIBUTE_DARK) then
Duel.RegisterFlagEffect(tp,id,RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1)
Duel.RegisterFlagEffect(p,id,RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1)
elseif re:GetHandler():IsAttribute(ATTRIBUTE_EARTH) then
Duel.RegisterFlagEffect(tp,id+o,RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1)
Duel.RegisterFlagEffect(p,id+o,RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1)
elseif re:GetHandler():IsAttribute(ATTRIBUTE_WATER) then
Duel.RegisterFlagEffect(tp,id+o*2,RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1)
Duel.RegisterFlagEffect(p,id+o*2,RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1)
elseif re:GetHandler():IsAttribute(ATTRIBUTE_FIRE) then
Duel.RegisterFlagEffect(tp,id+o*3,RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1)
Duel.RegisterFlagEffect(p,id+o*3,RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1)
elseif re:GetHandler():IsAttribute(ATTRIBUTE_WIND) then
Duel.RegisterFlagEffect(tp,id+o*4,RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1)
Duel.RegisterFlagEffect(p,id+o*4,RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1)
end
Duel.SetTargetCard(rc)
if rc:IsLocation(LOCATION_GRAVE) then
......@@ -115,13 +118,14 @@ function s.tgtg(e,tp,eg,ep,ev,re,r,rp,chk)
end
function s.tgop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_OPERATECARD)
local p=e:GetHandlerPlayer()
Duel.Hint(HINT_SELECTMSG,p,HINTMSG_OPERATECARD)
local rc=re:GetHandler()
if rc:IsRelateToEffect(re) then
local tc=Duel.GetFirstTarget()
local proc=tc:IsCode(12866705,12866890) and c:IsCode(12866600)
local b1=tc:IsAbleToGrave() and not tc:IsLocation(LOCATION_GRAVE+LOCATION_REMOVED)
local b2=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and (tc:IsCanBeSpecialSummoned(e,0,tp,false,false) or tc:IsCanBeSpecialSummoned(e,0,tp,proc,proc)) and aux.NecroValleyFilter()(tc)
local b2=Duel.GetLocationCount(p,LOCATION_MZONE)>0 and (tc:IsCanBeSpecialSummoned(e,0,p,false,false) or tc:IsCanBeSpecialSummoned(e,0,p,proc,proc)) and aux.NecroValleyFilter()(tc)
local off=1
local ops={}
local opval={}
......@@ -135,12 +139,12 @@ function s.tgop(e,tp,eg,ep,ev,re,r,rp)
opval[off]=1
off=off+1
end
local op=Duel.SelectOption(tp,table.unpack(ops))+1
local op=Duel.SelectOption(p,table.unpack(ops))+1
local sel=opval[op]
if sel==0 then
Duel.SendtoGrave(tc,REASON_EFFECT)
elseif sel==1 then
Duel.SpecialSummon(tc,0,tp,tp,proc,proc,POS_FACEUP)
Duel.SpecialSummon(tc,0,p,p,proc,proc,POS_FACEUP)
if proc then tc:CompleteProcedure() end
end
end
......
--妮蒂亚
local s,id,o=GetID()
function s.initial_effect(c)
local e0=Effect.CreateEffect(c)
e0:SetType(EFFECT_TYPE_QUICK_O)
e0:SetCode(EVENT_FREE_CHAIN)
e0:SetHintTiming(0,TIMINGS_CHECK_MONSTER)
e0:SetRange(LOCATION_HAND)
e0:SetCountLimit(1,id)
e0:SetCost(s.cost)
e0:SetOperation(s.operation)
c:RegisterEffect(e0)
end
function s.filter(c)
return c:IsType(TYPE_COUNTER)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetTarget(s.target)
e1:SetOperation(s.operation)
e1:SetLabel(id)
c:RegisterEffect(e1)
end
function s.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsDiscardable() end
Duel.SendtoGrave(e:GetHandler(),REASON_COST+REASON_DISCARD)
function s.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetFlagEffect(tp,id)==0 end
end
function s.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local g=Duel.GetMatchingGroup(s.filter,tp,0xff,0,nil)
local g=Duel.GetMatchingGroup(Card.IsType,tp,0xff,0,nil,TYPE_COUNTER)
for tc in aux.Next(g) do
local e0=Effect.CreateEffect(c)
e0:SetType(EFFECT_TYPE_FIELD)
......@@ -36,18 +30,9 @@ function s.operation(e,tp,eg,ep,ev,re,r,rp)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_ADJUST)
e1:SetOperation(s.op1)
e1:SetOperation(s.op)
e1:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e1,tp)
local e2=e1:Clone()
e2:SetOperation(s.op2)
Duel.RegisterEffect(e2,tp)
local e3=e1:Clone()
e3:SetOperation(s.op3)
Duel.RegisterEffect(e3,tp)
local e4=e1:Clone()
e4:SetOperation(s.op4)
Duel.RegisterEffect(e4,tp)
end
function s.actarget(e,te,tp)
e:SetLabelObject(te)
......@@ -63,7 +48,7 @@ function s.costop(e,tp,eg,ep,ev,re,r,rp)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e1:SetCode(EVENT_CHAIN_SOLVED)
e1:SetCode(EVENT_CHAIN_SOLVING)
e1:SetCountLimit(1)
e1:SetCondition(function(e,tp,eg,ep,ev,re,r,rp) return ev==ev0 end)
e1:SetOperation(s.rsop)
......@@ -75,126 +60,28 @@ function s.costop(e,tp,eg,ep,ev,re,r,rp)
end
function s.rsop(e,tp,eg,ep,ev,re,r,rp)
local rc=re:GetHandler()
if e:GetCode()==EVENT_CHAIN_SOLVED and rc:IsRelateToEffect(re) then
if e:GetCode()==EVENT_CHAIN_SOLVING and rc:IsRelateToEffect(re) then
rc:SetStatus(STATUS_EFFECT_ENABLED,true)
if not rc:IsType(TYPE_CONTINUOUS+TYPE_EQUIP+TYPE_PENDULUM) and not rc:IsHasEffect(EFFECT_REMAIN_FIELD) then rc:CancelToGrave(false) end
end
if e:GetCode()==EVENT_CHAIN_NEGATED and rc:IsRelateToEffect(re) and not (rc:IsOnField() and rc:IsFacedown()) then
rc:SetStatus(STATUS_ACTIVATE_DISABLED,true)
rc:CancelToGrave(false)
end
end
function s.op1(e,tp,eg,ep,ev,re,r,rp)
local sg=Group.__add(Duel.GetMatchingGroup(s.filter,tp,0xff,0,nil),Duel.GetOverlayGroup(tp,1,0))
function s.op(e,tp,eg,ep,ev,re,r,rp)
local sg=Duel.GetMatchingGroup(Card.IsType,tp,0xff,0,nil,TYPE_COUNTER)
local g=sg:Filter(function(c)return c:GetFlagEffect(id)==0 end,nil)
if #g==0 then return end
local cp={}
local f=Card.RegisterEffect
Card.RegisterEffect=function(tc,te,bool)
if te:GetType()&0x10==0x10 and (te:GetCode()==1027 or te:GetCode()==1002 or te:GetCode()==1012 or te:GetCode()==1130) then table.insert(cp,te:Clone()) end
return f(tc,te,bool)
end
for tc in aux.Next(g) do
tc:RegisterFlagEffect(id,RESET_PHASE+PHASE_END,0,1)
Duel.CreateToken(tc:GetOwner(),tc:GetOriginalCode())
local op={}
for _,v in pairs(cp) do
if not s.IsInTable(v:GetOperation(),op) then
v:SetDescription(aux.Stringid(id,0))
v:SetRange(LOCATION_DECK)
v:SetReset(RESET_PHASE+PHASE_END)
f(tc,v,true)
table.insert(op,v:GetOperation())
end
end
cp={}
end
Card.RegisterEffect=f
end
function s.op2(e,tp,eg,ep,ev,re,r,rp)
local sg=Group.__add(Duel.GetMatchingGroup(s.filter,tp,0xff,0,nil),Duel.GetOverlayGroup(tp,1,0))
local g=sg:Filter(function(c)return c:GetFlagEffect(id+o)==0 end,nil)
if #g==0 then return end
local cp={}
local f=Card.RegisterEffect
Card.RegisterEffect=function(tc,te,bool)
if te:GetType()&0x10==0x10 and te:GetCode()==1103 then table.insert(cp,te:Clone()) end
return f(tc,te,bool)
end
for tc in aux.Next(g) do
tc:RegisterFlagEffect(id+o,RESET_PHASE+PHASE_END,0,1)
Duel.CreateToken(tc:GetOwner(),tc:GetOriginalCode())
local op={}
for _,v in pairs(cp) do
if not s.IsInTable(v:GetOperation(),op) then
v:SetDescription(aux.Stringid(id,0))
v:SetRange(LOCATION_DECK)
v:SetReset(RESET_PHASE+PHASE_END)
f(tc,v,true)
table.insert(op,v:GetOperation())
end
end
cp={}
end
Card.RegisterEffect=f
end
function s.op3(e,tp,eg,ep,ev,re,r,rp)
local sg=Group.__add(Duel.GetMatchingGroup(s.filter,tp,0xff,0,nil),Duel.GetOverlayGroup(tp,1,0))
local g=sg:Filter(function(c)return c:GetFlagEffect(id+o*2)==0 end,nil)
if #g==0 then return end
local cp={}
local f=Card.RegisterEffect
Card.RegisterEffect=function(tc,te,bool)
if te:GetType()&0x10==0x10 and te:GetCode()==1104 then table.insert(cp,te:Clone()) end
return f(tc,te,bool)
end
for tc in aux.Next(g) do
tc:RegisterFlagEffect(id+o*2,RESET_PHASE+PHASE_END,0,1)
Duel.CreateToken(tc:GetOwner(),tc:GetOriginalCode())
local op={}
for _,v in pairs(cp) do
if not s.IsInTable(v:GetOperation(),op) then
v:SetDescription(aux.Stringid(id,0))
v:SetRange(LOCATION_DECK)
v:SetReset(RESET_PHASE+PHASE_END)
f(tc,v,true)
table.insert(op,v:GetOperation())
end
end
cp={}
end
Card.RegisterEffect=f
end
function s.op4(e,tp,eg,ep,ev,re,r,rp)
local sg=Group.__add(Duel.GetMatchingGroup(s.filter,tp,LOCATION_DECK,0,nil),Duel.GetOverlayGroup(tp,1,0))
local g=sg:Filter(function(c)return c:GetFlagEffect(id+o*3)==0 end,nil)
if #g==0 then return end
local cp={}
local f=Card.RegisterEffect
Card.RegisterEffect=function(tc,te,bool)
if te:GetType()&0x10==0x10 and te:GetCode()==1105 then table.insert(cp,te:Clone()) end
return f(tc,te,bool)
end
for tc in aux.Next(g) do
tc:RegisterFlagEffect(id+o*3,RESET_PHASE+PHASE_END,0,1)
Duel.CreateToken(tc:GetOwner(),tc:GetOriginalCode())
local op={}
for _,v in pairs(cp) do
if not s.IsInTable(v:GetOperation(),op) then
v:SetDescription(aux.Stringid(id,0))
v:SetRange(LOCATION_DECK)
v:SetReset(RESET_PHASE+PHASE_END)
f(tc,v,true)
table.insert(op,v:GetOperation())
end
end
cp={}
end
Card.RegisterEffect=f
end
function s.IsInTable(value,tbl)
for k,v in ipairs(tbl) do
if v == value then
return true
local le={tc:GetActivateEffect()}
for _,te in pairs(le) do
local e1=te:Clone()
e1:SetDescription(aux.Stringid(id,0))
e1:SetRange(LOCATION_DECK)
e1:SetReset(RESET_PHASE+PHASE_END)
tc:RegisterEffect(e1)
end
end
return false
end
\ No newline at end of file
......@@ -97,7 +97,7 @@ end
function cm.rmtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,0,LOCATION_GRAVE,1,nil) end
local g=Duel.SelectMatchingCard(tp,Card.IsAbleToRemove,tp,0,LOCATION_GRAVE,1,3,nil)
local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,0,LOCATION_GRAVE,1,3,nil)
Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,1-tp,LOCATION_GRAVE)
end
......
......@@ -121,7 +121,7 @@ function s.thop(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(s.thfilter2),tp,LOCATION_GRAVE+LOCATION_REMOVED,0,1,1,nil,e,tp)
if #g>0 then
local tc=g:GetFirst()
if not tc:IsType(TYPE_EFFECT) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
if not tc:IsType(TYPE_EFFECT) and tc:IsCanBeSpecialSummoned(e,0,tp,false,false)
and Duel.GetMZoneCount(tp)>0 and Duel.SelectEffectYesNo(tp,e:GetHandler(),aux.Stringid(id,4)) then
Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)
else
......
......@@ -88,16 +88,15 @@ function s.disop(e,tp,eg,ep,ev,re,r,rp)
table.insert(_G['e47330303'],ac)
else
_G['e47330303']={ac}
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e1:SetCode(EFFECT_CANNOT_ACTIVATE)
e1:SetTargetRange(0,1)
e1:SetCondition(s.accon)
e1:SetValue(s.aclimit)
Duel.RegisterEffect(e1,tp)
end
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e1:SetCode(EFFECT_CANNOT_ACTIVATE)
e1:SetTargetRange(0,1)
e1:SetCondition(s.accon)
e1:SetValue(s.aclimit)
e1:SetReset(RESET_PHASE+PHASE_END,2)
Duel.RegisterEffect(e1,tp)
end
function s.acfilter(c)
return c:IsCode(47330303) and c:IsFaceup()
......
......@@ -51,8 +51,8 @@ function cm.xyzop(e,tp,chk)
Duel.RegisterFlagEffect(tp,m,RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1)
end
function cm.checkop(e,tp,eg,ep,ev,re,r,rp)
Duel.RegisterFlagEffect(1,m,RESET_PHASE+PHASE_END,0,1)
Duel.RegisterFlagEffect(0,m,RESET_PHASE+PHASE_END,0,1)
Duel.RegisterFlagEffect(1,m+10000000,RESET_PHASE+PHASE_END,0,1)
Duel.RegisterFlagEffect(0,m+10000000,RESET_PHASE+PHASE_END,0,1)
end
function cm.spcon1(e,tp,eg,ep,ev,re,r,rp)
......
......@@ -110,7 +110,7 @@ function cm.chainlm(e,rp,tp)
end
function cm.spop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)>0 then
if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP_DEFENSE)>0 then
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_UPDATE_ATTACK)
......
......@@ -111,7 +111,7 @@ function s.op3(e,tp,eg,ep,ev,re,r,rp)
end
function s.con4(e,tp,eg,ep,ev,re,r,rp)
return Duel.IsChainNegatable(ev) and (re:IsActiveType(TYPE_MONSTER) or re:IsActiveType(TYPE_TRAP))
return Duel.IsChainNegatable(ev) and (re:IsActiveType(TYPE_MONSTER) or re:IsActiveType(TYPE_TRAP)) and ep==1-tp
end
function s.cost4(e,tp,eg,ep,ev,re,r,rp,chk)
......
......@@ -105,7 +105,7 @@ function s.tg2(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:GetActivateLocation()==LOCATION_HAND then
Duel.RegisterFlagEffect(tp,id,RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1)
Duel.RegisterFlagEffect(tp,id,RESET_PHASE+PHASE_END,0,1)
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(id,2))
e1:SetType(EFFECT_TYPE_FIELD)
......@@ -114,7 +114,7 @@ function s.tg2(e,tp,eg,ep,ev,re,r,rp,chk)
e1:SetTargetRange(1,0)
Duel.RegisterEffect(e1,tp)
elseif re:GetActivateLocation()==LOCATION_GRAVE then
Duel.RegisterFlagEffect(tp,id+o,RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1)
Duel.RegisterFlagEffect(tp,id+o,RESET_PHASE+PHASE_END,0,1)
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(id,3))
e1:SetType(EFFECT_TYPE_FIELD)
......@@ -122,7 +122,7 @@ function s.tg2(e,tp,eg,ep,ev,re,r,rp,chk)
e1:SetReset(RESET_PHASE+PHASE_END)
e1:SetTargetRange(1,0)
elseif re:GetActivateLocation()==LOCATION_REMOVED then
Duel.RegisterFlagEffect(tp,id+o*2,RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1)
Duel.RegisterFlagEffect(tp,id+o*2,RESET_PHASE+PHASE_END,0,1)
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(id,4))
e1:SetType(EFFECT_TYPE_FIELD)
......
......@@ -89,7 +89,7 @@ function s.con2(e,tp,eg,ep,ev,re,r,rp)
end
function s.cost2(e,tp,eg,ep,ev,re,r,rp,chk)
local g=GetMatchingGroup(s.f3,tp,LOCATION_HAND,0,nil)
local g=Duel.GetMatchingGroup(s.f3,tp,LOCATION_HAND,0,nil)
if chk==0 then return g:GetCount()>0 end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local ag=g:Select(tp,1,1,nil)
......
......@@ -79,7 +79,7 @@ function s.op2(e,tp,eg,ep,ev,re,r,rp)
if g1:GetCount()>0 then
Duel.ConfirmCards(tp,g1)
end
local g2=GetMatchingGroup(s.f5,tp,0,LOCATION_ONFIELD,nil)
local g2=Duel.GetMatchingGroup(s.f5,tp,0,LOCATION_ONFIELD,nil)
if g2:GetCount()>0 then
Duel.Destroy(g2,REASON_EFFECT)
end
......
......@@ -77,13 +77,13 @@ function s.op1(e,tp,eg,ep,ev,re,r,rp)
end
function s.tg3(e,tp,eg,ep,ev,re,r,rp,chk)
local g=Duel.GetMatchingGroup(s.f2,tp,LOCATION_HAND+LOCATION_GRAVE+LOCATION_REMOVED,0,nil)
local g=Duel.GetMatchingGroup(s.f2,tp,LOCATION_DECK+LOCATION_GRAVE+LOCATION_REMOVED,0,nil)
if chk==0 then return g:GetCount()>0 end
Duel.SetOperationInfo(0,CATEGORY_SEARCH,nil,1,tp,nil)
end
function s.op3(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetMatchingGroup(s.f2,tp,LOCATION_HAND+LOCATION_GRAVE+LOCATION_REMOVED,0,nil)
local g=Duel.GetMatchingGroup(s.f2,tp,LOCATION_DECK+LOCATION_GRAVE+LOCATION_REMOVED,0,nil)
if g:GetCount()>0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND)
local sg=g:Select(tp,1,1,nil)
......
......@@ -70,9 +70,9 @@ function c71401020.checktg(e,c)
return not c:IsPublic()
end
function c71401020.discon(e,tp,eg,ep,ev,re,r,rp)
local loc,code=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION,CHAININFO_TRIGGERING_CODE)
return e:GetHandler():IsDefensePos()
and re:IsActiveType(TYPE_MONSTER) and loc==LOCATION_ONFIELD and Duel.IsExistingMatchingCard(Card.IsCode,0,LOCATION_REMOVED,LOCATION_REMOVED,1,nil,code)
local code,ctrl=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_CODE,CHAININFO_TRIGGERING_CONTROLER)
return ctrl==1-tp and re:IsActiveType(TYPE_MONSTER)
and Duel.IsExistingMatchingCard(Card.IsCode,0,LOCATION_REMOVED,LOCATION_REMOVED,1,nil,code)
end
function c71401020.disop(e,tp,eg,ep,ev,re,r,rp)
Duel.NegateEffect(ev)
......@@ -117,9 +117,9 @@ function c71401020.op2(e,tp,eg,ep,ev,re,r,rp)
Duel.DisableShuffleCheck()
Duel.Remove(rg,POS_FACEDOWN,REASON_EFFECT)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISABLE)
local dg1=Duel.SelectMatchingCard(c71401020.filter2,tp,LOCATION_ONFIELD,0,ct,ct,nil)
local dg1=Duel.SelectMatchingCard(tp,c71401020.filter2,tp,LOCATION_ONFIELD,0,ct,ct,nil)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISABLE)
local dg2=Duel.SelectMatchingCard(c71401020.filter2,tp,0,LOCATION_ONFIELD,ct,ct,nil)
local dg2=Duel.SelectMatchingCard(tp,c71401020.filter2,tp,0,LOCATION_ONFIELD,ct,ct,nil)
dg1:Merge(dg2)
local c=e:GetHandler()
for tc in aux.Next(dg1) do
......
......@@ -23,6 +23,14 @@ function c71401021.initial_effect(c)
e1a:SetTargetRange(0xff,0xff)
e1a:SetTarget(c71401021.checktg)
c:RegisterEffect(e1a)
--disable
local e1b=Effect.CreateEffect(c)
e1b:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1b:SetCode(EVENT_CHAIN_SOLVING)
e1b:SetRange(LOCATION_MZONE)
e1b:SetCondition(c71401021.discon)
e1b:SetOperation(c71401021.disop)
c:RegisterEffect(e1b)
--place
local e2=Effect.CreateEffect(c)
e2:SetDescription(aux.Stringid(71401001,2))
......@@ -60,6 +68,13 @@ end
function c71401021.checktg(e,c)
return not c:IsPublic()
end
function c71401021.discon(e,tp,eg,ep,ev,re,r,rp)
local code,ctrl=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_CODE,CHAININFO_TRIGGERING_CONTROLER)
return ctrl==1-tp and re:IsActiveType(TYPE_SPELL+TYPE_TRAP) and Duel.IsExistingMatchingCard(Card.IsCode,0,LOCATION_REMOVED,LOCATION_REMOVED,1,nil,code)
end
function c71401021.disop(e,tp,eg,ep,ev,re,r,rp)
Duel.NegateEffect(ev)
end
function c71401021.op2(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if c:IsRelateToEffect(e) and not c:IsImmuneToEffect(e) and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 then
......@@ -81,8 +96,8 @@ function c71401021.op2(e,tp,eg,ep,ev,re,r,rp)
if bg:FilterCount(Card.IsAbleToRemove,nil,tp,POS_FACEDOWN,REASON_EFFECT)==ct and Duel.SelectYesNo(tp,aux.Stringid(71401021,0)) then
Duel.BreakEffect()
Duel.DisableShuffleCheck()
if Duel.Remove(tg,POS_FACEDOWN,REASON_EFFECT)==0 then return end
local e2=Effect.CreateEffect(e:GetHandler())
if Duel.Remove(bg,POS_FACEDOWN,REASON_EFFECT)==0 then return end
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET)
e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
......
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