Commit e7cce77c authored by Nemo Ma's avatar Nemo Ma

fix

parent 128fabd2
...@@ -4,85 +4,85 @@ ...@@ -4,85 +4,85 @@
local s = c33701017 local s = c33701017
local id = 33701017 local id = 33701017
function s.initial_effect(c) function s.initial_effect(c)
c:EnableReviveLimit() c:EnableReviveLimit()
aux.AddLinkProcedure(c, nil, 2, 2, s.lcheck) aux.AddLinkProcedure(c, nil, 2, 2, s.lcheck)
--special summon self --special summon self
local e1 = Effect.CreateEffect(c) local e1 = Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(id, 0)) e1:SetDescription(aux.Stringid(id, 0))
e1:SetCategory(CATEGORY_SPECIAL_SUMMON) e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
e1:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_TRIGGER_O) e1:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_TRIGGER_O)
e1:SetCode(EVENT_PHASE + PHASE_END) e1:SetCode(EVENT_PHASE + PHASE_END)
e1:SetRange(LOCATION_EXTRA) e1:SetRange(LOCATION_EXTRA)
e1:SetCountLimit(1) e1:SetCountLimit(1)
e1:SetCondition(s.spcon) e1:SetCondition(s.spcon)
e1:SetCost(s.spcost) e1:SetCost(s.spcost)
e1:SetTarget(s.sptg) e1:SetTarget(s.sptg)
e1:SetOperation(s.spop) e1:SetOperation(s.spop)
c:RegisterEffect(e1) c:RegisterEffect(e1)
--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)
e2:SetOperation(s.negop) e2:SetOperation(s.negop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--special summon other --special summon other
local e3 = Effect.CreateEffect(c) local e3 = Effect.CreateEffect(c)
e3:SetDescription(aux.Stringid(id, 2)) e3:SetDescription(aux.Stringid(id, 2))
e3:SetCategory(CATEGORY_SPECIAL_SUMMON) e3:SetCategory(CATEGORY_SPECIAL_SUMMON)
e3:SetType(EFFECT_TYPE_IGNITION) e3:SetType(EFFECT_TYPE_IGNITION)
e3:SetRange(LOCATION_MZONE) e3:SetRange(LOCATION_MZONE)
e3:SetCountLimit(1) e3:SetCountLimit(1)
e3:SetTarget(s.sptg2) e3:SetTarget(s.sptg2)
e3:SetOperation(s.spop2) e3:SetOperation(s.spop2)
c:RegisterEffect(e3) c:RegisterEffect(e3)
end end
function s.lcheck(g, lc, tp) function s.lcheck(g, lc, tp)
return g:IsExists(Card.IsLinkSetCard, 1, nil, 0x144e) return g:IsExists(Card.IsLinkSetCard, 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 ns, ss = Duel.GetActivityCount(tp, ACTIVITY_SUMMON, ACTIVITY_SPSUMMON) local ns, ss = Duel.GetActivityCount(tp, ACTIVITY_SUMMON, ACTIVITY_SPSUMMON)
return Duel.GetTurnPlayer() == tp and ns + ss == 0 return Duel.GetTurnPlayer() == tp and ns + ss == 0
end 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)
if chk==0 then return Duel.IsExistingMatchingCard(s.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,2,nil) end 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
local g=Duel.SelectMatchingCard(tp,s.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,2,2,nil) local g=Duel.SelectMatchingCard(tp,s.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,2,2,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()
if chk == 0 then if chk == 0 then
return c:IsCanBeSpecialSummoned(e, 0, tp, true, true) return c:IsCanBeSpecialSummoned(e, 0, tp, true, true) and Duel.GetLocationCountFromEx(tp)>0
end end
Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, c, 1, 0, 0) Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, c, 1, 0, 0)
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, 1, tp, tp, true, true, POS_FACEUP) ~= 0 then if c:IsRelateToEffect(e) and Duel.GetLocationCountFromEx(tp)>0 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 not c:GetSummonType()==SUMMON_TYPE_SPECIAL+1 then return end 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)
...@@ -93,26 +93,26 @@ function s.negop(e, tp, eg, ep, ev, re, r, rp) ...@@ -93,26 +93,26 @@ function s.negop(e, tp, eg, ep, ev, re, r, rp)
Duel.RegisterEffect(e1, tp) Duel.RegisterEffect(e1, tp)
end end
function s.disable(e,c) function s.disable(e,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)) 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)
end end
function s.sptg2(e, tp, eg, ep, ev, re, r, rp, chk) function s.sptg2(e, tp, eg, ep, ev, re, r, rp, chk)
if chk == 0 then if chk == 0 then
local zone = e:GetHandler():GetLinkedZone(tp) local zone = e:GetHandler():GetLinkedZone(tp)
return zone ~= 0 and Duel.IsExistingMatchingCard(s.spfilter2, tp, LOCATION_REMOVED, 0, 1, nil, e, tp, zone) return zone ~= 0 and Duel.IsExistingMatchingCard(s.spfilter2, tp, LOCATION_REMOVED, 0, 1, nil, e, tp, zone)
end end
Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, nil, 1, tp, LOCATION_REMOVED) Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, nil, 1, tp, LOCATION_REMOVED)
end end
function s.spop2(e, tp, eg, ep, ev, re, r, rp) function s.spop2(e, tp, eg, ep, ev, re, r, rp)
local zone = e:GetHandler():GetLinkedZone(tp) local zone = e:GetHandler():GetLinkedZone(tp)
if zone == 0 then if zone == 0 then
return return
end end
Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_SPSUMMON) Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_SPSUMMON)
local g = Duel.SelectMatchingCard(tp, s.spfilter2, tp, LOCATION_REMOVED, 0, 1, 1, nil, e, tp, zone) local g = Duel.SelectMatchingCard(tp, s.spfilter2, tp, LOCATION_REMOVED, 0, 1, 1, nil, e, tp, zone)
if #g > 0 then if #g > 0 then
Duel.SpecialSummon(g, 0, tp, tp, false, false, POS_FACEUP, zone) Duel.SpecialSummon(g, 0, tp, tp, false, false, POS_FACEUP, zone)
end end
end end
...@@ -4,121 +4,121 @@ ...@@ -4,121 +4,121 @@
local s = c33701018 local s = c33701018
local id = 33701018 local id = 33701018
function s.initial_effect(c) function s.initial_effect(c)
c:EnableReviveLimit() c:EnableReviveLimit()
aux.AddLinkProcedure(c, nil, 2, 3, s.lcheck) aux.AddLinkProcedure(c, nil, 2, 3, s.lcheck)
--special summon self --special summon self
local e1 = Effect.CreateEffect(c) local e1 = Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(id, 0)) e1:SetDescription(aux.Stringid(id, 0))
e1:SetCategory(CATEGORY_SPECIAL_SUMMON) e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
e1:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_TRIGGER_O) e1:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_TRIGGER_O)
e1:SetCode(EVENT_PHASE + PHASE_END) e1:SetCode(EVENT_PHASE + PHASE_END)
e1:SetRange(LOCATION_EXTRA) e1:SetRange(LOCATION_EXTRA)
e1:SetCountLimit(1) e1:SetCountLimit(1)
e1:SetCondition(s.spcon) e1:SetCondition(s.spcon)
e1:SetCost(s.spcost) e1:SetCost(s.spcost)
e1:SetTarget(s.sptg) e1:SetTarget(s.sptg)
e1:SetOperation(s.spop) e1:SetOperation(s.spop)
c:RegisterEffect(e1) c:RegisterEffect(e1)
--double atk --double atk
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_ATKCHANGE) e2:SetCategory(CATEGORY_ATKCHANGE)
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)
e2:SetOperation(s.atkop) e2:SetOperation(s.atkop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--special summon other --special summon other
local e3 = Effect.CreateEffect(c) local e3 = Effect.CreateEffect(c)
e3:SetDescription(aux.Stringid(id, 2)) e3:SetDescription(aux.Stringid(id, 2))
e3:SetCategory(CATEGORY_TOHAND + CATEGORY_DRAW) e3:SetCategory(CATEGORY_TOHAND + CATEGORY_DRAW)
e3:SetType(EFFECT_TYPE_IGNITION) e3:SetType(EFFECT_TYPE_IGNITION)
e3:SetRange(LOCATION_MZONE) e3:SetRange(LOCATION_MZONE)
e3:SetCountLimit(1) e3:SetCountLimit(1)
e3:SetTarget(s.thtg) e3:SetTarget(s.thtg)
e3:SetOperation(s.thop) e3:SetOperation(s.thop)
c:RegisterEffect(e3) c:RegisterEffect(e3)
end end
function s.lcheck(g, lc, tp) function s.lcheck(g, lc, tp)
return g:IsExists(Card.IsLinkSetCard, 1, nil, 0x144e) return g:IsExists(Card.IsLinkSetCard, 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 ns, ss = Duel.GetActivityCount(tp, ACTIVITY_SUMMON, ACTIVITY_SPSUMMON) local ns, ss = Duel.GetActivityCount(tp, ACTIVITY_SUMMON, ACTIVITY_SPSUMMON)
return Duel.GetTurnPlayer() == tp and ns + ss == 0 return Duel.GetTurnPlayer() == tp and ns + ss == 0
end 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)
if chk==0 then return Duel.IsExistingMatchingCard(s.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,3,nil) end if chk==0 then return Duel.IsExistingMatchingCard(s.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,3,nil) and Duel.GetLocationCountFromEx(tp)>0 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=Duel.SelectMatchingCard(tp,s.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,3,3,nil) 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()
if chk == 0 then if chk == 0 then
return c:IsCanBeSpecialSummoned(e, 0, tp, true, true) return c:IsCanBeSpecialSummoned(e, 0, tp, true, true) and Duel.GetLocationCountFromEx(tp)>0
end end
Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, c, 1, 0, 0) Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, c, 1, 0, 0)
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.GetLocationCountFromEx(tp)>0 and Duel.SpecialSummon(c, 0, 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.atkfilter(c) function s.atkfilter(c)
return c:IsFaceup() and c:IsSetCard(0x144e) return c:IsFaceup() and c:IsSetCard(0x144e)
end end
function s.atkop(e, tp, eg, ep, ev, re, r, rp) function s.atkop(e, tp, eg, ep, ev, re, r, rp)
local g = Duel.GetMatchingGroup(s.atkfilter, tp, LOCATION_MZONE, 0, nil) local g = Duel.GetMatchingGroup(s.atkfilter, tp, LOCATION_MZONE, 0, nil)
local c = e:GetHandler() local c = e:GetHandler()
if c:GetFlagEffect(id) == 0 then if c:GetFlagEffect(id) == 0 then
return return
end end
for tc in aux.Next(g) do for tc in aux.Next(g) do
local e1 = Effect.CreateEffect(c) local e1 = Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_SET_ATTACK_FINAL) e1:SetCode(EFFECT_SET_ATTACK_FINAL)
e1:SetReset(RESET_EVENT + RESETS_STANDARD) e1:SetReset(RESET_EVENT + RESETS_STANDARD)
e1:SetValue(tc:GetAttack() * 2) e1:SetValue(tc:GetAttack() * 2)
tc:RegisterEffect(e1) tc:RegisterEffect(e1)
local e2 = Effect.CreateEffect(c) local e2 = Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE) e2:SetType(EFFECT_TYPE_SINGLE)
e2:SetCode(EFFECT_SET_DEFENSE_FINAL) e2:SetCode(EFFECT_SET_DEFENSE_FINAL)
e2:SetReset(RESET_EVENT + RESETS_STANDARD) e2:SetReset(RESET_EVENT + RESETS_STANDARD)
e2:SetValue(tc:GetDefense() * 2) e2:SetValue(tc:GetDefense() * 2)
tc:RegisterEffect(e2) tc:RegisterEffect(e2)
end end
end end
function s.thfilter(c) function s.thfilter(c)
return c:IsSetCard(0x144e) and c:IsAbleToHand() return c:IsSetCard(0x144e) and c:IsAbleToHand()
end end
function s.thtg(e, tp, eg, ep, ev, re, r, rp, chk) function s.thtg(e, tp, eg, ep, ev, re, r, rp, chk)
if chk == 0 then if chk == 0 then
return Duel.IsExistingMatchingCard(s.thfilter, tp, LOCATION_REMOVED, 0, 1, nil) and Duel.IsPlayerCanDraw(tp, 1) return Duel.IsExistingMatchingCard(s.thfilter, tp, LOCATION_REMOVED, 0, 1, nil) and Duel.IsPlayerCanDraw(tp, 1)
end end
Duel.SetOperationInfo(0, CATEGORY_TOHAND, nil, 1, tp, LOCATION_REMOVED) Duel.SetOperationInfo(0, CATEGORY_TOHAND, nil, 1, tp, LOCATION_REMOVED)
Duel.SetOperationInfo(0, CATEGORY_DRAW, nil, 1, tp, 0) Duel.SetOperationInfo(0, CATEGORY_DRAW, nil, 1, tp, 0)
end end
function s.thop(e, tp, eg, ep, ev, re, r, rp) function s.thop(e, tp, eg, ep, ev, re, r, rp)
Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_TOHAND) Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_TOHAND)
local g = Duel.SelectMatchingCard(tp, s.thfilter, tp, LOCATION_REMOVED, 0, 1, 1, nil) local g = Duel.SelectMatchingCard(tp, s.thfilter, tp, LOCATION_REMOVED, 0, 1, 1, nil)
if #g > 0 and Duel.SendtoHand(g, nil, REASON_EFFECT + REASON_RETURN) ~= 0 then if #g > 0 and Duel.SendtoHand(g, nil, REASON_EFFECT + REASON_RETURN) ~= 0 then
Duel.Draw(tp, 1, REASON_EFFECT) Duel.Draw(tp, 1, REASON_EFFECT)
end end
end end
...@@ -4,94 +4,94 @@ ...@@ -4,94 +4,94 @@
local s = c33701019 local s = c33701019
local id = 33701019 local id = 33701019
function s.initial_effect(c) function s.initial_effect(c)
c:EnableReviveLimit() c:EnableReviveLimit()
aux.AddXyzProcedure(c, nil, 4, 2, nil, nil, 99, nil, false, s.xcheck) aux.AddXyzProcedure(c, nil, 4, 2, nil, nil, 99, nil, false, s.xcheck)
--special summon self --special summon self
local e1 = Effect.CreateEffect(c) local e1 = Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(id, 0)) e1:SetDescription(aux.Stringid(id, 0))
e1:SetCategory(CATEGORY_SPECIAL_SUMMON) e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
e1:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_TRIGGER_O) e1:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_TRIGGER_O)
e1:SetCode(EVENT_PHASE + PHASE_END) e1:SetCode(EVENT_PHASE + PHASE_END)
e1:SetRange(LOCATION_EXTRA) e1:SetRange(LOCATION_EXTRA)
e1:SetCountLimit(1) e1:SetCountLimit(1)
e1:SetCondition(s.spcon) e1:SetCondition(s.spcon)
e1:SetTarget(s.sptg) e1:SetTarget(s.sptg)
e1:SetOperation(s.spop) e1:SetOperation(s.spop)
c:RegisterEffect(e1) c:RegisterEffect(e1)
--draw --draw
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_DRAW) e2:SetCategory(CATEGORY_DRAW)
e2:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_TRIGGER_O) e2:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_TRIGGER_O)
e2:SetCode(EVENT_PREDRAW) e2:SetCode(EVENT_PREDRAW)
e2:SetRange(LOCATION_MZONE) e2:SetRange(LOCATION_MZONE)
e2:SetCondition(s.drcon) e2:SetCondition(s.drcon)
e2:SetCost(s.drcost) e2:SetCost(s.drcost)
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) 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)
return Duel.GetTurnPlayer() == tp return Duel.GetTurnPlayer() == tp
and Duel.GetCustomActivityCount(33701019,tp,ACTIVITY_CHAIN)==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()
if chk == 0 then if chk == 0 then
return c:IsCanBeSpecialSummoned(e, 0, tp, true, true) and return c:IsCanBeSpecialSummoned(e, 0, tp, true, true) and Duel.GetLocationCountFromEx(tp)>0 and
Duel.IsExistingMatchingCard(Card.IsSetCard, tp, LOCATION_GRAVE, 0, 2, nil, 0x144e) Duel.IsExistingMatchingCard(Card.IsSetCard, tp, LOCATION_GRAVE, 0, 2, nil, 0x144e)
end end
Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, c, 1, 0, 0) Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, c, 1, 0, 0)
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.GetLocationCountFromEx(tp)>0 and Duel.SpecialSummon(c, 0, tp, tp, true, true, POS_FACEUP) ~= 0 then
c:CompleteProcedure() c:CompleteProcedure()
Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_XMATERIAL) Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_XMATERIAL)
local g = Duel.SelectMatchingCard(tp, Card.IsSetCard, tp, LOCATION_GRAVE, 0, 2, 2, nil, 0x144e) local g = Duel.SelectMatchingCard(tp, Card.IsSetCard, tp, LOCATION_GRAVE, 0, 2, 2, nil, 0x144e)
if #g > 0 then if #g > 0 then
Duel.Overlay(c, g) Duel.Overlay(c, g)
end end
end end
end end
function s.drcon(e, tp, eg, ep, ev, re, r, rp) function s.drcon(e, tp, eg, ep, ev, re, r, rp)
return tp == Duel.GetTurnPlayer() return tp == Duel.GetTurnPlayer()
end end
function s.drcost(e, tp, eg, ep, ev, re, r, rp, chk) function s.drcost(e, tp, eg, ep, ev, re, r, rp, chk)
local c = e:GetHandler() local c = e:GetHandler()
if chk == 0 then if chk == 0 then
return c:CheckRemoveOverlayCard(tp, 1, REASON_COST) return c:CheckRemoveOverlayCard(tp, 1, REASON_COST)
end end
c:RemoveOverlayCard(tp, 1, 1, REASON_COST) c:RemoveOverlayCard(tp, 1, 1, REASON_COST)
end end
function s.drtg(e, tp, eg, ep, ev, re, r, rp, chk) function s.drtg(e, tp, eg, ep, ev, re, r, rp, chk)
if chk == 0 then if chk == 0 then
return Duel.IsPlayerCanDraw(tp, 3) return Duel.IsPlayerCanDraw(tp, 3)
end end
Duel.SetTargetPlayer(tp) Duel.SetTargetPlayer(tp)
Duel.SetTargetParam(3) Duel.SetTargetParam(3)
Duel.SetOperationInfo(0, CATEGORY_DRAW, nil, 0, tp, 3) Duel.SetOperationInfo(0, CATEGORY_DRAW, nil, 0, tp, 3)
end end
function s.drop(e, tp, eg, ep, ev, re, r, rp) function s.drop(e, tp, eg, ep, ev, re, r, rp)
local p, d = Duel.GetChainInfo(0, CHAININFO_TARGET_PLAYER, CHAININFO_TARGET_PARAM) local p, d = Duel.GetChainInfo(0, CHAININFO_TARGET_PLAYER, CHAININFO_TARGET_PARAM)
if Duel.Draw(p, d, REASON_EFFECT) == 3 then if Duel.Draw(p, d, REASON_EFFECT) == 3 then
Duel.ShuffleHand(p) Duel.ShuffleHand(p)
Duel.BreakEffect() Duel.BreakEffect()
Duel.SkipPhase(tp, PHASE_DRAW, RESET_PHASE + PHASE_END, 1) Duel.SkipPhase(tp, PHASE_DRAW, RESET_PHASE + PHASE_END, 1)
Duel.SkipPhase(tp, PHASE_STANDBY, RESET_PHASE + PHASE_END, 1) Duel.SkipPhase(tp, PHASE_STANDBY, RESET_PHASE + PHASE_END, 1)
Duel.SkipPhase(tp, PHASE_MAIN1, RESET_PHASE + PHASE_END, 1) Duel.SkipPhase(tp, PHASE_MAIN1, RESET_PHASE + PHASE_END, 1)
Duel.SkipPhase(tp, PHASE_BATTLE, RESET_PHASE + PHASE_END, 1, 1) Duel.SkipPhase(tp, PHASE_BATTLE, RESET_PHASE + PHASE_END, 1, 1)
Duel.SkipPhase(tp, PHASE_MAIN2, RESET_PHASE + PHASE_END, 1) Duel.SkipPhase(tp, PHASE_MAIN2, RESET_PHASE + PHASE_END, 1)
local e1 = Effect.CreateEffect(e:GetHandler()) local e1 = Effect.CreateEffect(e:GetHandler())
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e1:SetType(EFFECT_TYPE_FIELD) e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANNOT_BP) e1:SetCode(EFFECT_CANNOT_BP)
e1:SetTargetRange(0, 1) e1:SetTargetRange(0, 1)
e1:SetReset(RESET_PHASE + PHASE_END) e1:SetReset(RESET_PHASE + PHASE_END)
Duel.RegisterEffect(e1, tp) Duel.RegisterEffect(e1, tp)
end end
end end
...@@ -4,84 +4,85 @@ ...@@ -4,84 +4,85 @@
local s = c33701020 local s = c33701020
local id = 33701020 local id = 33701020
function s.initial_effect(c) function s.initial_effect(c)
c:EnableReviveLimit() c:EnableReviveLimit()
aux.AddFusionProcFunRep(c, aux.FilterBoolFunction(Card.IsFusionSetCard, 0x144e), 3, false) aux.AddFusionProcFunRep(c, aux.FilterBoolFunction(Card.IsFusionSetCard, 0x144e), 3, false)
--special summon self --special summon self
local e1 = Effect.CreateEffect(c) local e1 = Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(id, 0)) e1:SetDescription(aux.Stringid(id, 0))
e1:SetCategory(CATEGORY_SPECIAL_SUMMON) e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
e1:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_TRIGGER_O) e1:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_TRIGGER_O)
e1:SetCode(EVENT_PHASE + PHASE_END) e1:SetCode(EVENT_PHASE + PHASE_END)
e1:SetRange(LOCATION_EXTRA) e1:SetRange(LOCATION_EXTRA)
e1:SetCountLimit(1) e1:SetCountLimit(1)
e1:SetCondition(s.spcon) e1:SetCondition(s.spcon)
e1:SetTarget(s.sptg) e1:SetTarget(s.sptg)
e1:SetOperation(s.spop) e1:SetOperation(s.spop)
c:RegisterEffect(e1) c:RegisterEffect(e1)
--end phase --end phase
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_TOGRAVE + CATEGORY_RECOVER) e2:SetCategory(CATEGORY_TOGRAVE + CATEGORY_RECOVER)
e2:SetType(EFFECT_TYPE_IGNITION) e2:SetType(EFFECT_TYPE_IGNITION)
e2:SetRange(LOCATION_MZONE) e2:SetRange(LOCATION_MZONE)
e2:SetCountLimit(1) e2:SetCountLimit(1)
e2:SetCondition(s.tgcon) e2:SetCondition(s.tgcon)
e2:SetTarget(s.tgtg) e2:SetTarget(s.tgtg)
e2:SetOperation(s.tgop) e2:SetOperation(s.tgop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
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_BATTLE_PHASE) local ct = Duel.GetActivityCount(tp, ACTIVITY_BATTLE_PHASE)
return Duel.GetTurnPlayer() == tp and ct == 0 return Duel.GetTurnPlayer() == tp and ct == 0
end end
function s.matfilter(c) function s.matfilter(c)
return c:IsSetCard(0x144e) and c:IsType(TYPE_MONSTER) and c:IsAbleToDeck() return c:IsSetCard(0x144e) and c:IsType(TYPE_MONSTER) and c:IsAbleToDeck()
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()
if chk == 0 then if chk == 0 then
return c:IsCanBeSpecialSummoned(e, 0, tp, true, true) and return c:IsCanBeSpecialSummoned(e, 0, tp, true, true) and Duel.GetLocationCountFromEx(tp)>0 and
Duel.IsExistingMatchingCard(s.matfilter, tp, LOCATION_GRAVE, 0, 3, nil) Duel.IsExistingMatchingCard(s.matfilter, tp, LOCATION_GRAVE, 0, 3, nil)
end end
Duel.SetOperationInfo(0, CATEGORY_TODECK, nil, 3, tp, LOCATION_GRAVE) Duel.SetOperationInfo(0, CATEGORY_TODECK, nil, 3, tp, LOCATION_GRAVE)
Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, c, 1, 0, 0) Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, c, 1, 0, 0)
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() if Duel.GetLocationCountFromEx(tp)<=0 then return end
Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_TODECK) local c = e:GetHandler()
local g = Duel.SelectMatchingCard(tp, s.matfilter, tp, LOCATION_GRAVE, 0, 3, 3, nil) Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_TODECK)
if #g > 2 and Duel.SendtoDeck(g, nil, 2, REASON_EFFECT) > 2 then local g = Duel.SelectMatchingCard(tp, s.matfilter, tp, LOCATION_GRAVE, 0, 3, 3, nil)
if c:IsRelateToEffect(e) and Duel.SpecialSummon(c, 0, tp, tp, true, true, POS_FACEUP) ~= 0 then if #g > 2 and Duel.SendtoDeck(g, nil, 2, REASON_EFFECT) > 2 then
c:CompleteProcedure() if c:IsRelateToEffect(e) and Duel.SpecialSummon(c, 0, tp, tp, true, true, POS_FACEUP) ~= 0 then
end c:CompleteProcedure()
end end
end
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 Duel.GetCurrentPhase() == PHASE_MAIN1 and not Duel.CheckPhaseActivity() return Duel.GetCurrentPhase() == PHASE_MAIN1 and not Duel.CheckPhaseActivity()
end end
function s.tgfilter(c) 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 return Duel.IsExistingMatchingCard(s.tgfilter,tp,LOCATION_DECK,0,1,nil) end if chk==0 then return Duel.IsExistingMatchingCard(s.tgfilter,tp,LOCATION_DECK,0,1,nil) end
Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,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)
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(tp,aux.dncheck,false,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
Duel.BreakEffect() Duel.BreakEffect()
Duel.SkipPhase(tp, PHASE_MAIN1, RESET_PHASE + PHASE_END, 1) Duel.SkipPhase(tp, PHASE_MAIN1, RESET_PHASE + PHASE_END, 1)
local e1 = Effect.CreateEffect(e:GetHandler()) local e1 = Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD) e1:SetType(EFFECT_TYPE_FIELD)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e1:SetTargetRange(1, 0) e1:SetTargetRange(1, 0)
e1:SetCode(EFFECT_CANNOT_BP) e1:SetCode(EFFECT_CANNOT_BP)
e1:SetReset(RESET_PHASE + PHASE_END) e1:SetReset(RESET_PHASE + PHASE_END)
Duel.RegisterEffect(e1, tp) Duel.RegisterEffect(e1, tp)
end end
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