Commit 87444d02 authored by Nemo Ma's avatar Nemo Ma

sepialife fix

parent 2c450db7
...@@ -22,7 +22,7 @@ function s.initial_effect(c) ...@@ -22,7 +22,7 @@ function s.initial_effect(c)
--negate --negate
local e2 = Effect.CreateEffect(c) local e2 = Effect.CreateEffect(c)
e2:SetDescription(aux.Stringid(id, 1)) e2:SetDescription(aux.Stringid(id, 1))
e2:SetCategory(CATEGORY_DISABLE) -- e2:SetCategory(CATEGORY_DISABLE)
e2:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_CONTINUOUS) e2:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_CONTINUOUS)
e2:SetCode(EVENT_SPSUMMON_SUCCESS) e2:SetCode(EVENT_SPSUMMON_SUCCESS)
e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP + EFFECT_FLAG_DELAY) e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP + EFFECT_FLAG_DELAY)
...@@ -49,23 +49,22 @@ end ...@@ -49,23 +49,22 @@ end
function s.spfilter(c) function s.spfilter(c)
return c:IsSetCard(0x144e) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() return c:IsSetCard(0x144e) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost()
end end
function s.MZFilter(c, tp) --function s.MZFilter(c, tp)
return c:IsLocation(LOCATION_MZONE) and c:GetSequence() < 5 and c:IsControler(tp) -- return c:IsLocation(LOCATION_MZONE) and c:GetSequence() < 5 and c:IsControler(tp)
end --end
function s.ChkfMMZ(sumcount) --function s.ChkfMMZ(sumcount)
return function(sg, e, tp, mg) -- return function(sg, e, tp, mg)
return sg:FilterCount(s.MZFilter, nil, tp) + Duel.GetLocationCount(tp, LOCATION_MZONE) >= sumcount -- return sg:FilterCount(s.MZFilter, nil, tp) + Duel.GetLocationCount(tp, LOCATION_MZONE) >= sumcount
end -- end
end --end
function s.spcost(e, tp, eg, ep, ev, re, r, rp, chk) function s.spcost(e, tp, eg, ep, ev, re, r, rp, chk)
local rg = Duel.GetMatchingGroup(s.spfilter, tp, LOCATION_HAND + LOCATION_GRAVE, 0, e:GetHandler()) if chk==0 then return Duel.IsExistingMatchingCard(s.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,2,nil) end
if chk == 0 then -- if chk == 0 then
return Duel.GetLocationCount(tp, LOCATION_MZONE) > -2 and #rg > 1 and -- return Duel.GetLocationCount(tp, LOCATION_MZONE) > -2 and #rg > 1 and
rg:CheckSubGroup(s.ChkfMMZ(1), 2, 2, tp) -- rg:CheckSubGroup(s.ChkfMMZ(1), 2, 2, tp)
end -- end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) local g=Duel.SelectMatchingCard(tp,s.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,2,2,nil)
local g = rg:SelectSubGroup(s.ChkfMMZ(1), tp, 2, 2, tp) Duel.Remove(g,POS_FACEUP,REASON_COST)
Duel.Remove(g, POS_FACEUP, REASON_COST)
end end
function s.sptg(e, tp, eg, ep, ev, re, r, rp, chk) function s.sptg(e, tp, eg, ep, ev, re, r, rp, chk)
local c = e:GetHandler() local c = e:GetHandler()
...@@ -76,25 +75,25 @@ function s.sptg(e, tp, eg, ep, ev, re, r, rp, chk) ...@@ -76,25 +75,25 @@ function s.sptg(e, tp, eg, ep, ev, re, r, rp, chk)
end end
function s.spop(e, tp, eg, ep, ev, re, r, rp) function s.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, true, true, POS_FACEUP) ~= 0 then if c:IsRelateToEffect(e) and Duel.SpecialSummon(c, 1, tp, tp, true, true, POS_FACEUP) ~= 0 then
c:CompleteProcedure() c:CompleteProcedure()
c:RegisterFlagEffect(id, RESET_EVENT + RESETS_STANDARD, 0, 0) -- c:RegisterFlagEffect(id, RESET_EVENT + RESETS_STANDARD, 0, 0)
end end
end end
function s.negop(e, tp, eg, ep, ev, re, r, rp) function s.negop(e, tp, eg, ep, ev, re, r, rp)
local c = e:GetHandler() local c = e:GetHandler()
if c:GetFlagEffect(id) ~= 0 then if not c:GetSummonType()==SUMMON_TYPE_SPECIAL+1 then return end
local e1 = Effect.CreateEffect(c) local e1 = Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD) e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_DISABLE) e1:SetCode(EFFECT_DISABLE)
e1:SetTargetRange(0, LOCATION_ONFIELD) e1:SetTargetRange(0, LOCATION_ONFIELD)
e1:SetTarget(s.disable) e1:SetTarget(s.disable)
e1:SetReset(RESET_PHASE + PHASE_END + RESET_OPPO_TURN) e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN)
e1:SetLabel(c:GetFieldID())
Duel.RegisterEffect(e1, tp) Duel.RegisterEffect(e1, tp)
end
end end
function s.disable(e, c) function s.disable(e,c)
return c ~= e:GetHandler() and aux.disfilter1(c) return c:GetFieldID()~=e:GetLabel() and (not c:IsType(TYPE_MONSTER) or (c:IsType(TYPE_EFFECT) or bit.band(c:GetOriginalType(),TYPE_EFFECT)==TYPE_EFFECT))
end end
function s.spfilter2(c, e, tp, zone) function s.spfilter2(c, e, tp, zone)
return c:IsSetCard(0x144e) and c:IsCanBeSpecialSummoned(e, 0, tp, false, false, POS_FACEUP, tp, zone) return c:IsSetCard(0x144e) and c:IsCanBeSpecialSummoned(e, 0, tp, false, false, POS_FACEUP, tp, zone)
......
...@@ -49,23 +49,23 @@ end ...@@ -49,23 +49,23 @@ end
function s.spfilter(c) function s.spfilter(c)
return c:IsSetCard(0x144e) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() return c:IsSetCard(0x144e) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost()
end end
function s.MZFilter(c, tp) --function s.MZFilter(c, tp)
return c:IsLocation(LOCATION_MZONE) and c:GetSequence() < 5 and c:IsControler(tp) -- return c:IsLocation(LOCATION_MZONE) and c:GetSequence() < 5 and c:IsControler(tp)
end --end
function s.ChkfMMZ(sumcount) --function s.ChkfMMZ(sumcount)
return function(sg, tp) -- return function(sg, tp)
return sg:FilterCount(s.MZFilter, nil, tp) + Duel.GetLocationCount(tp, LOCATION_MZONE) >= sumcount -- return sg:FilterCount(s.MZFilter, nil, tp) + Duel.GetLocationCount(tp, LOCATION_MZONE) >= sumcount
end -- end
end --end
function s.spcost(e, tp, eg, ep, ev, re, r, rp, chk) function s.spcost(e, tp, eg, ep, ev, re, r, rp, chk)
local rg = Duel.GetMatchingGroup(s.spfilter, tp, LOCATION_HAND + LOCATION_MZONE + LOCATION_GRAVE, 0, e:GetHandler()) if chk==0 then return Duel.IsExistingMatchingCard(s.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,3,nil) end
if chk == 0 then -- if chk == 0 then
return Duel.GetLocationCount(tp, LOCATION_MZONE) > -3 and #rg > 1 and -- return Duel.GetLocationCount(tp, LOCATION_MZONE) > -3 and #rg > 1 and
rg:CheckSubGroup(s.ChkfMMZ(1), 3, 3, tp) -- rg:CheckSubGroup(s.ChkfMMZ(1), 3, 3, tp)
end -- end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) -- Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local g = rg:SelectSubGroup(s.ChkfMMZ(1), 3, 3, tp) local g=Duel.SelectMatchingCard(tp,s.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,3,3,nil)
Duel.Remove(g, POS_FACEUP, REASON_COST) Duel.Remove(g,POS_FACEUP,REASON_COST)
end end
function s.sptg(e, tp, eg, ep, ev, re, r, rp, chk) function s.sptg(e, tp, eg, ep, ev, re, r, rp, chk)
local c = e:GetHandler() local c = e:GetHandler()
......
...@@ -30,13 +30,14 @@ function s.initial_effect(c) ...@@ -30,13 +30,14 @@ function s.initial_effect(c)
e2:SetTarget(s.drtg) e2:SetTarget(s.drtg)
e2:SetOperation(s.drop) e2:SetOperation(s.drop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
Duel.AddCustomActivityCounter(33701019,ACTIVITY_CHAIN,aux.FALSE)
end end
function s.xcheck(g, lc, tp) function s.xcheck(g, lc, tp)
return g:IsExists(Card.IsXyzSetCard, 1, nil, 0x144e) return g:IsExists(Card.IsXyzSetCard, 1, nil, 0x144e)
end end
function s.spcon(e, tp, eg, ep, ev, re, r, rp) function s.spcon(e, tp, eg, ep, ev, re, r, rp)
local ct = Duel.GetActivityCount(tp, ACTIVITY_CHAIN) return Duel.GetTurnPlayer() == tp
return Duel.GetTurnPlayer() == tp and ct == 0 and Duel.GetCustomActivityCount(33701019,tp,ACTIVITY_CHAIN)==0
end end
function s.sptg(e, tp, eg, ep, ev, re, r, rp, chk) function s.sptg(e, tp, eg, ep, ev, re, r, rp, chk)
local c = e:GetHandler() local c = e:GetHandler()
......
...@@ -63,16 +63,13 @@ function s.tgfilter(c) ...@@ -63,16 +63,13 @@ function s.tgfilter(c)
return c:IsSetCard(0x144e) and c:IsAbleToGrave() return c:IsSetCard(0x144e) and c:IsAbleToGrave()
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 g = Duel.GetMatchingGroup(s.tgfilter, tp, LOCATION_DECK, 0, nil) if chk==0 then return Duel.IsExistingMatchingCard(s.tgfilter,tp,LOCATION_DECK,0,1,nil) end
if chk == 0 then Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK)
return g:CheckSubGroup(aux.dncheck, 1, 4)
end
Duel.SetOperationInfo(0, CATEGORY_TOGRAVE, g, 1, 0, 0)
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 g = Duel.GetMatchingGroup(s.tgfilter, tp, LOCATION_DECK, 0, nil, e, tp) local g = Duel.GetMatchingGroup(s.tgfilter, tp, LOCATION_DECK, 0, nil, e, tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local dg = g:SelectSubGroup(aux.dncheck, tp, 1, 4) local dg = g:SelectSubGroup(tp,aux.dncheck,false,1,4)
if #dg > 0 then if #dg > 0 then
local ct = Duel.SendtoGrave(dg, REASON_EFFECT) local ct = Duel.SendtoGrave(dg, REASON_EFFECT)
if ct > 0 and Duel.Recover(tp, ct * 1000, REASON_EFFECT) > 0 then if ct > 0 and Duel.Recover(tp, ct * 1000, REASON_EFFECT) > 0 then
......
...@@ -6,23 +6,23 @@ local id = 33701021 ...@@ -6,23 +6,23 @@ local id = 33701021
function s.initial_effect(c) function s.initial_effect(c)
--Activate --Activate
local e1 = Effect.CreateEffect(c) local e1 = Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_TOHAND + CATEGORY_SEARCH) e1:SetCategory(CATEGORY_TOGRAVE)
e1:SetType(EFFECT_TYPE_ACTIVATE) e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN) e1:SetCode(EVENT_FREE_CHAIN)
e1:SetOperation(s.activate) e1:SetOperation(s.activate)
c:RegisterEffect(e1) c:RegisterEffect(e1)
--Skip phases --Skip phases
local e2 = Effect.CreateEffect(c) local e2 = Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_CONTINUOUS + EFFECT_TYPE_FIELD) e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD)
e2:SetCode(EVENT_PHASE + PHASE_STANDBY) e2:SetCode(EVENT_PHASE+PHASE_STANDBY)
e2:SetRange(LOCATION_FZONE) e2:SetRange(LOCATION_FZONE)
e2:SetCountLimit(1) e2:SetCountLimit(1)
e2:SetOperation(s.skipop) e2:SetOperation(s.skipop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--recover --recover
local e3 = Effect.CreateEffect(c) local e3 = Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_TRIGGER_O) e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O)
e3:SetCode(EVENT_PHASE + PHASE_END) e3:SetCode(EVENT_PHASE+PHASE_END)
e3:SetRange(LOCATION_GRAVE) e3:SetRange(LOCATION_GRAVE)
e3:SetCountLimit(1) e3:SetCountLimit(1)
e3:SetCondition(s.thcon) e3:SetCondition(s.thcon)
...@@ -34,14 +34,12 @@ function s.tgfilter(c) ...@@ -34,14 +34,12 @@ function s.tgfilter(c)
return c:IsSetCard(0x144e) and c:IsAbleToGrave() return c:IsSetCard(0x144e) and c:IsAbleToGrave()
end end
function s.activate(e, tp, eg, ep, ev, re, r, rp) function s.activate(e, tp, eg, ep, ev, re, r, rp)
if not e:GetHandler():IsRelateToEffect(e) then if not e:GetHandler():IsRelateToEffect(e) then return end
return local g=Duel.GetMatchingGroup(s.tgfilter,tp,LOCATION_DECK,0,nil)
end if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(id,0)) then
local g = Duel.GetMatchingGroup(s.tgfilter, tp, LOCATION_DECK, 0, nil)
if g:CheckSubGroup(aux.dncheck, 1, 3) and Duel.SelectYesNo(tp, aux.Stringid(id, 0)) then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local dg = g:SelectSubGroup(aux.dncheck, tp, 1, 3) local dg=g:Select(tp,1,3,nil)
Duel.SendtoGrave(dg, REASON_EFFECT) Duel.SendtoGrave(dg,REASON_EFFECT)
end end
end end
function s.skipop(e, tp, eg, ep, ev, re, r, rp) function s.skipop(e, tp, eg, ep, ev, re, r, rp)
......
...@@ -28,17 +28,36 @@ end ...@@ -28,17 +28,36 @@ end
function s.condition(e, tp, eg, ep, ev, re, r, rp) function s.condition(e, tp, eg, ep, ev, re, r, rp)
return Duel.GetTurnPlayer() ~= tp and Duel.IsAbleToEnterBP() return Duel.GetTurnPlayer() ~= tp and Duel.IsAbleToEnterBP()
end end
function s.rfilter(c,tp)
return c:IsSetCard(0x144e) and (c:IsControler(tp) or c:IsFaceup())
end
function s.fgoal(sg,tp)
if sg:GetCount()>0 and Duel.GetMZoneCount(tp,sg)>0 then
Duel.SetSelectedCard(sg)
return Duel.CheckReleaseGroup(tp,nil,0,nil)
else return false end
end
function s.cost(e, tp, eg, ep, ev, re, r, rp, chk) function s.cost(e, tp, eg, ep, ev, re, r, rp, chk)
if chk == 0 then -- if chk == 0 then
return Duel.CheckReleaseGroupCost(tp, Card.IsSetCard, 2, false, aux.ReleaseCheckMMZ, nil, 0x144e) -- return Duel.CheckReleaseGroupCost(tp, Card.IsSetCard, 2, false, aux.ReleaseCheckMMZ, nil, 0x144e)
end -- end
local g = Duel.SelectReleaseGroupCost(tp, Card.IsSetCard, 2, 2, false, aux.ReleaseCheckMMZ, nil, 0x144e) -- local g = Duel.SelectReleaseGroupCost(tp, Card.IsSetCard, 2, 2, false, aux.ReleaseCheckMMZ, nil, 0x144e)
Duel.Release(g, REASON_COST) -- Duel.Release(g, REASON_COST)
local rg=Duel.GetReleaseGroup(tp):Filter(s.rfilter,nil,tp)
if chk==0 then return rg:CheckSubGroup(s.fgoal,2,2,tp) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
local g=rg:SelectSubGroup(tp,s.fgoal,false,2,2,tp)
Duel.Release(g,REASON_COST)
end end
function s.activate(e, tp, eg, ep, ev, re, r, rp) function s.activate(e, tp, eg, ep, ev, re, r, rp)
if Duel.IsChainDisablable(0) then if Duel.IsChainDisablable(0) then
local g = Duel.GetMatchingGroup(Card.IsAbleToGrave, tp, 0, LOCATION_MZONE, nil) local g = Duel.GetMatchingGroup(Card.IsAbleToGrave, tp, 0, LOCATION_MZONE, nil)
if #g > 1 and Duel.SelectYesNo(1 - tp, aux.Stringid(id, 0)) then if g:GetCount()>1 then --and Duel.SelectYesNo(1 - tp, aux.Stringid(id, 0)) then
sel=Duel.SelectOption(1-tp,1213,1214)
else
sel=Duel.SelectOption(1-tp,1214)+1
end
if sel==0 then
Duel.Hint(HINT_SELECTMSG, 1 - tp, HINTMSG_TOGRAVE) Duel.Hint(HINT_SELECTMSG, 1 - tp, HINTMSG_TOGRAVE)
local sg = g:Select(1 - tp, 2, 2, nil) local sg = g:Select(1 - tp, 2, 2, nil)
Duel.SendtoGrave(sg, REASON_EFFECT) Duel.SendtoGrave(sg, REASON_EFFECT)
...@@ -52,15 +71,13 @@ function s.tgfilter(c) ...@@ -52,15 +71,13 @@ function s.tgfilter(c)
return c:IsSetCard(0x144e) and c:IsAbleToGrave() return c:IsSetCard(0x144e) and c:IsAbleToGrave()
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)
if chk == 0 then if chk == 0 then return Duel.IsExistingMatchingCard(s.tgfilter, tp, LOCATION_DECK, 0, 2, nil) end
return Duel.IsExistingMatchingCard(s.tgfilter, tp, LOCATION_DECK, 0, 2, nil)
end
Duel.SetOperationInfo(0, CATEGORY_TOGRAVE, nil, 2, tp, LOCATION_DECK) Duel.SetOperationInfo(0, CATEGORY_TOGRAVE, nil, 2, tp, LOCATION_DECK)
end end
function s.tgop(e, tp, eg, ep, ev, re, r, rp) function s.tgop(e, tp, eg, ep, ev, re, r, rp)
Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_TOGRAVE) Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_TOGRAVE)
local g = Duel.SelectMatchingCard(tp, s.tgfilter, tp, LOCATION_DECK, 0, 2, 2, nil) local g = Duel.SelectMatchingCard(tp, s.tgfilter, tp, LOCATION_DECK, 0, 2, 2, nil)
if #g > 0 then if g:GetCount()>0 then
Duel.SendtoGrave(g, REASON_EFFECT) Duel.SendtoGrave(g, REASON_EFFECT)
end end
end end
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