Commit c478d6b6 authored by Nemo Ma's avatar Nemo Ma

fix

parent 994cea7e
......@@ -97,7 +97,8 @@ function cm.destg(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
local rc=re:GetHandler()
local g=Duel.GetMatchingGroup(cm.filter,tp,LOCATION_DECK,0,Group.FromCards(c,rc))
if chk==0 then return rc:IsLocation(LOCATION_HAND+LOCATION_ONFIELD) and rc:IsDestructable() and rc:IsRelateToEffect(re) and #g>0 end
if chk==0 then return rc:IsLocation(LOCATION_HAND+LOCATION_ONFIELD) and rc:IsDestructable() and rc:IsRelateToEffect(re) and #g>0 and e:GetHandler():GetFlagEffect(m)==0 end
e:GetHandler():RegisterFlagEffect(m,RESET_EVENT+RESETS_STANDARD+RESET_CHAIN,0,1)
local loc=(LOCATION_DECK&(c:GetLocation()))&(rc:GetLocation())
Duel.SetOperationInfo(0,CATEGORY_DESTROY,nil,3,0,loc)
end
......
......@@ -29,10 +29,10 @@ s.VHisc_Vampire=true
function s.negcon(e,tp,eg,ep,ev,re,r,rp)
return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED)
and re:IsActiveType(TYPE_SPELL)
and (re:IsActiveType(TYPE_SPELL) or (re:IsHasType(EFFECT_TYPE_ACTIVATE) and c:IsType(TYPE_SPELL))
end
function s.negcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsCanRemoveCounter(tp,LOCATION_ONFIELD,0,0x32b,4,REASON_COST) and re:GetHandler():IsAbleToHand() end
if chk==0 then return Duel.IsCanRemoveCounter(tp,LOCATION_ONFIELD,0,0x32b,4,REASON_COST) and (re:GetHandler():IsAbleToHand() or re:GetHandler():IsStatus(STATUS_ACT_FROM_HAND)) end
Duel.RemoveCounter(tp,LOCATION_ONFIELD,0,0x32b,4,REASON_COST)
end
function s.negop(e,tp,eg,ep,ev,re,r,rp)
......@@ -42,6 +42,7 @@ function s.negop(e,tp,eg,ep,ev,re,r,rp)
end
function s.repop(e,tp,eg,ep,ev,re,r,rp)
if e:GetHandler():IsAbleToHand() then
if e:GetHandler():IsOnField() then e:GetHandler():CancelToGrave() end
Duel.SendtoHand(e:GetHandler(),nil,REASON_EFFECT)
Duel.ConfirmCards(1-tp,e:GetHandler())
end
......
local m=53711001
local cm=_G["c"..m]
cm.name="魔理沙役 RK"
if not pcall(function() require("expansions/script/c53702500") end) then require("script/c53702500") end
function cm.initial_effect(c)
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(m,0))
e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
e1:SetType(EFFECT_TYPE_IGNITION)
e1:SetRange(LOCATION_HAND)
e1:SetCost(cm.spcost)
e1:SetTarget(cm.sptg)
e1:SetOperation(cm.spop)
c:RegisterEffect(e1)
SNNM.MRSYakuSP(c,1,TYPE_SPELL)
local e2=Effect.CreateEffect(c)
e2:SetDescription(aux.Stringid(m,1))
e2:SetCategory(CATEGORY_DESTROY)
......@@ -41,109 +34,6 @@ function cm.initial_effect(c)
e4:SetTarget(cm.tg)
e4:SetOperation(cm.op)
c:RegisterEffect(e4)
local e5=Effect.CreateEffect(c)
e5:SetDescription(aux.Stringid(m,0))
e5:SetCategory(CATEGORY_SPECIAL_SUMMON)
e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F)
e5:SetCode(EVENT_CUSTOM+53711005)
e5:SetRange(LOCATION_HAND)
e5:SetCost(cm.spcost)
e5:SetTarget(cm.sptg)
e5:SetOperation(cm.spop)
c:RegisterEffect(e5)
end
function cm.spfilter1(c,e,tp)
if c:IsLocation(LOCATION_HAND) then
return c:IsType(TYPE_SPELL) and c:IsDiscardable()
else
return e:GetHandler():IsOriginalSetCard(0x3538) and e:GetHandler():IsLevel(4) and c:IsAbleToRemove() and c:IsHasEffect(53711009,tp)
end
end
function cm.spfilter2(c,e,tp)
return c:IsSetCard(0x3538) and c:IsType(TYPE_SPELL)
end
function cm.timefilter(c,tp)
return c:IsHasEffect(53711065,tp) and c:GetFlagEffect(53711015)<2
end
function cm.fselect(g,ct)
local g2=g:Filter(Card.IsLocation,nil,LOCATION_DECK)
return aux.dncheck(g2) and #g2<=ct
end
function cm.spcost(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
local ltime=0
local timeg=Duel.GetMatchingGroup(cm.timefilter,tp,LOCATION_MZONE,0,c,tp)
if #timeg>0 then
local ttct=0
for timec in aux.Next(timeg) do
local timect=timec:GetFlagEffect(53711015)
ttct=ttct+timect
end
ltime=2*#timeg-ttct
end
local g=Duel.GetMatchingGroup(cm.spfilter1,tp,LOCATION_HAND+LOCATION_GRAVE,0,c,e,tp)
local gdg=Duel.GetMatchingGroup(cm.spfilter2,tp,LOCATION_DECK,0,c,e,tp)
local ct=gdg:GetClassCount(Card.GetCode)
if ct>ltime then ct=ltime end
if chk==0 then return #g+ct>0 end
g:Merge(gdg)
if ltime>0 then
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(m,3))
local sg=g:SelectSubGroup(tp,cm.fselect,false,1,1,ct)
local dg=sg:Filter(Card.IsLocation,nil,LOCATION_DECK)
if #dg>0 then
if #timeg>1 then
for i=1,#dg do
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(m,5))
local usedg=timeg:FilterSelect(tp,cm.timefilter,1,1,nil)
Duel.HintSelection(usedg)
local usedc=usedg:GetFirst()
local trg=usedc:GetFlagEffect(53711015)
usedc:RegisterFlagEffect(53711015,RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(53711015,trg+3))
end
else
for i=1,#dg do
local trg=timeg:GetFirst():GetFlagEffect(53711015)
timeg:GetFirst():RegisterFlagEffect(53711015,RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(53711015,trg+3))
end
end
end
local tc=sg:GetFirst()
while tc do
local te=tc:IsHasEffect(53711009,tp)
if te then
Duel.Remove(tc,POS_FACEUP,REASON_EFFECT+REASON_REPLACE)
else
Duel.SendtoGrave(tc,REASON_COST+REASON_DISCARD)
end
tc=sg:GetNext()
end
else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD)
local sg=Duel.SelectMatchingCard(tp,cm.spfilter1,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,c,e,tp)
local tc=sg:GetFirst()
while tc do
local te=tc:IsHasEffect(53711009,tp)
if te then
Duel.Remove(tc,POS_FACEUP,REASON_COST+REASON_REPLACE)
else
Duel.SendtoGrave(tc,REASON_COST+REASON_DISCARD)
end
tc=sg:GetNext()
end
end
end
function cm.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0)
end
function cm.spop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if c:IsRelateToEffect(e) then
Duel.SpecialSummon(c,SUMMON_VALUE_SELF,tp,tp,false,false,POS_FACEUP)
end
end
function cm.scon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+SUMMON_VALUE_SELF
......
local m=53711002
local cm=_G["c"..m]
cm.name="魔理沙役 KHK"
if not pcall(function() require("expansions/script/c53702500") end) then require("script/c53702500") end
function cm.initial_effect(c)
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(m,0))
e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
e1:SetType(EFFECT_TYPE_IGNITION)
e1:SetRange(LOCATION_HAND)
e1:SetCost(cm.spcost)
e1:SetTarget(cm.sptg)
e1:SetOperation(cm.spop)
c:RegisterEffect(e1)
SNNM.MRSYakuSP(c,2,TYPE_SPELL)
local e2=Effect.CreateEffect(c)
e2:SetDescription(aux.Stringid(m,1))
e2:SetCategory(CATEGORY_TODECK)
......@@ -33,109 +26,6 @@ function cm.initial_effect(c)
e3:SetTarget(cm.tg)
e3:SetOperation(cm.op)
c:RegisterEffect(e3)
local e5=Effect.CreateEffect(c)
e5:SetDescription(aux.Stringid(m,0))
e5:SetCategory(CATEGORY_SPECIAL_SUMMON)
e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F)
e5:SetCode(EVENT_CUSTOM+53711005)
e5:SetRange(LOCATION_HAND)
e5:SetCost(cm.spcost)
e5:SetTarget(cm.sptg)
e5:SetOperation(cm.spop)
c:RegisterEffect(e5)
end
function cm.spfilter1(c,e,tp)
if c:IsLocation(LOCATION_HAND) then
return c:IsType(TYPE_SPELL) and c:IsDiscardable()
else
return e:GetHandler():IsOriginalSetCard(0x3538) and e:GetHandler():IsLevel(4) and c:IsAbleToRemove() and c:IsHasEffect(53711009,tp)
end
end
function cm.spfilter2(c,e,tp)
return c:IsSetCard(0x3538) and c:IsType(TYPE_SPELL)
end
function cm.timefilter(c,tp)
return c:IsHasEffect(53711065,tp) and c:GetFlagEffect(53711015)<2
end
function cm.fselect(g,ct)
local g2=g:Filter(Card.IsLocation,nil,LOCATION_DECK)
return aux.dncheck(g2) and #g2<=ct
end
function cm.spcost(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
local ltime=0
local timeg=Duel.GetMatchingGroup(cm.timefilter,tp,LOCATION_MZONE,0,c,tp)
if #timeg>0 then
local ttct=0
for timec in aux.Next(timeg) do
local timect=timec:GetFlagEffect(53711015)
ttct=ttct+timect
end
ltime=2*#timeg-ttct
end
local g=Duel.GetMatchingGroup(cm.spfilter1,tp,LOCATION_HAND+LOCATION_GRAVE,0,c,e,tp)
local gdg=Duel.GetMatchingGroup(cm.spfilter2,tp,LOCATION_DECK,0,c,e,tp)
local ct=gdg:GetClassCount(Card.GetCode)
if ct>ltime then ct=ltime end
if chk==0 then return #g+ct>1 end
g:Merge(gdg)
if ltime>0 then
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(m,3))
local sg=g:SelectSubGroup(tp,cm.fselect,false,2,2,ct)
local dg=sg:Filter(Card.IsLocation,nil,LOCATION_DECK)
if #dg>0 then
if #timeg>1 then
for i=1,#dg do
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(m,5))
local usedg=timeg:FilterSelect(tp,cm.timefilter,1,1,nil)
Duel.HintSelection(usedg)
local usedc=usedg:GetFirst()
local trg=usedc:GetFlagEffect(53711015)
usedc:RegisterFlagEffect(53711015,RESET_EVENT+RESETS_STANDARD+RESET_DISABLE+RESET_PHASE+PHASE_END,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(53711015,trg+3))
end
else
for i=1,#dg do
local trg=timeg:GetFirst():GetFlagEffect(53711015)
timeg:GetFirst():RegisterFlagEffect(53711015,RESET_EVENT+RESETS_STANDARD+RESET_DISABLE+RESET_PHASE+PHASE_END,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(53711015,trg+3))
end
end
end
local tc=sg:GetFirst()
while tc do
local te=tc:IsHasEffect(53711009,tp)
if te then
Duel.Remove(tc,POS_FACEUP,REASON_EFFECT+REASON_REPLACE)
else
Duel.SendtoGrave(tc,REASON_COST+REASON_DISCARD)
end
tc=sg:GetNext()
end
else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD)
local sg=Duel.SelectMatchingCard(tp,cm.spfilter1,tp,LOCATION_HAND+LOCATION_GRAVE,0,2,2,c,e,tp)
local tc=sg:GetFirst()
while tc do
local te=tc:IsHasEffect(53711009,tp)
if te then
Duel.Remove(tc,POS_FACEUP,REASON_COST+REASON_REPLACE)
else
Duel.SendtoGrave(tc,REASON_COST+REASON_DISCARD)
end
tc=sg:GetNext()
end
end
end
function cm.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0)
end
function cm.spop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if c:IsRelateToEffect(e) then
Duel.SpecialSummon(c,SUMMON_VALUE_SELF,tp,tp,false,false,POS_FACEUP)
end
end
function cm.scon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+SUMMON_VALUE_SELF
......
local m=53711004
local cm=_G["c"..m]
cm.name="魔理沙役 YUH"
if not pcall(function() require("expansions/script/c53702500") end) then require("script/c53702500") end
function cm.initial_effect(c)
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(m,0))
e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
e1:SetType(EFFECT_TYPE_IGNITION)
e1:SetRange(LOCATION_HAND)
e1:SetCost(cm.spcost)
e1:SetTarget(cm.sptg)
e1:SetOperation(cm.spop)
c:RegisterEffect(e1)
SNNM.MRSYakuSP(c,4,TYPE_MONSTER+TYPE_SPELL+TYPE_TRAP)
local e2=Effect.CreateEffect(c)
e2:SetDescription(aux.Stringid(m,1))
e2:SetCategory(CATEGORY_SPECIAL_SUMMON)
......@@ -33,109 +26,6 @@ function cm.initial_effect(c)
e3:SetTarget(cm.distg)
e3:SetOperation(cm.disop)
c:RegisterEffect(e3)
local e5=Effect.CreateEffect(c)
e5:SetDescription(aux.Stringid(m,0))
e5:SetCategory(CATEGORY_SPECIAL_SUMMON)
e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F)
e5:SetCode(EVENT_CUSTOM+53711005)
e5:SetRange(LOCATION_HAND)
e5:SetCost(cm.spcost)
e5:SetTarget(cm.sptg)
e5:SetOperation(cm.spop)
c:RegisterEffect(e5)
end
function cm.spfilter1(c,e,tp)
if c:IsLocation(LOCATION_HAND) then
return c:IsDiscardable()
else
return e:GetHandler():IsOriginalSetCard(0x3538) and e:GetHandler():IsLevel(4) and c:IsAbleToRemove() and c:IsHasEffect(53711009,tp)
end
end
function cm.spfilter2(c,e,tp)
return c:IsSetCard(0x3538) and c:IsType(TYPE_SPELL)
end
function cm.timefilter(c,tp)
return c:IsHasEffect(53711065,tp) and c:GetFlagEffect(53711015)<2
end
function cm.fselect(g,ct)
local g2=g:Filter(Card.IsLocation,nil,LOCATION_DECK)
return aux.dncheck(g2) and #g2<=ct
end
function cm.spcost(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
local ltime=0
local timeg=Duel.GetMatchingGroup(cm.timefilter,tp,LOCATION_MZONE,0,c,tp)
if #timeg>0 then
local ttct=0
for timec in aux.Next(timeg) do
local timect=timec:GetFlagEffect(53711015)
ttct=ttct+timect
end
ltime=2*#timeg-ttct
end
local g=Duel.GetMatchingGroup(cm.spfilter1,tp,LOCATION_HAND+LOCATION_GRAVE,0,c,e,tp)
local gdg=Duel.GetMatchingGroup(cm.spfilter2,tp,LOCATION_DECK,0,c,e,tp)
local ct=gdg:GetClassCount(Card.GetCode)
if ct>ltime then ct=ltime end
if chk==0 then return #g+ct>3 end
g:Merge(gdg)
if ltime>0 then
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(m,3))
local sg=g:SelectSubGroup(tp,cm.fselect,false,4,4,ct)
local dg=sg:Filter(Card.IsLocation,nil,LOCATION_DECK)
if #dg>0 then
if #timeg>1 then
for i=1,#dg do
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(m,5))
local usedg=timeg:FilterSelect(tp,cm.timefilter,1,1,nil)
Duel.HintSelection(usedg)
local usedc=usedg:GetFirst()
local trg=usedc:GetFlagEffect(53711015)
usedc:RegisterFlagEffect(53711015,RESET_EVENT+RESETS_STANDARD+RESET_DISABLE+RESET_PHASE+PHASE_END,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(53711015,trg+3))
end
else
for i=1,#dg do
local trg=timeg:GetFirst():GetFlagEffect(53711015)
timeg:GetFirst():RegisterFlagEffect(53711015,RESET_EVENT+RESETS_STANDARD+RESET_DISABLE+RESET_PHASE+PHASE_END,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(53711015,trg+3))
end
end
end
local tc=sg:GetFirst()
while tc do
local te=tc:IsHasEffect(53711009,tp)
if te then
Duel.Remove(tc,POS_FACEUP,REASON_COST+REASON_REPLACE)
else
Duel.SendtoGrave(tc,REASON_COST+REASON_DISCARD)
end
tc=sg:GetNext()
end
else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD)
local sg=Duel.SelectMatchingCard(tp,cm.spfilter1,tp,LOCATION_HAND+LOCATION_GRAVE,0,4,4,c,e,tp)
local tc=sg:GetFirst()
while tc do
local te=tc:IsHasEffect(53711009,tp)
if te then
Duel.Remove(tc,POS_FACEUP,REASON_EFFECT+REASON_REPLACE)
else
Duel.SendtoGrave(tc,REASON_COST+REASON_DISCARD)
end
tc=sg:GetNext()
end
end
end
function cm.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0)
end
function cm.spop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if c:IsRelateToEffect(e) then
Duel.SpecialSummon(c,SUMMON_VALUE_SELF,tp,tp,false,false,POS_FACEUP)
end
end
function cm.scon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+SUMMON_VALUE_SELF
......
......@@ -19,7 +19,7 @@ function cm.initial_effect(c)
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE)
e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e2:SetCode(53711065)
e2:SetCode(53711099)
e2:SetRange(LOCATION_MZONE)
c:RegisterEffect(e2)
end
......@@ -33,7 +33,7 @@ function cm.schfilter(c,e,tp)
if #timeg>0 then
local ttct=0
for timec in aux.Next(timeg) do
local timect=timec:GetFlagEffect(53711015)
local timect=timec:GetFlagEffect(53711065)
ttct=ttct+timect
end
ltime=2*#timeg-ttct
......@@ -42,7 +42,7 @@ function cm.schfilter(c,e,tp)
return c:IsSetCard(0x3538) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and g:CheckSubGroup(cm.fselect,cd,cd,ltime)
end
function cm.timefilter(c,tp)
return c:IsHasEffect(53711065,tp) and c:GetFlagEffect(53711015)<2
return c:IsHasEffect(53711099,tp) and c:GetFlagEffect(53711065)<2
end
function cm.spfilter(c,e,tp,cd,ct)
if c:IsLocation(LOCATION_HAND) then
......
......@@ -61,7 +61,7 @@ function cm.reset(e,tp,eg,ep,ev,re,r,rp)
Duel.RaiseEvent(e:GetHandler(),EVENT_CUSTOM+m,re,r,rp,ep,cm[0])
cm[0]=0
end
function cm.cfilter(c)
function cm.cfilter(c,tp)
local typ=c:GetType()&0x7
return not c:IsPublic() and Duel.IsExistingMatchingCard(cm.thfilter,tp,LOCATION_DECK,0,1,nil,typ)
end
......@@ -69,9 +69,9 @@ function cm.thfilter(c,typ)
return not c:IsType(typ) and c:IsSetCard(0x3538) and c:IsAbleToHand()
end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(cm.cfilter,tp,LOCATION_HAND,0,1,nil) end
if chk==0 then return Duel.IsExistingMatchingCard(cm.cfilter,tp,LOCATION_HAND,0,1,nil,tp) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM)
local g=Duel.SelectMatchingCard(tp,cm.cfilter,tp,LOCATION_HAND,0,1,1,nil)
local g=Duel.SelectMatchingCard(tp,cm.cfilter,tp,LOCATION_HAND,0,1,1,nil,tp)
Duel.ConfirmCards(1-tp,g)
Duel.ShuffleHand(tp)
e:SetLabel(g:GetFirst():GetType()&0x7)
......
......@@ -42,13 +42,17 @@ end
function cm.spop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local g=Duel.GetMatchingGroup(aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,nil)
local res=e:GetHandler():IsLinkState() and not Duel.IsExistingMatchingCard(function(c)return c:IsFaceup() and c:IsType(TYPE_LINK)end,tp,LOCATION_MZONE,0,1,nil)
if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)~=0 and res and #g>0 and Duel.SelectYesNo(tp,aux.Stringid(m,1)) then
if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)~=0 and c:IsLocation(LOCATION_MZONE) and c:IsFaceup() then
local res=false
local lg=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil)
for tc in aux.Next(lg) do if tc:GetLinkedGroup():IsContains(c) then res=true end end
if res and not Duel.IsExistingMatchingCard(function(c)return c:IsFaceup() and c:IsType(TYPE_LINK)end,tp,LOCATION_MZONE,0,1,nil) and #g>0 and Duel.SelectYesNo(tp,aux.Stringid(20590515,2)) then
Duel.BreakEffect()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY)
local dg=g:Select(tp,1,1,nil)
Duel.HintSelection(dg)
Duel.Destroy(dg,REASON_EFFECT)
Duel.Destroy(dg,REASON_EFFECT)
end
end
end
function cm.spr(e,tp,eg,ep,ev,re,r,rp)
......
......@@ -3,26 +3,26 @@ function c67200708.initial_effect(c)
aux.EnablePendulumAttribute(c)
--token
local e4=Effect.CreateEffect(c)
e4:SetDescription(aux.Stringid(67200710,1))
e4:SetDescription(aux.Stringid(67200708,1))
e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e4:SetRange(LOCATION_EXTRA)
e4:SetCode(EVENT_CHAINING)
e4:SetCondition(c67200710.spcon1)
e4:SetOperation(c67200710.spop1)
e4:SetCondition(c67200708.spcon1)
e4:SetOperation(c67200708.spop1)
c:RegisterEffect(e4)
end
function c67200710.spcon1(e,tp,eg,ep,ev,re,r,rp)
function c67200708.spcon1(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
return c:IsFaceup()
end
function c67200710.psfilter(c)
function c67200708.psfilter(c)
return c:IsSetCard(0x67f) and c:IsType(TYPE_PENDULUM) and not c:IsForbidden()
end
function c67200710.spop1(e,tp,eg,ep,ev,re,r,rp)
if not Duel.CheckLocation(tp,LOCATION_PZONE,0) and not Duel.CheckLocation(tp,LOCATION_PZONE,1) and Duel.IsExistingMatchingCard(c67200710.psfilter,tp,LOCATION_DECK,0,1,nil) end then return end
function c67200708.spop1(e,tp,eg,ep,ev,re,r,rp)
if not Duel.CheckLocation(tp,LOCATION_PZONE,0) and not Duel.CheckLocation(tp,LOCATION_PZONE,1) and Duel.IsExistingMatchingCard(c67200708.psfilter,tp,LOCATION_DECK,0,1,nil) then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD)
local g=Duel.SelectMatchingCard(tp,c67200710.psfilter,tp,LOCATION_DECK,0,1,1,nil)
local g=Duel.SelectMatchingCard(tp,c67200708.psfilter,tp,LOCATION_DECK,0,1,1,nil)
if g:GetCount()>0 then
Duel.MoveToField(g:GetFirst(),tp,tp,LOCATION_PZONE,POS_FACEUP,true)
end
......
......@@ -21,12 +21,13 @@ function c71400067.initial_effect(c)
e2:SetCategory(CATEGORY_SPECIAL_SUMMON)
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O)
e2:SetCode(EVENT_PHASE+PHASE_END)
e2:SetRange(LOCATION_MZONE)
e2:SetCountLimit(1,71500067)
e2:SetCondition(c71400067.con2)
e2:SetCost(c71400067.cost2)
e2:SetTarget(c71400067.tg2)
e2:SetOperation(c71400067.op2)
c:RegisterEffect(e1)
c:RegisterEffect(e2)
if not c71400067.global_check then
c71400067.global_check=true
local ge1=Effect.CreateEffect(c)
......@@ -38,7 +39,7 @@ function c71400067.initial_effect(c)
end
function c71400067.spcheckop(e,tp,eg,ep,ev,re,r,rp)
local tc=eg:GetFirst()
if tc:IsSummonType(SUMMON_TYPE_XYZ) and tc:IsSetCard(0x714) then Duel.RegisterFlagEffect(0,71400067,RESET_PHASE+PHASE_END,0,1) end
if tc:IsSummonType(SUMMON_TYPE_XYZ) and tc:IsSetCard(0x714) then Duel.RegisterFlagEffect(0,71400067,EVENT_PHASE+PHASE_END,0,1) end
end
function c71400067.con1(e,tp,eg,ep,ev,re,r,rp)
local ph=Duel.GetCurrentPhase()
......@@ -84,6 +85,7 @@ function c71400067.op2(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local tc=Duel.SelectMatchingCard(tp,c71400067.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,e:GetHandler()):GetFirst()
if tc and Duel.SpecialSummonStep(tc,0,tp,tp,true,false,POS_FACEUP) then
local c=e:GetHandler()
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(71400067,2))
e1:SetType(EFFECT_TYPE_SINGLE)
......
......@@ -33,7 +33,6 @@ function c71401001.initial_effect(c)
c:RegisterEffect(e2a)
yume.ButterflyCounter()
end
end
function c71401001.con1(e,tp,eg,ep,ev,re,r,rp)
return re:IsActiveType(TYPE_MONSTER)
end
......@@ -119,7 +118,7 @@ function yume.AddButterflySpell(c,id)
c:RegisterEffect(e1)
end
function yume.ButterflyPlaceTg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 and c:CheckUniqueOnField(tp) end
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 and e:GetHandler():CheckUniqueOnField(tp) end
end
function yume.ButterflyPlaceCost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetCustomActivityCount(71401001,tp,ACTIVITY_CHAIN)==0 end
......
......@@ -39,7 +39,7 @@ function c71401002.op2(e,tp,eg,ep,ev,re,r,rp)
if tc then
local b1=tc:IsAbleToHand()
local b2=not tc:IsForbidden() and tc:CheckUniqueOnField(tp)
if b1 and (not b2 or Duel.SelectOption(tp,1152,aux.Stringid(71401002,1))==0)) then
if b1 and (not b2 or Duel.SelectOption(tp,1152,aux.Stringid(71401002,1))==0) then
Duel.SendtoHand(tc,nil,REASON_EFFECT)
Duel.ConfirmCards(1-tp,tc)
else
......
......@@ -49,7 +49,7 @@ function c71401003.op2(e,tp,eg,ep,ev,re,r,rp)
local b1=tc:IsAbleToHand()
local b2=not tc:IsForbidden() and tc:CheckUniqueOnField(tp)
local flag=0
if b1 and (not b2 or Duel.SelectOption(tp,1152,aux.Stringid(71401003,1))==0)) then
if b1 and (not b2 or Duel.SelectOption(tp,1152,aux.Stringid(71401003,1))==0) then
flag=Duel.SendtoHand(tc,nil,REASON_EFFECT)
Duel.ConfirmCards(1-tp,tc)
else
......
......@@ -27,7 +27,7 @@ function c71401009.initial_effect(c)
e2:SetOperation(c71401009.op2)
c:RegisterEffect(e2)
--remove monster
local e3=Effect.CreateEffect(rc)
local e3=Effect.CreateEffect(c)
e3:SetDescription(aux.Stringid(71401009,1))
e3:SetCategory(CATEGORY_REMOVE)
e3:SetType(EFFECT_TYPE_QUICK_O)
......@@ -49,7 +49,7 @@ end
function c71401009.atkval(e,c)
return Duel.GetMatchingGroupCount(c71401009.atkfilter,0,LOCATION_ONFIELD,LOCATION_ONFIELD,nil)*200
end
function c71401009.spcon1(e,tp,eg,ep,ev,re,r,rp)
function c71401009.con2(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2
end
function c71401009.cost2(e,tp,eg,ep,ev,re,r,rp,chk)
......
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