63 lines
2.1 KiB
Lua
63 lines
2.1 KiB
Lua
|
|
--Universe Miracle
|
||
|
|
local s,id=GetID()
|
||
|
|
function s.initial_effect(c)
|
||
|
|
--Activate
|
||
|
|
local e1=Effect.CreateEffect(c)
|
||
|
|
e1:SetCategory(CATEGORY_SEARCH+CATEGORY_TOHAND)
|
||
|
|
e1:SetType(EFFECT_TYPE_ACTIVATE)
|
||
|
|
e1:SetCode(EVENT_FREE_CHAIN)
|
||
|
|
e1:SetCountLimit(1,id,EFFECT_COUNT_CODE_OATH)
|
||
|
|
e1:SetCondition(s.condition)
|
||
|
|
e1:SetCost(s.cost)
|
||
|
|
e1:SetTarget(s.target)
|
||
|
|
e1:SetOperation(s.activate)
|
||
|
|
c:RegisterEffect(e1)
|
||
|
|
--banish effect
|
||
|
|
local e2=Effect.CreateEffect(c)
|
||
|
|
e2:SetDescription(aux.Stringid(id,0))
|
||
|
|
e2:SetType(EFFECT_TYPE_IGNITION)
|
||
|
|
e2:SetProperty(EFFECT_FLAG_CARD_TARGET)
|
||
|
|
e2:SetRange(LOCATION_GRAVE)
|
||
|
|
e2:SetCost(aux.bfgcost)
|
||
|
|
--e2:SetTarget(s.mattg)
|
||
|
|
--e2:SetOperation(s.matop)
|
||
|
|
c:RegisterEffect(e2)
|
||
|
|
end
|
||
|
|
s.listed_series={0x25e}
|
||
|
|
function s.chainfilter(re,tp,cid)
|
||
|
|
local rc=re:GetHandler()
|
||
|
|
local loc=Duel.GetChainInfo(cid,CHAININFO_TRIGGERING_LOCATION)
|
||
|
|
return not (re:GetActiveType()==TYPE_PENDULUM+TYPE_SPELL and not re:IsHasType(EFFECT_TYPE_ACTIVATE)
|
||
|
|
and (loc&LOCATION_PZONE)==LOCATION_PZONE and rc:IsSetCard(0x98))
|
||
|
|
end
|
||
|
|
function s.condition(e,tp,eg,ep,ev,re,r,rp)
|
||
|
|
return Duel.GetCustomActivityCount(id,tp,ACTIVITY_CHAIN)==0
|
||
|
|
end
|
||
|
|
function s.cost(e,tp,eg,ep,ev,re,r,rp,chk)
|
||
|
|
if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,e:GetHandler()) end
|
||
|
|
Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD)
|
||
|
|
end
|
||
|
|
function s.thfilter(c)
|
||
|
|
return c:IsSetCard(0x25e) and c:IsAbleToHand()
|
||
|
|
end
|
||
|
|
function s.target(e,tp,eg,ep,ev,re,r,rp,chk)
|
||
|
|
if chk==0 then
|
||
|
|
local g=Duel.GetMatchingGroup(s.thfilter,tp,LOCATION_DECK,0,nil)
|
||
|
|
return g:GetClassCount(Card.GetCode)>=2
|
||
|
|
end
|
||
|
|
Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,2,tp,LOCATION_DECK)
|
||
|
|
end
|
||
|
|
function s.activate(e,tp,eg,ep,ev,re,r,rp)
|
||
|
|
local g=Duel.GetMatchingGroup(s.thfilter,tp,LOCATION_DECK,0,nil)
|
||
|
|
if g:GetClassCount(Card.GetCode)>=2 then
|
||
|
|
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND)
|
||
|
|
local g1=g:Select(tp,1,1,nil)
|
||
|
|
g:Remove(Card.IsCode,nil,g1:GetFirst():GetCode())
|
||
|
|
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND)
|
||
|
|
local g2=g:Select(tp,1,1,nil)
|
||
|
|
g1:Merge(g2)
|
||
|
|
Duel.SendtoHand(g1,nil,REASON_EFFECT)
|
||
|
|
Duel.ConfirmCards(1-tp,g1)
|
||
|
|
end
|
||
|
|
end
|