Commit 1e0b6f4e authored by Huangnan's avatar Huangnan

fix

parent 63725340
Pipeline #38907 passed with stages
in 62 minutes and 10 seconds
......@@ -63,7 +63,7 @@ function cm.fusion(c)
return c:IsFusionSetCard(0x3ccd)
end
function cm.exlimit(e,se,sp,st)
return (se:GetHandler():IsActiveType(TYPE_SPELL) and st&SUMMON_TYPE_FUSION>0) or not e:GetHandler():IsLocation(LOCATION_EXTRA)
return (se:IsActiveType(TYPE_SPELL) and st&SUMMON_TYPE_FUSION>0) or not e:GetHandler():IsLocation(LOCATION_EXTRA)
end
function cm.copyfilter(c)
return c:IsControlerCanBeChanged()
......
--教团的圣女 让·达克
--天命圣女 让·达克
if not pcall(function() require("expansions/script/c16104200") end) then require("script/c16104200") end
local m,cm=rk.set(16104232)
function cm.initial_effect(c)
......@@ -78,7 +78,7 @@ end
function cm.thop(e,tp)
local c=aux.ExceptThisCard(e)
if c then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SET)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RESOLVECARD)
local g=Duel.SelectMatchingCard(tp,cm.thfilter,tp,LOCATION_GRAVE,0,1,1,nil)
if g:GetCount()>0 then
local tc=g:GetFirst()
......
......@@ -76,9 +76,9 @@ function cm.togop(e,tp,eg,ep,ev,re,r,rp)
local s1=ct:IsSummonable(true,nil,1)
local s2=ct:IsMSetable(true,nil,1)
if (s1 and s2 and Duel.SelectPosition(tp,ct,POS_FACEUP_ATTACK+POS_FACEDOWN_DEFENSE)==POS_FACEUP_ATTACK) or not s2 then
Duel.Summon(tp,ct,true,nil,1)
Duel.Summon(tp,ct,true,e12,1)
else
Duel.MSet(tp,ct,true,nil,1)
Duel.MSet(tp,ct,true,e13,1)
end
end
end
......
......@@ -75,17 +75,19 @@ function cm.spop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if c:IsRelateToEffect(e) and c:CheckUniqueOnField(tp) and not c:IsForbidden() then
Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true)
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetDescription(aux.Stringid(m,4))
e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CLIENT_HINT)
e1:SetTargetRange(1,0)
e1:SetCountLimit(1)
e1:SetReset(RESET_PHASE+PHASE_END)
e1:SetCondition(cm.con)
e1:SetOperation(cm.op1)
Duel.RegisterEffect(e1,tp)
if Duel.GetTurnPlayer()==tp then
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(m,4))
e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CLIENT_HINT)
e1:SetTargetRange(1,0)
e1:SetCountLimit(1)
e1:SetReset(RESET_PHASE+PHASE_END)
e1:SetCondition(cm.con)
e1:SetOperation(cm.op1)
Duel.RegisterEffect(e1,tp)
end
end
end
function cm.sfilter(c)
......
......@@ -61,7 +61,6 @@ function cm.activate(e,tp,eg,ep,ev,re,r,rp)
end
function cm.rlscheck(e,c)
if not c:IsType(TYPE_SPELL+TYPE_TRAP) then return false end
return not (Duel.GetCurrentChain()<2 and (c:IsStatus(STATUS_LEAVE_CONFIRMED) or c:IsStatus(STATUS_ACTIVATE_DISABLED)))
end
function cm.condition_for_sum(e)
return not sinnte_check
......@@ -90,7 +89,7 @@ function cm.setcost(e,tp,eg,ep,ev,re,r,rp,chk)
Duel.RegisterEffect(e1,tp)
end
function cm.rmlimit(e,c,tp,r,re)
return c:IsCode(e:GetLabel()) and re and re:IsActiveType(TYPE_MONSTER) and re:GetHandler():IsCode(m) and r==REASON_COST
return c:IsCode(e:GetLabel()) and re and re:GetHandler():IsCode(m) and r==REASON_COST
end
function cm.settg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsSSetable() end
......
......@@ -73,7 +73,7 @@ function cm.setcost(e,tp,eg,ep,ev,re,r,rp,chk)
Duel.RegisterEffect(e1,tp)
end
function cm.rmlimit(e,c,tp,r,re)
return c:IsCode(e:GetLabel()) and re and re:IsActiveType(TYPE_MONSTER) and re:GetHandler():IsCode(m) and r==REASON_COST
return c:IsCode(e:GetLabel()) and re and re:GetHandler():IsCode(m) and r==REASON_COST
end
function cm.settg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsSSetable() end
......
......@@ -39,13 +39,13 @@ end
function cm.filter2(c,ct,ct1)
return c:IsAbleToChangeControler() and ((c:IsLocation(LOCATION_MZONE) and ct>0) or (c:IsLocation(LOCATION_SZONE) and not c:IsLocation(LOCATION_FZONE) and ct1>0) or c:IsLocation(LOCATION_FZONE))
end
function cm.ctlfilter(c,ct,ct1)
return c:IsAbleToChangeControler()
function cm.ctlfilter(c,e)
return c:IsAbleToChangeControler() and c:IsCanBeEffectTarget(e)
end
function cm.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
local ct1=Duel.GetLocationCount(tp,LOCATION_MZONE)
local ct2=Duel.GetLocationCount(tp,LOCATION_SZONE-LOCATION_FZONE)
local g=Duel.GetMatchingGroup(cm.ctlfilter,tp,0,LOCATION_ONFIELD,nil)
local g=Duel.GetMatchingGroup(cm.ctlfilter,tp,0,LOCATION_ONFIELD,nil,e)
if chkc then return cm.filter(chkc,ct1,ct2) and chkc:IsLocation(LOCATION_ONFIELD) and chkc:IsControler(1-tp) end
if chk==0 then return Duel.IsExistingTarget(cm.filter2,tp,0,LOCATION_ONFIELD,1,nil,ct1,ct2) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL)
......@@ -113,12 +113,12 @@ function cm.setcost(e,tp,eg,ep,ev,re,r,rp,chk)
e1:SetCode(EFFECT_CANNOT_REMOVE)
e1:SetTargetRange(1,0)
e1:SetTarget(cm.rmlimit)
e1:SetLabel(code)
e1:SetLabel(e:GetLabel(),code)
e1:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e1,tp)
end
function cm.rmlimit(e,c,tp,r,re)
return c:IsCode(e:GetLabel()) and re and re:IsActiveType(TYPE_MONSTER) and re:GetHandler():IsCode(m) and r==REASON_COST
return c:IsCode(e:GetLabel()) and re and re:GetHandler():IsCode(m) and r==REASON_COST
end
function cm.settg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsSSetable() end
......
......@@ -59,7 +59,7 @@ function cm.sfilter(c)
return c:IsSummonable(true,nil,1) and c:IsSetCard(0xcc5)
end
function cm.con(e,tp)
return (Duel.GetCurrentPhase()>=PHASE_MAIN1 and Duel.GetCurrentPhase()<=PHASE_MAIN2) and Duel.IsExistingMatchingCard(cm.sfilter,tp,LOCATION_HAND,0,1,nil)
return (Duel.GetCurrentPhase()==PHASE_MAIN1 and Duel.GetCurrentPhase()==PHASE_MAIN2) and Duel.IsExistingMatchingCard(cm.sfilter,tp,LOCATION_HAND,0,1,nil)
end
function cm.op1(e,tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SUMMON)
......
......@@ -64,9 +64,9 @@ function cm.togop(e,tp,eg,ep,ev,re,r,rp)
local s1=ct:IsSummonable(true,nil,1)
local s2=ct:IsMSetable(true,nil,1)
if (s1 and s2 and Duel.SelectPosition(tp,ct,POS_FACEUP_ATTACK+POS_FACEDOWN_DEFENSE)==POS_FACEUP_ATTACK) or not s2 then
Duel.Summon(tp,ct,true,nil,1)
Duel.Summon(tp,ct,true,e12,1)
else
Duel.MSet(tp,ct,true,nil,1)
Duel.MSet(tp,ct,true,e13,1)
end
end
end
......
......@@ -5,61 +5,54 @@ function c16400655.initial_effect(c)
c:EnableReviveLimit()
--tohand
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(16400655,0))
e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOGRAVE)
e1:SetCategory(CATEGORY_TOGRAVE)
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e1:SetProperty(EFFECT_FLAG_DELAY)
e1:SetCode(EVENT_SPSUMMON_SUCCESS)
e1:SetCountLimit(1,16400655)
e1:SetCondition(c16400655.spcon)
e1:SetTarget(c16400655.sptg)
e1:SetOperation(c16400655.spop)
e1:SetTarget(c16400655.target)
e1:SetOperation(c16400655.operation)
c:RegisterEffect(e1)
--change name
aux.EnableChangeCode(c,16400595,LOCATION_MZONE+LOCATION_GRAVE)
--cannot be target
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET)
e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e2:SetRange(LOCATION_FZONE)
e2:SetTargetRange(LOCATION_MZONE,0)
e2:SetTarget(c16400655.etg)
e2:SetValue(aux.tgoval)
c:RegisterEffect(e2)
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_FIELD)
e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e3:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET)
e3:SetRange(LOCATION_MZONE)
e3:SetTargetRange(LOCATION_MZONE,0)
e3:SetTarget(c16400655.ecfilter)
e3:SetValue(aux.tgoval)
c:RegisterEffect(e3)
end
function c16400655.ecfilter(e,c)
return c:IsFaceup() and c:GetAttack()~=c:GetBaseAttack()
end
function c16400655.mfilter(c)
return c:IsLinkCode(16400595) and c:GetAttack()~=c:GetBaseAttack()
end
function c16400655.spcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsSummonType(SUMMON_TYPE_LINK)
end
function c16400655.spfilter(c)
return c:IsCode(16401160) and not c:IsForbidden()
function c16400655.pfilter(c,tp)
return c:IsCode(16401160) and not c:IsForbidden() and c:CheckUniqueOnField(tp)
end
function c16400655.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 and Duel.IsExistingMatchingCard(c16400655.spfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end
Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK)
function c16400655.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0
and Duel.IsExistingMatchingCard(c16400655.pfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil,tp) end
end
function c16400655.tgcheck(c)
function c16400655.tgfilter(c)
return c:IsCode(16401165) and c:IsAbleToGrave()
end
function c16400655.spop(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetLocationCount(tp,LOCATION_SZONE)>0 and Duel.IsExistingMatchingCard(aux.NecroValleyFilter(c16400655.spfilter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD)
local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c16400655.spfilter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil)
if g:GetCount()>0 then
local tc=g:GetFirst()
if Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) and Duel.IsExistingMatchingCard(c16400655.tgcheck,tp,LOCATION_DECK,0,1,nil) and Duel.SelectYesNo(tp,aux.Stringid(16400655,4)) then
Duel.BreakEffect()
Duel.ShuffleDeck()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local tg=Duel.SelectMatchingCard(tp,c16400655.tgcheck,tp,LOCATION_DECK,0,1,1,nil)
Duel.SendtoGrave(tg,REASON_EFFECT)
end
function c16400655.operation(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD)
local tc=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c16400655.pfilter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,tp):GetFirst()
if tc and Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) then
local g=Duel.GetMatchingGroup(c16400655.tgfilter,tp,LOCATION_DECK,0,nil)
if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(16400655,0)) then
Duel.BreakEffect()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local sg=g:Select(tp,1,1,nil)
Duel.SendtoGrave(sg,REASON_EFFECT)
end
end
end
function c16400655.etg(e,c)
return not c:IsAttack(c:GetBaseAttack())
end
\ No newline at end of file
......@@ -8,33 +8,11 @@ function cm.initial_effect(c)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetHintTiming(0,TIMING_MAIN_END)
e1:SetCountLimit(1,m+EFFECT_COUNT_CODE_OATH)
e1:SetCost(cm.cost1)
--e1:SetCost(cm.cost1)
e1:SetTarget(cm.tg1)
e1:SetOperation(cm.op1)
c:RegisterEffect(e1)
end
function cm.cost1(e,tp,eg,ep,ev,re,r,rp,chk)
e:SetLabel(1)
if chk==0 then return true end
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e1:SetCode(EFFECT_CANNOT_SUMMON)
e1:SetTargetRange(1,0)
e1:SetReset(RESET_PHASE+PHASE_END,2)
Duel.RegisterEffect(e1,tp)
local e2=e1:Clone()
e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON)
Duel.RegisterEffect(e2,tp)
local e3=Effect.CreateEffect(e:GetHandler())
e3:SetType(EFFECT_TYPE_FIELD)
e3:SetCode(EFFECT_CANNOT_ACTIVATE)
e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e3:SetTargetRange(1,0)
e3:SetTarget(cm.aclimit)
e3:Reset(RESET_PHASE+PHASE_END,2)
Duel.RegisterEffect(e1,tp)
end
function cm.aclimit(e,re,tp)
return not re:IsActiveType(TYPE_MONSTER)
end
......@@ -42,31 +20,13 @@ end
function cm.ter101(c)
return c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost()
end
function cm.ter102(c,tc,ct,e,tp)
if not c:IsType(TYPE_LINK) then return false end
local r=c:GetLink()-tc:GetLink()
local flag=0
if c:IsLinkMarker(LINK_MARKER_BOTTOM) and tc:IsLinkMarker(LINK_MARKER_BOTTOM) then flag=flag+1 end
if c:IsLinkMarker(LINK_MARKER_BOTTOM_LEFT) and tc:IsLinkMarker(LINK_MARKER_BOTTOM_LEFT) then flag=flag+1 end
if c:IsLinkMarker(LINK_MARKER_BOTTOM_RIGHT) and tc:IsLinkMarker(LINK_MARKER_BOTTOM_RIGHT) then flag=flag+1 end
if c:IsLinkMarker(LINK_MARKER_LEFT) and tc:IsLinkMarker(LINK_MARKER_LEFT) then flag=flag+1 end
if c:IsLinkMarker(LINK_MARKER_RIGHT) and tc:IsLinkMarker(LINK_MARKER_RIGHT) then flag=flag+1 end
if c:IsLinkMarker(LINK_MARKER_TOP) and tc:IsLinkMarker(LINK_MARKER_TOP) then flag=flag+1 end
if c:IsLinkMarker(LINK_MARKER_TOP_LEFT) and tc:IsLinkMarker(LINK_MARKER_TOP_LEFT) then flag=flag+1 end
if c:IsLinkMarker(LINK_MARKER_TOP_RIGHT) and tc:IsLinkMarker(LINK_MARKER_TOP_RIGHT) then flag=flag+1 end
return r>0 and ct-1>=r and flag==tc:GetLink() and c:GetRace()==tc:GetRace() and c:GetAttribute()==tc:GetAttribute()
and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_LINK,tp,true,false)
and Duel.GetLocationCountFromEx(tp,tp,tc,c)>0
end
function cm.ter103(c,e,tp)
local ct=Duel.GetMatchingGroupCount(cm.ter101,tp,LOCATION_HAND+LOCATION_MZONE+LOCATION_GRAVE,0,c)
return c:IsType(TYPE_LINK) and c:IsFaceup()
and c:IsCanBeEffectTarget(e)
and Duel.IsExistingMatchingCard(cm.ter102,tp,LOCATION_EXTRA,0,1,nil,c,ct,e,tp)
and Duel.IsExistingMatchingCard(cm.ter102,tp,LOCATION_EXTRA,0,1,nil,e,tp,c)
end
function cm.ter104(c,tc,e,tp,rank)
if not c:IsType(TYPE_LINK) then return false end
function cm.ter102(c,e,tp,tc)
local r=c:GetLink()-tc:GetLink()
local ct=Duel.GetMatchingGroupCount(cm.ter101,tp,LOCATION_HAND+LOCATION_MZONE+LOCATION_GRAVE,0,tc)
local flag=0
if c:IsLinkMarker(LINK_MARKER_BOTTOM) and tc:IsLinkMarker(LINK_MARKER_BOTTOM) then flag=flag+1 end
if c:IsLinkMarker(LINK_MARKER_BOTTOM_LEFT) and tc:IsLinkMarker(LINK_MARKER_BOTTOM_LEFT) then flag=flag+1 end
......@@ -75,57 +35,53 @@ function cm.ter104(c,tc,e,tp,rank)
if c:IsLinkMarker(LINK_MARKER_RIGHT) and tc:IsLinkMarker(LINK_MARKER_RIGHT) then flag=flag+1 end
if c:IsLinkMarker(LINK_MARKER_TOP) and tc:IsLinkMarker(LINK_MARKER_TOP) then flag=flag+1 end
if c:IsLinkMarker(LINK_MARKER_TOP_LEFT) and tc:IsLinkMarker(LINK_MARKER_TOP_LEFT) then flag=flag+1 end
if c:IsLinkMarker(LINK_MARKER_TOP_RIGHT) and tc:IsLinkMarker(LINK_MARKER_TOP_RIGHT) then flag=flag+1 end
return r==rank and flag==tc:GetLink() and c:GetRace()==tc:GetRace() and c:GetAttribute()==tc:GetAttribute()
if c:IsLinkMarker(LINK_MARKER_TOP_RIGHT) and tc:IsLinkMarker(LINK_MARKER_TOP_RIGHT) then flag=flag+1 end
return c:IsType(TYPE_LINK) and r>0 and ct-1>=r and flag==tc:GetLink() and c:GetRace()==tc:GetRace() and c:GetAttribute()==tc:GetAttribute()
and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_LINK,tp,true,false)
and Duel.GetLocationCountFromEx(tp,tp,tc,c)>0
end
function cm.ter105(c,e,tp,rank)
return c:IsType(TYPE_LINK)
and Duel.IsExistingMatchingCard(cm.ter104,tp,LOCATION_EXTRA,0,1,nil,c,e,tp,rank)
end
function cm.tg1(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and cm.ter103(chkc,e,tp) end
if chk==0 then
if e:GetLabel()==0 then return false end
e:SetLabel(0)
return Duel.IsExistingMatchingCard(cm.ter103,tp,LOCATION_MZONE,0,1,nil,e,tp)
end
e:SetLabel(0)
local avail={}
local availbool={}
function cm.tg1(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(cm.ter103,tp,LOCATION_MZONE,0,1,nil,e,tp) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
local tc=Duel.SelectMatchingCard(tp,cm.ter103,tp,LOCATION_MZONE,0,1,1,nil,e,tp):GetFirst()
local lk=tc:GetLink()
local ct=Duel.GetMatchingGroupCount(cm.ter101,tp,LOCATION_HAND+LOCATION_MZONE+LOCATION_GRAVE,0,nil)
local gfield=Duel.GetMatchingGroup(cm.ter103,tp,LOCATION_MZONE,0,nil,e,tp)
for tc in aux.Next(gfield) do
local gextra=Duel.GetMatchingGroup(cm.ter102,tp,LOCATION_EXTRA,0,nil,tc,ct-1,e,tp)
for ex in aux.Next(gextra) do
local r=ex:GetLink()-tc:GetLink()
if not availbool[r] then
availbool[r]=true
table.insert(avail,r)
end
if ct>0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local tg=Duel.SelectMatchingCard(tp,cm.ter102,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc)
local num=tg:GetFirst():GetLink()-tc:GetLink()
if #tg>0 and num>0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local cost=Duel.SelectMatchingCard(tp,cm.ter101,tp,LOCATION_HAND+LOCATION_MZONE+LOCATION_GRAVE,0,num-1,num-1,tc)
Duel.Release(tc,REASON_COST)
Duel.Remove(cost,POS_FACEUP,REASON_COST)
e:SetLabelObject(tg:GetFirst())
end
end
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(m,2))
local num=Duel.AnnounceNumber(tp,table.unpack(avail))
e:SetLabel(num)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local cost=Duel.SelectMatchingCard(tp,cm.ter101,tp,LOCATION_GRAVE,0,num-1,num-1,nil)
Duel.Remove(cost,POS_FACEUP,REASON_COST)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET)
local g=Duel.SelectTarget(tp,cm.ter105,tp,LOCATION_MZONE,0,1,1,nil,e,tp,num)
Duel.Release(g,REASON_COST)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA)
end
function cm.op1(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget()
if tc:IsControler(tp) and not tc:IsImmuneToEffect(e) then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,cm.ter104,tp,LOCATION_EXTRA,0,1,1,nil,tc,e,tp,e:GetLabel())
local sc=g:GetFirst()
if sc then
Duel.SpecialSummon(sc,SUMMON_TYPE_LINK,tp,tp,true,false,POS_FACEUP)
sc:CompleteProcedure()
end
local sc=e:GetLabelObject()
if sc then
Duel.SpecialSummon(sc,SUMMON_TYPE_LINK,tp,tp,true,false,POS_FACEUP)
sc:CompleteProcedure()
end
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e1:SetCode(EFFECT_CANNOT_SUMMON)
e1:SetTargetRange(1,0)
e1:SetReset(RESET_PHASE+PHASE_END,2)
Duel.RegisterEffect(e1,tp)
local e2=e1:Clone()
e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON)
Duel.RegisterEffect(e2,tp)
local e3=Effect.CreateEffect(e:GetHandler())
e3:SetType(EFFECT_TYPE_FIELD)
e3:SetCode(EFFECT_CANNOT_ACTIVATE)
e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e3:SetTargetRange(1,0)
e3:SetTarget(cm.aclimit)
e3:Reset(RESET_PHASE+PHASE_END,2)
Duel.RegisterEffect(e1,tp)
end
......@@ -21,23 +21,27 @@ function cm.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end
end
function cm.activate(e,tp,eg,ep,ev,re,r,rp)
local g=Group.CreateGroup()
for i=1,ev do
local ce,cp=Duel.GetChainInfo(i,CHAININFO_TRIGGERING_EFFECT,CHAININFO_TRIGGERING_PLAYER)
if ce and ce:GetHandler() then
g:AddCard(ce:GetHandler())
if Duel.GetCurrentChain()<9 then
local g=Group.CreateGroup()
for i=1,ev do
local ce,cp=Duel.GetChainInfo(i,CHAININFO_TRIGGERING_EFFECT,CHAININFO_TRIGGERING_PLAYER)
if ce and ce:GetHandler() then
g:AddCard(ce:GetHandler())
end
end
end
g:AddCard(e:GetHandler())
if #g>0 then
Duel.Destroy(g,REASON_EFFECT)
end
if Duel.GetCurrentChain()>=9 then
for l=1,ev do
local te,tgp=Duel.GetChainInfo(i,CHAININFO_TRIGGERING_EFFECT,CHAININFO_TRIGGERING_PLAYER)
if te:GetHandler()~=e:GetHandler() and Duel.IsChainDisablable(i) then
Duel.NegateEffect(l)
if #g>0 then
Duel.Destroy(g,REASON_EFFECT)
end
else
local g=Group.CreateGroup()
for i=1,ev do
local te,tgp=Duel.GetChainInfo(i,CHAININFO_TRIGGERING_EFFECT,CHAININFO_TRIGGERING_PLAYER)
if te:GetHandler()~=e:GetHandler() and Duel.NegateEffect(i) then
g:AddCard(te:GetHandler())
end
if #g>0 then
Duel.Destroy(g,REASON_EFFECT)
end
end
end
end
\ No newline at end of file
......@@ -31,7 +31,7 @@ end
function cm.thcon(e,tp,eg,ep,ev,re,r,rp)
return not e:GetHandler():IsReason(REASON_DRAW)
end
function cm.thfilter(c)
function cm.spfilter(c,e,tp)
return c:IsSetCard(0xccf) and c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,true,true)
end
function cm.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
......
......@@ -61,7 +61,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp,chk)
e2:SetRange(LOCATION_MZONE)
e2:SetTargetRange(1,0)
e2:SetLabelObject(tc)
e2:SetTarget(function(e,te,tp)return te:GetHandler()==e:GetHandler() end)
e2:SetTarget(function(e,te,tp)return te==ce and te:GetHandler()==e:GetHandler()end)
e2:SetCost(cm.costchk)
e2:SetOperation(cm.costop2)
e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,1)
......@@ -80,5 +80,4 @@ function cm.costchk(e,te_or_c,tp)
end
function cm.costop2(e,tp,eg,ep,ev,re,r,rp)
Duel.SendtoGrave(e:GetLabelObject(),REASON_COST)
e:Reset()
end
......@@ -63,5 +63,5 @@ end
function s.remop(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,s.remfilter,tp,LOCATION_REMOVED,0,1,1,nil,e,tp):GetFirst()
Duel.SpecialSummon(g,0,tp,tp,true,true,POS_FACEUP)
Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP)
end
\ No newline at end of file
......@@ -75,7 +75,7 @@ function s.remfilter1(c)
return c:IsAbleToGraveAsCost() and c:IsType(TYPE_SYNCHRO)
end
function s.remfilter2(c)
return c:IsAbleToRemoveAsCost() and c:IsSetCard(0x5c0)
return c:IsAbleToRemoveAsCost() and c:IsSetCard(0x5c0) and c:IsType(TYPE_MONSTER)
end
function s.remcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(s.remfilter1,tp,LOCATION_EXTRA,0,1,nil) and Duel.IsExistingMatchingCard(s.remfilter2,tp,LOCATION_DECK,0,1,nil) 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