Commit 2184406e authored by mercury233's avatar mercury233 Committed by GitHub

update Bone Temple Block (#2515)

parent f9a62143
...@@ -20,58 +20,61 @@ function c47778083.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) ...@@ -20,58 +20,61 @@ function c47778083.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
and Duel.IsExistingTarget(c47778083.filter,tp,0,LOCATION_GRAVE,1,nil,e,tp) and Duel.IsExistingTarget(c47778083.filter,tp,0,LOCATION_GRAVE,1,nil,e,tp)
and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.IsExistingTarget(c47778083.filter,1-tp,0,LOCATION_GRAVE,1,nil,e,1-tp) and Duel.IsExistingTarget(c47778083.filter,1-tp,0,LOCATION_GRAVE,1,nil,e,1-tp)
and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 and Duel.GetLocationCount(1-tp,LOCATION_MZONE,1-tp)>0
end end
local turnp=Duel.GetTurnPlayer() local tg=Group.CreateGroup()
Duel.Hint(HINT_SELECTMSG,turnp,HINTMSG_SPSUMMON) for p in aux.TurnPlayers() do
local sg=Duel.SelectTarget(turnp,c47778083.filter,turnp,0,LOCATION_GRAVE,1,1,nil,e,turnp) Duel.Hint(HINT_SELECTMSG,p,HINTMSG_SPSUMMON)
Duel.Hint(HINT_SELECTMSG,1-turnp,HINTMSG_SPSUMMON) local g=Duel.SelectTarget(p,c47778083.filter,p,0,LOCATION_GRAVE,1,1,nil,e,p)
local og=Duel.SelectTarget(1-turnp,c47778083.filter,1-turnp,0,LOCATION_GRAVE,1,1,nil,e,1-turnp) tg:Merge(g)
local sc=sg:GetFirst() end
local oc=og:GetFirst() Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,tg,2,0,0)
local g=Group.FromCards(sc,oc)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,2,0,0)
e:SetLabelObject(sc)
end end
function c47778083.operation(e,tp,eg,ep,ev,re,r,rp) function c47778083.operation(e,tp,eg,ep,ev,re,r,rp)
if Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_EFFECT+REASON_DISCARD)==0 then return end if Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_EFFECT+REASON_DISCARD)==0 then return end
local sc=e:GetLabelObject() local tg=Duel.GetTargetsRelateToChain()
local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) if #tg==0 then return end
local oc=g:GetFirst() local c=e:GetHandler()
if oc==sc then oc=g:GetNext() end local fid=c:GetFieldID()
if sc:IsRelateToEffect(e) then local sg=Group.CreateGroup()
Duel.SpecialSummonStep(sc,0,tp,tp,false,false,POS_FACEUP) for p in aux.TurnPlayers() do
local e1=Effect.CreateEffect(e:GetHandler()) local tc=tg:Filter(Card.IsControler,nil,1-p):GetFirst()
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) if tc and Duel.SpecialSummonStep(tc,0,p,p,false,false,POS_FACEUP) then
e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) tc:RegisterFlagEffect(47778083,RESET_EVENT+RESETS_STANDARD,0,1,fid)
e1:SetRange(LOCATION_MZONE) tg:RemoveCard(tc)
e1:SetCode(EVENT_PHASE+PHASE_END) sg:AddCard(tc)
e1:SetCondition(c47778083.descon)
e1:SetOperation(c47778083.desop)
e1:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END,2)
e1:SetCountLimit(1)
e1:SetLabel(Duel.GetTurnCount())
sc:RegisterEffect(e1,true)
end end
if oc:IsRelateToEffect(e) then end
Duel.SpecialSummonStep(oc,0,1-tp,1-tp,false,false,POS_FACEUP) Duel.SpecialSummonComplete()
local e1=Effect.CreateEffect(e:GetHandler()) if #sg==0 then return end
sg:KeepAlive()
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e1:SetRange(LOCATION_MZONE)
e1:SetCode(EVENT_PHASE+PHASE_END) e1:SetCode(EVENT_PHASE+PHASE_END)
e1:SetCondition(c47778083.descon) e1:SetCondition(c47778083.descon)
e1:SetOperation(c47778083.desop) e1:SetOperation(c47778083.desop)
e1:SetLabel(fid,Duel.GetTurnCount())
e1:SetLabelObject(sg)
e1:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END,2) e1:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END,2)
e1:SetCountLimit(1) Duel.RegisterEffect(e1,tp)
e1:SetLabel(Duel.GetTurnCount()) end
oc:RegisterEffect(e1,true) function c47778083.desfilter(c,fid)
end return c:GetFlagEffectLabel(47778083)==fid
Duel.SpecialSummonComplete()
end end
function c47778083.descon(e,tp,eg,ep,ev,re,r,rp) function c47778083.descon(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetTurnCount()~=e:GetLabel() local fid,turnc=e:GetLabel()
if Duel.GetTurnCount()==turnc then return false end
local g=e:GetLabelObject()
if not g:IsExists(c47778083.desfilter,1,nil,fid) then
g:DeleteGroup()
e:Reset()
return false
else return true end
end end
function c47778083.desop(e,tp,eg,ep,ev,re,r,rp) function c47778083.desop(e,tp,eg,ep,ev,re,r,rp)
Duel.Destroy(e:GetHandler(),REASON_EFFECT) local fid,turnc=e:GetLabel()
local g=e:GetLabelObject()
local tg=g:Filter(c47778083.desfilter,nil,fid)
Duel.Destroy(tg,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