Commit 13c1889e authored by DailyShana's avatar DailyShana

fix (40/80)

parent 084a91d2
...@@ -17,19 +17,58 @@ function c29951323.initial_effect(c) ...@@ -17,19 +17,58 @@ function c29951323.initial_effect(c)
e2:SetCountLimit(2) e2:SetCountLimit(2)
e2:SetValue(c29951323.valcon) e2:SetValue(c29951323.valcon)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--disable spsummon --spsummon limit
local e3=Effect.CreateEffect(c) local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_FIELD) e3:SetType(EFFECT_TYPE_FIELD)
e3:SetRange(LOCATION_MZONE) e3:SetRange(LOCATION_MZONE)
e3:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) e3:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON)
e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e3:SetTargetRange(1,0) e3:SetTargetRange(1,1)
e3:SetCondition(c29951323.spcon) e3:SetTarget(c29951323.limittg)
c:RegisterEffect(e3) c:RegisterEffect(e3)
local e4=e3:Clone() --counter
e4:SetTargetRange(0,1) local e4=Effect.CreateEffect(c)
e4:SetCondition(c29951323.spcon2) e4:SetType(EFFECT_TYPE_FIELD)
e4:SetCode(EFFECT_LEFT_SPSUMMON_COUNT)
e4:SetRange(LOCATION_SZONE)
e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e4:SetTargetRange(1,0)
e4:SetCondition(c29951323.countcon1)
e4:SetValue(c29951323.countval)
c:RegisterEffect(e4) c:RegisterEffect(e4)
local e5=e4:Clone()
e5:SetCondition(c29951323.countcon2)
e5:SetTargetRange(0,1)
c:RegisterEffect(e5)
if not c29951323.global_check then
c29951323.global_check=true
c29951323[0]=0
c29951323[1]=0
local ge1=Effect.CreateEffect(c)
ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
ge1:SetCode(EVENT_ATTACK_ANNOUNCE)
ge1:SetOperation(c29951323.checkop1)
Duel.RegisterEffect(ge1,0)
local ge2=ge1:Clone()
ge2:SetCode(EVENT_ATTACK_DISABLED)
ge2:SetOperation(c29951323.checkop2)
Duel.RegisterEffect(ge2,0)
local ge3=Effect.CreateEffect(c)
ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
ge3:SetCode(EVENT_PHASE_START+PHASE_DRAW)
ge3:SetOperation(c29951323.clear)
Duel.RegisterEffect(ge3,0)
end
end
function c29951323.checkop1(e,tp,eg,ep,ev,re,r,rp)
c29951323[ep]=c29951323[ep]+1
end
function c29951323.checkop2(e,tp,eg,ep,ev,re,r,rp)
c29951323[ep]=c29951323[ep]-1
end
function c29951323.clear(e,tp,eg,ep,ev,re,r,rp)
c29951323[0]=0
c29951323[1]=0
end end
function c29951323.splimit(e,se,sp,st) function c29951323.splimit(e,se,sp,st)
return se:IsHasType(EFFECT_TYPE_ACTIONS) and Duel.GetActivityCount(e:GetHandlerPlayer(),ACTIVITY_SPSUMMON)==0 return se:IsHasType(EFFECT_TYPE_ACTIONS) and Duel.GetActivityCount(e:GetHandlerPlayer(),ACTIVITY_SPSUMMON)==0
...@@ -38,11 +77,18 @@ end ...@@ -38,11 +77,18 @@ end
function c29951323.valcon(e,re,r,rp) function c29951323.valcon(e,re,r,rp)
return bit.band(r,REASON_BATTLE)~=0 return bit.band(r,REASON_BATTLE)~=0
end end
function c29951323.spcon(e,tp,eg,ep,ev,re,r,rp) function c29951323.limittg(e,c,tp)
return Duel.GetTurnPlayer()==tp if Duel.GetTurnPlayer()~=tp then return false end
and Duel.GetActivityCount(tp,ACTIVITY_SPSUMMON)>=Duel.GetActivityCount(tp,ACTIVITY_ATTACK) return Duel.GetActivityCount(tp,ACTIVITY_SPSUMMON)>=c29951323[tp]
end
function c29951323.countcon1(e)
return Duel.GetTurnPlayer()==e:GetHandlerPlayer()
end
function c29951323.countcon2(e)
return Duel.GetTurnPlayer()~=e:GetHandlerPlayer()
end end
function c29951323.spcon2(e,tp,eg,ep,ev,re,r,rp) function c29951323.countval(e,tp)
return Duel.GetTurnPlayer()~=tp local t1=Duel.GetActivityCount(tp,ACTIVITY_SPSUMMON)
and Duel.GetActivityCount(1-tp,ACTIVITY_SPSUMMON)>=Duel.GetActivityCount(1-tp,ACTIVITY_ATTACK) local t2=c29951323[tp]
if t1>=t2 then return 0 else return t2-t1 end
end end
...@@ -7,7 +7,7 @@ function c32134638.initial_effect(c) ...@@ -7,7 +7,7 @@ function c32134638.initial_effect(c)
e1:SetDescription(aux.Stringid(32134638,0)) e1:SetDescription(aux.Stringid(32134638,0))
e1:SetCategory(CATEGORY_DISABLE) e1:SetCategory(CATEGORY_DISABLE)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_CHAIN_SOLVING) e1:SetCode(EVENT_CHAIN_ACTIVATING)
e1:SetRange(LOCATION_PZONE) e1:SetRange(LOCATION_PZONE)
e1:SetCondition(c32134638.negcon) e1:SetCondition(c32134638.negcon)
e1:SetOperation(c32134638.negop) e1:SetOperation(c32134638.negop)
......
...@@ -13,18 +13,23 @@ function c33256280.initial_effect(c) ...@@ -13,18 +13,23 @@ function c33256280.initial_effect(c)
e1:SetOperation(c33256280.operation) e1:SetOperation(c33256280.operation)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
function c33256280.desfilter(c) function c33256280.desfilter(c,tp,ft)
return c:IsFaceup() and c:IsDestructable() if c:IsFacedown() or not c:IsDestructable() then return false end
if ft==0 and c:IsLocation(LOCATION_SZONE) and c:GetSequence()<5 then
return Duel.IsExistingMatchingCard(c33256280.filter,tp,LOCATION_DECK,0,1,nil,true)
else
return Duel.IsExistingMatchingCard(c33256280.filter,tp,LOCATION_DECK,0,1,nil,false)
end
end end
function c33256280.filter(c) function c33256280.filter(c,ignore)
return c:IsSetCard(0xe1) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsSSetable() return c:IsSetCard(0xe1) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsSSetable(ignore)
end end
function c33256280.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function c33256280.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c33256280.desfilter(chkc) and chkc~=e:GetHandler() end local ft=Duel.GetLocationCount(tp,LOCATION_SZONE)
if chk==0 then return Duel.IsExistingTarget(c33256280.desfilter,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c33256280.desfilter(chkc,ft) and chkc~=e:GetHandler() end
and Duel.IsExistingMatchingCard(c33256280.filter,tp,LOCATION_DECK,0,1,nil) end if chk==0 then return Duel.IsExistingTarget(c33256280.desfilter,tp,LOCATION_ONFIELD,0,1,e:GetHandler(),ft) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY)
local g=Duel.SelectTarget(tp,c33256280.desfilter,tp,LOCATION_ONFIELD,0,1,1,e:GetHandler()) local g=Duel.SelectTarget(tp,c33256280.desfilter,tp,LOCATION_ONFIELD,0,1,1,e:GetHandler(),ft)
Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0)
end end
function c33256280.operation(e,tp,eg,ep,ev,re,r,rp) function c33256280.operation(e,tp,eg,ep,ev,re,r,rp)
...@@ -32,7 +37,7 @@ function c33256280.operation(e,tp,eg,ep,ev,re,r,rp) ...@@ -32,7 +37,7 @@ function c33256280.operation(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget() local tc=Duel.GetFirstTarget()
if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 then if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SET) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SET)
local g=Duel.SelectMatchingCard(tp,c33256280.filter,tp,LOCATION_DECK,0,1,1,nil) local g=Duel.SelectMatchingCard(tp,c33256280.filter,tp,LOCATION_DECK,0,1,1,nil,false)
if g:GetCount()>0 then if g:GetCount()>0 then
Duel.SSet(tp,g:GetFirst()) Duel.SSet(tp,g:GetFirst())
Duel.ConfirmCards(1-tp,g) Duel.ConfirmCards(1-tp,g)
......
...@@ -39,19 +39,19 @@ end ...@@ -39,19 +39,19 @@ end
function c56562619.splimit(e,se,sp,st) function c56562619.splimit(e,se,sp,st)
return (se:IsActiveType(TYPE_MONSTER) and se:GetHandler():IsSetCard(0x2b)) or se:GetHandler():IsSetCard(0x61) return (se:IsActiveType(TYPE_MONSTER) and se:GetHandler():IsSetCard(0x2b)) or se:GetHandler():IsSetCard(0x61)
end end
function c56562619.c1filter(c) function c56562619.cfilter1(c)
return (c:IsLocation(LOCATION_HAND) or c:IsFaceup()) and c:IsType(TYPE_MONSTER) and c:IsSetCard(0x2b) and c:IsAbleToGraveAsCost() return (c:IsLocation(LOCATION_HAND) or c:IsFaceup()) and c:IsType(TYPE_MONSTER) and c:IsSetCard(0x2b) and c:IsAbleToGraveAsCost()
end end
function c56562619.c2filter(c) function c56562619.cfilter2(c)
return (c:IsLocation(LOCATION_HAND) or c:IsFaceup()) and c:IsSetCard(0x61) and c:IsAbleToGraveAsCost() return (c:IsLocation(LOCATION_HAND) or c:IsFaceup()) and c:IsSetCard(0x61) and c:IsAbleToGraveAsCost()
end end
function c56562619.rmcost(e,tp,eg,ep,ev,re,r,rp,chk) function c56562619.rmcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(c56562619.c1filter,tp,LOCATION_HAND+LOCATION_ONFIELD,0,1,nil) if chk==0 then return Duel.IsExistingMatchingCard(c56562619.cfilter1,tp,LOCATION_HAND+LOCATION_ONFIELD,0,1,nil)
and Duel.IsExistingMatchingCard(c56562619.c2filter,tp,LOCATION_HAND+LOCATION_ONFIELD,0,1,nil) end and Duel.IsExistingMatchingCard(c56562619.cfilter2,tp,LOCATION_HAND+LOCATION_ONFIELD,0,1,nil) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g1=Duel.SelectMatchingCard(tp,c56562619.c1filter,tp,LOCATION_HAND+LOCATION_ONFIELD,0,1,1,nil) local g1=Duel.SelectMatchingCard(tp,c56562619.cfilter1,tp,LOCATION_HAND+LOCATION_ONFIELD,0,1,1,nil)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g2=Duel.SelectMatchingCard(tp,c56562619.c2filter,tp,LOCATION_HAND+LOCATION_ONFIELD,0,1,1,nil) local g2=Duel.SelectMatchingCard(tp,c56562619.cfilter2,tp,LOCATION_HAND+LOCATION_ONFIELD,0,1,1,nil)
g1:Merge(g2) g1:Merge(g2)
Duel.SendtoGrave(g1,REASON_COST) Duel.SendtoGrave(g1,REASON_COST)
end end
...@@ -81,7 +81,7 @@ function c56562619.spcon(e,tp,eg,ep,ev,re,r,rp) ...@@ -81,7 +81,7 @@ function c56562619.spcon(e,tp,eg,ep,ev,re,r,rp)
local act=e:GetLabel() local act=e:GetLabel()
e:SetLabel(0) e:SetLabel(0)
if act==1 and c:IsPreviousPosition(POS_FACEUP) and c:GetLocation()~=LOCATION_DECK if act==1 and c:IsPreviousPosition(POS_FACEUP) and c:GetLocation()~=LOCATION_DECK
and c:GetFlagEffect(56562619) then return true and c:GetFlagEffect(56562619)~=0 then return true
else rg:Clear() return false end else rg:Clear() return false end
end end
function c56562619.spfilter(c,e,tp) function c56562619.spfilter(c,e,tp)
...@@ -94,9 +94,8 @@ end ...@@ -94,9 +94,8 @@ end
function c56562619.spfilter2(c,e,tp) function c56562619.spfilter2(c,e,tp)
return c:GetFlagEffect(56562619)~=0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false,1-tp) and c:GetOwner()==1-tp return c:GetFlagEffect(56562619)~=0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false,1-tp) and c:GetOwner()==1-tp
end end
function c56562619.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function c56562619.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
local rg=e:GetLabelObject() local rg=e:GetLabelObject()
if chkc then return rg:IsContains(chkc) and c56562619.spfilter(chkc,e,tp) end
if chk==0 then if chk==0 then
if rg:IsExists(c56562619.spfilter,1,nil,e,tp) then return true if rg:IsExists(c56562619.spfilter,1,nil,e,tp) then return true
else rg:Clear() return false end else rg:Clear() return false end
......
...@@ -13,18 +13,23 @@ function c60473572.initial_effect(c) ...@@ -13,18 +13,23 @@ function c60473572.initial_effect(c)
e1:SetOperation(c60473572.operation) e1:SetOperation(c60473572.operation)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
function c60473572.desfilter(c) function c60473572.desfilter(c,tp,ft)
return c:IsFaceup() and c:IsDestructable() if c:IsFacedown() or not c:IsDestructable() then return false end
if ft==0 and c:IsLocation(LOCATION_SZONE) and c:GetSequence()<5 then
return Duel.IsExistingMatchingCard(c60473572.filter,tp,LOCATION_DECK,0,1,nil,true)
else
return Duel.IsExistingMatchingCard(c60473572.filter,tp,LOCATION_DECK,0,1,nil,false)
end
end end
function c60473572.filter(c) function c60473572.filter(c,ignore)
return c:IsSetCard(0xe1) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsSSetable() return c:IsSetCard(0xe1) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsSSetable(ignore)
end end
function c60473572.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function c60473572.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c60473572.desfilter(chkc) and chkc~=e:GetHandler() end local ft=Duel.GetLocationCount(tp,LOCATION_SZONE)
if chk==0 then return Duel.IsExistingTarget(c60473572.desfilter,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c60473572.desfilter(chkc,ft) and chkc~=e:GetHandler() end
and Duel.IsExistingMatchingCard(c60473572.filter,tp,LOCATION_DECK,0,1,nil) end if chk==0 then return Duel.IsExistingTarget(c60473572.desfilter,tp,LOCATION_ONFIELD,0,1,e:GetHandler(),ft) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY)
local g=Duel.SelectTarget(tp,c60473572.desfilter,tp,LOCATION_ONFIELD,0,1,1,e:GetHandler()) local g=Duel.SelectTarget(tp,c60473572.desfilter,tp,LOCATION_ONFIELD,0,1,1,e:GetHandler(),ft)
Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0)
end end
function c60473572.operation(e,tp,eg,ep,ev,re,r,rp) function c60473572.operation(e,tp,eg,ep,ev,re,r,rp)
...@@ -32,7 +37,7 @@ function c60473572.operation(e,tp,eg,ep,ev,re,r,rp) ...@@ -32,7 +37,7 @@ function c60473572.operation(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget() local tc=Duel.GetFirstTarget()
if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 then if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SET) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SET)
local g=Duel.SelectMatchingCard(tp,c60473572.filter,tp,LOCATION_DECK,0,1,1,nil) local g=Duel.SelectMatchingCard(tp,c60473572.filter,tp,LOCATION_DECK,0,1,1,nil,false)
if g:GetCount()>0 then if g:GetCount()>0 then
Duel.SSet(tp,g:GetFirst()) Duel.SSet(tp,g:GetFirst())
Duel.ConfirmCards(1-tp,g) Duel.ConfirmCards(1-tp,g)
......
...@@ -13,18 +13,23 @@ function c69351984.initial_effect(c) ...@@ -13,18 +13,23 @@ function c69351984.initial_effect(c)
e1:SetOperation(c69351984.operation) e1:SetOperation(c69351984.operation)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
function c69351984.desfilter(c) function c69351984.desfilter(c,tp,ft)
return c:IsFaceup() and c:IsDestructable() if c:IsFacedown() or not c:IsDestructable() then return false end
if ft==0 and c:IsLocation(LOCATION_SZONE) and c:GetSequence()<5 then
return Duel.IsExistingMatchingCard(c69351984.filter,tp,LOCATION_DECK,0,1,nil,true)
else
return Duel.IsExistingMatchingCard(c69351984.filter,tp,LOCATION_DECK,0,1,nil,false)
end
end end
function c69351984.filter(c) function c69351984.filter(c,ignore)
return c:IsSetCard(0xe1) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsSSetable() return c:IsSetCard(0xe1) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsSSetable(ignore)
end end
function c69351984.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function c69351984.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c69351984.desfilter(chkc) and chkc~=e:GetHandler() end local ft=Duel.GetLocationCount(tp,LOCATION_SZONE)
if chk==0 then return Duel.IsExistingTarget(c69351984.desfilter,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c69351984.desfilter(chkc,ft) and chkc~=e:GetHandler() end
and Duel.IsExistingMatchingCard(c69351984.filter,tp,LOCATION_DECK,0,1,nil) end if chk==0 then return Duel.IsExistingTarget(c69351984.desfilter,tp,LOCATION_ONFIELD,0,1,e:GetHandler(),ft) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY)
local g=Duel.SelectTarget(tp,c69351984.desfilter,tp,LOCATION_ONFIELD,0,1,1,e:GetHandler()) local g=Duel.SelectTarget(tp,c69351984.desfilter,tp,LOCATION_ONFIELD,0,1,1,e:GetHandler(),ft)
Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0)
end end
function c69351984.operation(e,tp,eg,ep,ev,re,r,rp) function c69351984.operation(e,tp,eg,ep,ev,re,r,rp)
...@@ -32,7 +37,7 @@ function c69351984.operation(e,tp,eg,ep,ev,re,r,rp) ...@@ -32,7 +37,7 @@ function c69351984.operation(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget() local tc=Duel.GetFirstTarget()
if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 then if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SET) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SET)
local g=Duel.SelectMatchingCard(tp,c69351984.filter,tp,LOCATION_DECK,0,1,1,nil) local g=Duel.SelectMatchingCard(tp,c69351984.filter,tp,LOCATION_DECK,0,1,1,nil,false)
if g:GetCount()>0 then if g:GetCount()>0 then
Duel.SSet(tp,g:GetFirst()) Duel.SSet(tp,g:GetFirst())
Duel.ConfirmCards(1-tp,g) Duel.ConfirmCards(1-tp,g)
......
...@@ -13,18 +13,23 @@ function c7868571.initial_effect(c) ...@@ -13,18 +13,23 @@ function c7868571.initial_effect(c)
e1:SetOperation(c7868571.operation) e1:SetOperation(c7868571.operation)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
function c7868571.desfilter(c) function c7868571.desfilter(c,tp,ft)
return c:IsFaceup() and c:IsDestructable() if c:IsFacedown() or not c:IsDestructable() then return false end
if ft==0 and c:IsLocation(LOCATION_SZONE) and c:GetSequence()<5 then
return Duel.IsExistingMatchingCard(c7868571.filter,tp,LOCATION_DECK,0,1,nil,true)
else
return Duel.IsExistingMatchingCard(c7868571.filter,tp,LOCATION_DECK,0,1,nil,false)
end
end end
function c7868571.filter(c) function c7868571.filter(c,ignore)
return c:IsSetCard(0xe1) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsSSetable() return c:IsSetCard(0xe1) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsSSetable(ignore)
end end
function c7868571.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function c7868571.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c7868571.desfilter(chkc) and chkc~=e:GetHandler() end local ft=Duel.GetLocationCount(tp,LOCATION_SZONE)
if chk==0 then return Duel.IsExistingTarget(c7868571.desfilter,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c7868571.desfilter(chkc,ft) and chkc~=e:GetHandler() end
and Duel.IsExistingMatchingCard(c7868571.filter,tp,LOCATION_DECK,0,1,nil) end if chk==0 then return Duel.IsExistingTarget(c7868571.desfilter,tp,LOCATION_ONFIELD,0,1,e:GetHandler(),ft) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY)
local g=Duel.SelectTarget(tp,c7868571.desfilter,tp,LOCATION_ONFIELD,0,1,1,e:GetHandler()) local g=Duel.SelectTarget(tp,c7868571.desfilter,tp,LOCATION_ONFIELD,0,1,1,e:GetHandler(),ft)
Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0)
end end
function c7868571.operation(e,tp,eg,ep,ev,re,r,rp) function c7868571.operation(e,tp,eg,ep,ev,re,r,rp)
...@@ -32,7 +37,7 @@ function c7868571.operation(e,tp,eg,ep,ev,re,r,rp) ...@@ -32,7 +37,7 @@ function c7868571.operation(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget() local tc=Duel.GetFirstTarget()
if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 then if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SET) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SET)
local g=Duel.SelectMatchingCard(tp,c7868571.filter,tp,LOCATION_DECK,0,1,1,nil) local g=Duel.SelectMatchingCard(tp,c7868571.filter,tp,LOCATION_DECK,0,1,1,nil,false)
if g:GetCount()>0 then if g:GetCount()>0 then
Duel.SSet(tp,g:GetFirst()) Duel.SSet(tp,g:GetFirst())
Duel.ConfirmCards(1-tp,g) Duel.ConfirmCards(1-tp,g)
......
...@@ -17,14 +17,14 @@ function c94689206.initial_effect(c) ...@@ -17,14 +17,14 @@ function c94689206.initial_effect(c)
e2:SetOperation(c94689206.spop) e2:SetOperation(c94689206.spop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--indes --indes
local e3=Effect.CreateEffect(c) local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_FIELD) e3:SetType(EFFECT_TYPE_FIELD)
e3:SetCode(EFFECT_INDESTRUCTABLE) e3:SetCode(EFFECT_INDESTRUCTABLE)
e3:SetRange(LOCATION_MZONE) e3:SetRange(LOCATION_MZONE)
e3:SetTargetRange(LOCATION_MZONE,0) e3:SetTargetRange(LOCATION_MZONE,0)
e3:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_ROCK)) e3:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_ROCK))
e3:SetValue(c94689206.indesval) e3:SetValue(c94689206.indesval)
c:RegisterEffect(e3) c:RegisterEffect(e3)
--to hand --to hand
local e4=Effect.CreateEffect(c) local e4=Effect.CreateEffect(c)
e4:SetDescription(aux.Stringid(94689206,0)) e4:SetDescription(aux.Stringid(94689206,0))
...@@ -52,7 +52,7 @@ function c94689206.spop(e,tp,eg,ep,ev,re,r,rp,c) ...@@ -52,7 +52,7 @@ function c94689206.spop(e,tp,eg,ep,ev,re,r,rp,c)
Duel.Remove(g,POS_FACEUP,REASON_COST) Duel.Remove(g,POS_FACEUP,REASON_COST)
end end
function c94689206.indesval(e,re,r,rp) function c94689206.indesval(e,re,r,rp)
return bit.band(r,REASON_RULE+REASON_BATTLE)==0 return bit.band(r,REASON_RULE+REASON_BATTLE)==0
end end
function c94689206.thcon(e,tp,eg,ep,ev,re,r,rp) function c94689206.thcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD)
...@@ -67,9 +67,9 @@ function c94689206.thtg(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -67,9 +67,9 @@ function c94689206.thtg(e,tp,eg,ep,ev,re,r,rp,chk)
end end
function c94689206.thop(e,tp,eg,ep,ev,re,r,rp) function c94689206.thop(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetMatchingGroup(c94689206.thfilter,tp,LOCATION_DECK,0,nil) local g=Duel.GetMatchingGroup(c94689206.thfilter,tp,LOCATION_DECK,0,nil)
if g:CheckWithSumEqual(Card.GetLevel,8,1,3) then Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) local sg=g:SelectWithSumEqual(tp,Card.GetLevel,8,1,3)
local sg=g:SelectWithSumEqual(tp,Card.GetLevel,8,1,3) if sg:GetCount()>0 then
Duel.SendtoHand(sg,nil,REASON_EFFECT) Duel.SendtoHand(sg,nil,REASON_EFFECT)
Duel.ConfirmCards(1-tp,sg) Duel.ConfirmCards(1-tp,sg)
end end
......
...@@ -13,7 +13,7 @@ function c96746083.initial_effect(c) ...@@ -13,7 +13,7 @@ function c96746083.initial_effect(c)
local e2=Effect.CreateEffect(c) local e2=Effect.CreateEffect(c)
e2:SetCategory(CATEGORY_TOHAND) e2:SetCategory(CATEGORY_TOHAND)
e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e2:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) e2:SetProperty(EFFECT_FLAG_DELAY)
e2:SetCode(EVENT_DESTROYED) e2:SetCode(EVENT_DESTROYED)
e2:SetCountLimit(1,96746084) e2:SetCountLimit(1,96746084)
e2:SetCondition(c96746083.thcon) e2:SetCondition(c96746083.thcon)
...@@ -21,44 +21,47 @@ function c96746083.initial_effect(c) ...@@ -21,44 +21,47 @@ function c96746083.initial_effect(c)
e2:SetOperation(c96746083.thop) e2:SetOperation(c96746083.thop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
end end
function c96746083.desfilter(c,tc) function c96746083.desfilter(c)
return c~=tc and c:IsType(TYPE_MONSTER) and ((c:IsLocation(LOCATION_MZONE) and c:IsFaceup()) or c:IsLocation(LOCATION_HAND)) and c:IsDestructable() return c:IsType(TYPE_MONSTER) and ((c:IsLocation(LOCATION_MZONE) and c:IsFaceup()) or c:IsLocation(LOCATION_HAND)) and c:IsDestructable()
end
function c96746083.desfilter2(c,tc)
return c96746083.desfilter(c,tc) and c:IsAttribute(ATTRIBUTE_FIRE)
end
function c96746083.rmfilter(c,tp)
return c:IsType(TYPE_MONSTER) and c:IsAbleToRemove(tp)
end end
function c96746083.sptg(e,tp,eg,ep,ev,re,r,rp,chk) function c96746083.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler() local c=e:GetHandler()
local g1=Duel.GetMatchingGroup(c96746083.desfilter,tp,LOCATION_MZONE+LOCATION_HAND,0,nil,c)
local g2=Duel.GetMatchingGroup(c96746083.desfilter2,tp,LOCATION_MZONE+LOCATION_HAND,0,nil,c)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
local loc=LOCATION_MZONE+LOCATION_HAND
if ft<0 then loc=LOCATION_MZONE end
local g=Duel.GetMatchingGroup(c96746083.desfilter,tp,loc,0,c)
if chk==0 then return c:IsCanBeSpecialSummoned(e,0,tp,false,false) if chk==0 then return c:IsCanBeSpecialSummoned(e,0,tp,false,false)
and g1:GetCount()>=2 and g2:GetCount()>=1 and g:GetCount()>=2 and g:IsExists(Card.IsAttribute,1,nil,ATTRIBUTE_FIRE)
and (ft>0 or Duel.IsExistingMatchingCard(c96746083.desfilter,tp,LOCATION_MZONE,0,1,nil,c)) end and (ft>0 or g:IsExists(Card.IsLocation,-ft+1,nil,LOCATION_MZONE)) end
Duel.SetOperationInfo(0,CATEGORY_DESTROY,g1,2,0,0) Duel.SetOperationInfo(0,CATEGORY_DESTROY,nil,2,tp,loc)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0)
end end
function c96746083.rmfilter(c,tp)
return c:IsType(TYPE_MONSTER) and c:IsAbleToRemove(tp)
end
function c96746083.spop(e,tp,eg,ep,ev,re,r,rp) function c96746083.spop(e,tp,eg,ep,ev,re,r,rp)
if not c96746083.sptg(e,tp,eg,ep,ev,re,r,rp,0) then return end
local c=e:GetHandler() local c=e:GetHandler()
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
local loc=LOCATION_MZONE+LOCATION_HAND
if ft<0 then loc=LOCATION_MZONE end
local g=Duel.GetMatchingGroup(c96746083.desfilter,tp,loc,0,c)
if g:GetCount()<2 or not g:IsExists(Card.IsAttribute,1,nil,ATTRIBUTE_FIRE) then return end
local g1=nil local g2=nil
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY)
if ft<1 then
g1=g:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE)
else
g1=g:Select(tp,1,1,nil)
end
g:RemoveCard(g1:GetFirst())
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY)
local g1=Duel.SelectMatchingCard(tp,c96746083.desfilter2,tp,LOCATION_MZONE+LOCATION_HAND,0,1,1,nil,c) if g1:GetFirst():IsAttribute(ATTRIBUTE_FIRE) then
if g1:GetCount()<=0 then return end g2=g:Select(tp,1,1,nil)
local c1=g1:GetFirst()
local g2
if c1:IsLocation(LOCATION_HAND) and ft<1 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY)
g2=Duel.SelectMatchingCard(tp,c96746083.desfilter,tp,LOCATION_MZONE,0,1,1,c1,c)
else else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) g2=g:FilterSelect(tp,Card.IsAttribute,1,1,nil,ATTRIBUTE_FIRE)
g2=Duel.SelectMatchingCard(tp,c96746083.desfilter,tp,LOCATION_MZONE+LOCATION_HAND,0,1,1,c1,c)
end end
if g2:GetCount()<=0 then return end
g1:Merge(g2) g1:Merge(g2)
local rm=g1:IsExists(Card.IsAttribute,2,nil,ATTRIBUTE_FIRE)
if Duel.Destroy(g1,REASON_EFFECT)==2 then if Duel.Destroy(g1,REASON_EFFECT)==2 then
if not c:IsRelateToEffect(e) then return end if not c:IsRelateToEffect(e) then return end
if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0
...@@ -66,13 +69,12 @@ function c96746083.spop(e,tp,eg,ep,ev,re,r,rp) ...@@ -66,13 +69,12 @@ function c96746083.spop(e,tp,eg,ep,ev,re,r,rp)
Duel.SendtoGrave(c,REASON_RULE) Duel.SendtoGrave(c,REASON_RULE)
return return
end end
local g=Duel.GetMatchingGroup(c96746083.rmfilter,tp,0,LOCATION_MZONE+LOCATION_GRAVE,nil,tp) local rg=Duel.GetMatchingGroup(c96746083.rmfilter,tp,0,LOCATION_MZONE+LOCATION_GRAVE,nil,tp)
if g1:FilterCount(Card.IsAttribute,nil,ATTRIBUTE_FIRE)==2 and g:GetCount()>0 if rm and rg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(96746083,0)) then
and Duel.SelectYesNo(tp,aux.Stringid(96746083,0)) then Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
Duel.BreakEffect() local tg=rg:Select(tp,1,1,nil)
local g=Duel.SelectMatchingCard(tp,c96746083.rmfilter,tp,0,LOCATION_MZONE+LOCATION_GRAVE,1,1,nil,tp) Duel.HintSelection(tg)
Duel.HintSelection(g) Duel.Remove(tg,POS_FACEUP,REASON_EFFECT)
Duel.Remove(g,POS_FACEUP,REASON_EFFECT)
end end
end end
end end
...@@ -80,12 +82,11 @@ function c96746083.thcon(e,tp,eg,ep,ev,re,r,rp) ...@@ -80,12 +82,11 @@ function c96746083.thcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsReason(REASON_EFFECT) return e:GetHandler():IsReason(REASON_EFFECT)
end end
function c96746083.thfilter(c) function c96746083.thfilter(c)
return not c:IsAttribute(ATTRIBUTE_FIRE) and c:IsRace(RACE_WYRM) and c:IsAbleToHand() return c:GetAttribute()~=ATTRIBUTE_FIRE and c:IsRace(RACE_WYRM) and c:IsAbleToHand()
end end
function c96746083.thtg(e,tp,eg,ep,ev,re,r,rp,chk) function c96746083.thtg(e,tp,eg,ep,ev,re,r,rp,chk)
local g=Duel.GetMatchingGroup(c96746083.thfilter,tp,LOCATION_GRAVE,0,nil) if chk==0 then return Duel.IsExistingMatchingCard(c96746083.thfilter,tp,LOCATION_GRAVE,0,1,nil) end
if chk==0 then return g:GetCount()>0 end Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_GRAVE)
Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0)
end end
function c96746083.thop(e,tp,eg,ep,ev,re,r,rp) function c96746083.thop(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND)
......
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