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