Commit 85107fbb authored by Huangnan's avatar Huangnan

fix

parent 5137772c
Pipeline #41159 failed with stages
in 2 minutes and 38 seconds
--蓬莱的辉夜姬
local s,id,o=GetID()
function s.initial_effect(c)
aux.AddCodeList(c,13700777)
c:SetSPSummonOnce(13700777)
c:EnableReviveLimit()
......@@ -134,25 +136,31 @@ function s.resetop(e,tp,eg,ep,ev,re,r,rp)
e:Reset()
Duel.Hint(24,0,aux.Stringid(id,8))
end
--五难题
function s.quecost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.CheckReleaseGroup(tp,s.attfilter,1,nil) end
local g=Duel.SelectReleaseGroup(tp,s.attfilter,1,1,nil)
local att=g:GetFirst():GetAttribute()
e:SetLabel(g:GetFirst():GetAttribute())
Duel.Release(g,REASON_COST)
Duel.PayLPCost(tp,1000)
Duel.RegisterFlagEffect(tp,13700777+att+o,0,0,1)
Duel.RegisterFlagEffect(tp,13700777,0,0,1)
end
function s.attfilter(c)
local att=c:GetAttribute()
return Duel.GetFlagEffect(c:GetControler(),13700777+att+o)==0 and c:IsFaceup()
function s.rmlimit(e,c,tp,r,re)
return c:IsAttribute(e:GetLabel()) and re and re:IsActiveType(TYPE_MONSTER) and re:GetHandler():IsCode(13700777) and r==REASON_COST
end
function s.queop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
Duel.ConfirmCards(1-tp,c)
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e1:SetCode(EFFECT_CANNOT_RELEASE)
e1:SetTargetRange(1,0)
e1:SetTarget(s.rmlimit)
e1:SetLabel(e:GetLabel())
Duel.RegisterEffect(e1,tp)
end
function s.spcon(e)
......@@ -202,12 +210,12 @@ function s.suop(e,tp,eg,ep,ev,re,r,rp)
Duel.RegisterFlagEffect(tp,13700777+776,0,0,0)
end
for i=1,ct do
if i==1 then
if i==1 and Duel.GetFlagEffect(tp,13700789)==0 then
local g=Duel.GetMatchingGroup(Card.IsAbleToGrave,tp,0,LOCATION_ONFIELD,nil)
if #g>0 then
Duel.SendtoGrave(g,REASON_EFFECT)
end
elseif i==2 then
elseif i==2 and Duel.GetFlagEffect(tp,13700787)==0 then
local mg1=Duel.SelectMatchingCard(tp,s.mfilter,tp,LOCATION_GRAVE,0,1,1,nil)
local mg2=Duel.SelectMatchingCard(tp,s.tfilter,tp,LOCATION_GRAVE,0,1,1,nil)
Duel.SSet(tp,mg1+mg2)
......@@ -215,9 +223,9 @@ function s.suop(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and #mg3>0 then
Duel.SpecialSummon(mg3,0,tp,tp,false,false,POS_FACEUP)
end
elseif i==3 then
elseif i==3 and Duel.GetFlagEffect(tp,13700781)==0 then
Duel.SetLP(tp,8000)
elseif i==4 then
elseif i==4 and Duel.GetFlagEffect(tp,13700785)==0 then
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_INDESTRUCTABLE_EFFECT)
......@@ -225,7 +233,7 @@ function s.suop(e,tp,eg,ep,ev,re,r,rp)
e1:SetValue(1)
e1:SetReset(RESET_PHASE+PHASE_END,2)
Duel.RegisterEffect(e1,tp)
elseif i>=5 then
elseif i==5 and Duel.GetFlagEffect(tp,13700783)==0 then
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e2:SetCode(EVENT_PHASE+PHASE_END)
......
--SCP-343 神
if not pcall(function() require("expansions/script/c16101100") end) then require("script/c16101100") end
local m,cm=rscf.DefineCard(16102010,"SCP")
local m=16102010
local cm=_G["c"..m]
function cm.initial_effect(c)
c:SetUniqueOnField(1,1,m)
local e1=rscf.SetSummonCondition(c,false)
local e2=rscf.SetSpecialSummonProduce(c,LOCATION_HAND,cm.sprcon,cm.sprop)
local e3=rsef.FTO(c,EVENT_ATTACK_ANNOUNCE,{m,0},nil,"sp",nil,LOCATION_HAND,cm.spcon,nil,rsop.target(cm.spfilter,"sp"),cm.spop)
local e4,e5=rsef.SV_INDESTRUCTABLE(c,"battle,effect")
--local e6=rsef.FV_LIMIT_PLAYER(c,"res",nil,cm.restg,{1,1})
--
c:EnableReviveLimit()
--special summon condition
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetCode(EFFECT_SPSUMMON_CONDITION)
c:RegisterEffect(e1)
--special summon proc
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetCode(EFFECT_SPSUMMON_PROC)
e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e2:SetRange(LOCATION_HAND)
e2:SetCondition(cm.sprcon)
e2:SetTarget(cm.sprtg)
e2:SetOperation(cm.sprop)
c:RegisterEffect(e2)
--spsummon
local e3=Effect.CreateEffect(c)
e3:SetDescription(aux.Stringid(m,0))
e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DESTROY+CATEGORY_DAMAGE)
e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O)
e3:SetCode(EVENT_ATTACK_ANNOUNCE)
e3:SetRange(LOCATION_HAND)
e3:SetCondition(cm.spcon)
e3:SetTarget(cm.sptg)
e3:SetOperation(cm.spop)
c:RegisterEffect(e3)
--indes
local e4=Effect.CreateEffect(c)
e4:SetType(EFFECT_TYPE_SINGLE)
e4:SetCode(EFFECT_INDESTRUCTABLE_BATTLE)
e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e4:SetRange(LOCATION_MZONE)
e4:SetValue(1)
c:RegisterEffect(e4)
local e5=e4:Clone()
e5:SetCode(EFFECT_INDESTRUCTABLE_EFFECT)
c:RegisterEffect(e5)
--battle damage
local e6=Effect.CreateEffect(c)
e6:SetType(EFFECT_TYPE_SINGLE)
e6:SetCode(EFFECT_REFLECT_BATTLE_DAMAGE)
e6:SetValue(1)
c:RegisterEffect(e6)
--Change Effect
local e7=Effect.CreateEffect(c)
e7:SetType(EFFECT_TYPE_SINGLE)
e7:SetCode(EFFECT_REFLECT_BATTLE_DAMAGE)
e7:SetValue(1)
e7:SetDescription(aux.Stringid(m,3))
e7:SetCategory(CATEGORY_TOHAND+CATEGORY_TODECK+CATEGORY_LEAVE_GRAVE)
e7:SetType(EFFECT_TYPE_QUICK_O)
e7:SetCode(EVENT_CHAINING)
e7:SetRange(LOCATION_MZONE)
e7:SetProperty(EFFECT_FLAG_CARD_TARGET)
e7:SetCountLimit(1)
e7:SetCondition(cm.discon)
e7:SetTarget(cm.distg)
e7:SetOperation(cm.disop)
c:RegisterEffect(e7)
local e8=rsef.QO(c,EVENT_CHAINING,{m,3},1,"th","tg",LOCATION_MZONE,nil,nil,rstg.target(cm.ff,"th",LOCATION_GRAVE,LOCATION_GRAVE),cm.tdop)
end
function cm.gfilter(g,tp)
return Duel.GetMZoneCount(tp,g,tp)>0 and g:GetClassCount(Card.GetRace)==#g
function cm.gfilter(g)
for tc in aux.Next(g) do
if g:IsExists(Card.IsRace,1,tc,tc:GetRace()) then
return false
end
end
return g:GetCount()==3
end
function cm.sprcon(e,c)
if c==nil then return true end
local tp=c:GetControler()
local g=Duel.GetReleaseGroup(tp,false,REASON_SPSUMMON):Filter(Card.IsRace,nil,RACE_DRAGON)
return g:CheckSubGroupEach(cm.gfilter,aux.mzctcheckrel,tp,REASON_SPSUMMON)
end
function cm.sprcon(e,c,tp)
local g=Duel.GetReleaseGroup(tp)
return g:CheckSubGroup(cm.gfilter,3,3,tp)
function cm.sprtg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local g=Duel.GetReleaseGroup(tp,false,REASON_SPSUMMON):Filter(Card.IsRace,nil,RACE_DRAGON)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
local sg=g:SelectSubGroupEach(tp,cm.gfilter,true,aux.mzctcheckrel,tp,REASON_SPSUMMON)
if sg then
sg:KeepAlive()
e:SetLabelObject(sg)
return true
else return false end
end
function cm.sprop(e,tp)
local g=Duel.GetReleaseGroup(tp)
rshint.Select(tp,"res")
local rg=g:SelectSubGroup(tp,cm.gfilter,false,3,3,tp)
Duel.Release(rg,REASON_COST)
function cm.sprop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.Release(g,REASON_SPSUMMON)
g:DeleteGroup()
end
function cm.spfilter(c,e,tp)
return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:IsCanBeSpecialSummoned(e,0,tp,true,true)
......@@ -34,12 +98,24 @@ end
function cm.spcon(e,tp)
return Duel.GetTurnPlayer()~=tp and not Duel.GetAttackTarget() and Duel.GetLP(tp)<=1500
end
function cm.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,true) end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0)
end
function cm.spop(e,tp)
local c=aux.ExceptThisCard(e)
if c and rssf.SpecialSummon(c,0,tp,tp,true,true,POS_FACEUP)>0 then
if c and Duel.SpecialSummon(c,0,tp,tp,true,true,POS_FACEUP)>0 then
c:CompleteProcedure()
end
local e1=rsef.FV_LIMIT_PLAYER({e:GetHandler(),tp},"act",cm.val,nil,{1,1},nil,rsreset.pend)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e1:SetCode(EFFECT_CANNOT_ACTIVATE)
e1:SetTargetRange(1,1)
e1:SetValue(cm.val)
e1:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e1,tp)
end
function cm.val(e,re)
return re:GetHandler()~=e:GetHandler()
......@@ -50,17 +126,36 @@ end
function cm.ff(c)
return c:IsAbleToHand() or c:IsAbleToDeck()
end
function cm.tdop(e,tp,eg,ep,ev,re,r,rp)
function cm.discon(e,tp,eg,ep,ev,re,r,rp)
return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED)
end
function cm.distg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsLocation(LOCATION_GRAVE) and cm.ff(chkc) end
if chk==0 then return Duel.IsExistingTarget(cm.ff,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET)
local g=Duel.SelectTarget(tp,cm.ff,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil)
Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0)
Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0)
end
function cm.disop(e,tp,eg,ep,ev,re,r,rp)
local g=Group.CreateGroup()
Duel.ChangeTargetCard(ev,g)
Duel.ChangeChainOperation(ev,cm.repop)
local tc=rscf.GetTargetCard()
if tc then
local op=Duel.SelectOption(tp,aux.Stringid(16102010,1),aux.Stringid(16102010,2))
if op==0 then
Duel.SendtoHand(tc,nil,REASON_EFFECT) end
if op==1 then
Duel.SendtoDeck(tc,nil,2,REASON_EFFECT) end
local tc=Duel.GetFirstTarget()
if tc:IsRelateToEffect(e) then
local b1=tc:IsAbleToHand()
local b2=tc:IsAbleToDeck()
if not (b1 or b2) then return end
local op=0
if b1 and b2 then op=Duel.SelectOption(tp,aux.Stringid(m,1),aux.Stringid(m,2))
elseif b1 then op=Duel.SelectOption(tp,aux.Stringid(m,2))
else op=Duel.SelectOption(tp,aux.Stringid(m,3))+1 end
if op==0 then
Duel.SendtoHand(tc,nil,REASON_EFFECT)
end
if op==1 then
Duel.SendtoDeck(tc,nil,2,REASON_EFFECT)
end
end
end
function cm.repop(e,tp)
......
......@@ -38,7 +38,6 @@ function cm.initial_effect(c)
--Effect Add Summon Proc
local e4=Effect.CreateEffect(c)
e4:SetDescription(aux.Stringid(m,2))
e4:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH)
e4:SetType(EFFECT_TYPE_IGNITION)
e4:SetRange(LOCATION_MZONE)
e4:SetProperty(EFFECT_FLAG_CARD_TARGET)
......@@ -155,7 +154,7 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
e1_1:SetCode(EFFECT_CANNOT_TRIGGER)
e1_1:SetProperty(EFFECT_FLAG_SET_AVAILABLE)
e1_1:SetReset(RESET_EVENT+RESETS_STANDARD)
tc:RegisterEffect(e1_1)
gc:RegisterEffect(e1_1)
end
end
end
\ No newline at end of file
......@@ -23,10 +23,10 @@ function cm.initial_effect(c)
e2:SetOperation(cm.thop)
c:RegisterEffect(e2)
local e3=Effect.CreateEffect(c)
e2:SetDescription(aux.Stringid(m,1))
e1:SetCategory(CATEGORY_TODECK)
e3:SetDescription(aux.Stringid(m,1))
e3:SetCategory(CATEGORY_TODECK)
e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e3:SetProperty(EFFECT_FLAG_DELAY)
e3:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET)
e3:SetCode(EVENT_TO_GRAVE)
e3:SetCountLimit(1,m+1)
e3:SetTarget(cm.tdtg)
......@@ -75,7 +75,7 @@ function cm.tdtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToDeck,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
local g=Duel.SelectTarget(tp,Card.IsAbleToDeck,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,3,nil)
Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0)
Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,LOCATION_GRAVE)
end
function cm.tdop(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS)
......
......@@ -41,7 +41,7 @@ function cm.activate(e,tp,eg,ep,ev,re,r,rp)
end
if Duel.GetDecktopGroup(1-tp,num):FilterCount(Card.IsAbleToRemove,nil)~=num then return end
local g=Duel.GetDecktopGroup(1-tp,num)
if Duel.Remove(g,POS_FACEDOWN,REASON_EFFECT)~=0 and Duel.IsExistingMatchingCard(cm.cfil,tp,0,LOCATION_ONFIELD,1,nil) and Duel.SelectYesNo(tp,aux.Stringid(m,1)) then
if Duel.Remove(g,POS_FACEDOWN,REASON_EFFECT)~=0 and Duel.IsExistingMatchingCard(aux.TRUE,tp,0,LOCATION_ONFIELD,1,nil) and Duel.IsExistingMatchingCard(cm.cfil,tp,LOCATION_ONFIELD,0,1,nil) and Duel.SelectYesNo(tp,aux.Stringid(m,1)) then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local rg=Duel.GetMatchingGroup(nil,tp,0,LOCATION_ONFIELD,nil):Select(tp,1,1,nil)
Duel.Remove(rg,POS_FACEDOWN,REASON_EFFECT)
......
......@@ -91,7 +91,7 @@ function cm.aop(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.SelectMatchingCard(tp,aux.TRUE,tp,LOCATION_ONFIELD,0,1,1,c)
local sg=Duel.SelectMatchingCard(tp,aux.TRUE,tp,0,LOCATION_ONFIELD,1,1,c)
g:Merge(g2)
if #g==2 then Duel.Destroy(g,REASON_EFFECT) end
if #g~=0 then Duel.Destroy(g,REASON_EFFECT) 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