--created & coded by Lyris, art from "Hero Signal" and "Destiny Signal" --シグナル・インターセプト local s,id,o=GetID() function s.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetCategory(CATEGORY_NEGATE+CATEGORY_TODECK) e1:SetType(EFFECT_TYPE_ACTIVATE) e1:SetCode(EVENT_CHAINING) e1:SetCondition(s.condition) e1:SetTarget(s.target) e1:SetOperation(s.activate) c:RegisterEffect(e1) local e2=Effect.CreateEffect(c) e2:SetDescription(1159) e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) e2:SetProperty(EFFECT_FLAG_DELAY) e2:SetCode(EVENT_SPSUMMON_SUCCESS) e2:SetRange(LOCATION_GRAVE) e2:SetCondition(s.setcon) e2:SetTarget(s.settg) e2:SetOperation(s.setop) c:RegisterEffect(e2) end function s.condition(e,tp,eg,ep,ev,re,r,rp) if Duel.GetCurrentChain()<=1 or rp==tp then return false end for i=1,ev do local te=Duel.GetChainInfo(i,CHAININFO_TRIGGERING_EFFECT) if te:IsHasCategory(CATEGORY_SPECIAL_SUMMON) and Duel.IsChainNegatable(i) then return true end end end function s.target(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return true end local ng=Group.CreateGroup() local dg=Group.CreateGroup() for i=1,ev do local te=Duel.GetChainInfo(i,CHAININFO_TRIGGERING_EFFECT) if te:IsHasCategory(CATEGORY_SPECIAL_SUMMON) and Duel.IsChainNegatable(i) then local tc=te:GetHandler() ng:AddCard(tc) if tc:IsOnField() and tc:IsRelateToEffect(te) and not tc:IsHasEffect(EFFECT_CANNOT_TO_DECK) and Duel.IsPlayerCanSendtoDeck(tp,tc) then dg:AddCard(tc) end end end Duel.SetTargetCard(dg) Duel.SetOperationInfo(0,CATEGORY_NEGATE,ng,#ng,0,0) Duel.SetOperationInfo(0,CATEGORY_TODECK,dg,#dg,0,0) end function s.activate(e,tp,eg,ep,ev,re,r,rp) local dg=Group.CreateGroup() for i=1,ev do local te=Duel.GetChainInfo(i,CHAININFO_TRIGGERING_EFFECT,CHAININFO_TRIGGERING_PLAYER) if te:IsHasCategory(CATEGORY_SPECIAL_SUMMON) and Duel.NegateActivation(i) then local tc=te:GetHandler() if tc:IsRelateToEffect(e) and tc:IsRelateToEffect(te) and not tc:IsHasEffect(EFFECT_CANNOT_TO_DECK) and Duel.IsPlayerCanSendtoDeck(tp,tc) then tc:CancelToGrave() dg:AddCard(tc) end end end Duel.SendtoDeck(dg,nil,1,REASON_EFFECT) end function s.cfilter(c,tp) return c:IsSummonLocation(LOCATION_DECK) and c:IsSummonPlayer(1-tp) end function s.setcon(e,tp,eg,ep,ev,re,r,rp) return eg:FilterCount(s.cfilter,nil,tp)==1 end function s.settg(e,tp,eg,ep,ev,re,r,rp,chk) local c=e:GetHandler() if chk==0 then return c:IsSSetable() end Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,c,1,0,0) end function s.setop(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() if c:IsRelateToEffect(e) and c:IsSSetable() then Duel.SSet(tp,c) local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e1:SetReset(RESET_EVENT+0x47e0000) e1:SetValue(LOCATION_REMOVED) c:RegisterEffect(e1) end end