Commit db04d77b authored by salix5's avatar salix5

CNo.88

parent 1c8aa8a6
......@@ -4,6 +4,7 @@ function c24096228.initial_effect(c)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetProperty(EFFECT_FLAG_CARD_TARGET)
e1:SetCost(c24096228.cost)
e1:SetTarget(c24096228.target)
e1:SetOperation(c24096228.operation)
......@@ -16,11 +17,29 @@ function c24096228.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(c24096228.cfilter,tp,LOCATION_HAND,0,1,e:GetHandler()) end
Duel.DiscardHand(tp,c24096228.cfilter,1,1,REASON_COST+REASON_DISCARD)
end
function c24096228.filter1(c)
return c:IsType(TYPE_SPELL) and c:CheckActivateEffect(false,false,false)~=nil
function c24096228.filter1(c,e,tp,eg,ep,ev,re,r,rp)
local te=c:CheckActivateEffect(false,false,false)
if c:IsType(TYPE_SPELL) and te then
if c:IsSetCard(0x95) then
local tg=te:GetTarget()
return not tg or tg(e,tp,eg,ep,ev,re,r,rp,0)
else
return true
end
end
return false
end
function c24096228.filter2(c)
return c:IsType(TYPE_SPELL) and not c:IsType(TYPE_EQUIP+TYPE_CONTINUOUS) and c:CheckActivateEffect(false,false,false)~=nil
function c24096228.filter2(c,e,tp,eg,ep,ev,re,r,rp)
local te=c:CheckActivateEffect(false,false,false)
if c:IsType(TYPE_SPELL) and not c:IsType(TYPE_EQUIP+TYPE_CONTINUOUS) and te then
if c:IsSetCard(0x95) then
local tg=te:GetTarget()
return not tg or tg(e,tp,eg,ep,ev,re,r,rp,0)
else
return true
end
end
return false
end
function c24096228.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return false end
......@@ -28,18 +47,16 @@ function c24096228.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
local b=e:GetHandler():IsLocation(LOCATION_HAND)
local ft=Duel.GetLocationCount(tp,LOCATION_SZONE)
if (b and ft>1) or (not b and ft>0) then
return Duel.IsExistingTarget(c24096228.filter1,tp,0,LOCATION_GRAVE,1,nil)
return Duel.IsExistingTarget(c24096228.filter1,tp,0,LOCATION_GRAVE,1,e:GetHandler(),e,tp,eg,ep,ev,re,r,rp)
else
return Duel.IsExistingTarget(c24096228.filter2,tp,0,LOCATION_GRAVE,1,nil)
return Duel.IsExistingTarget(c24096228.filter2,tp,0,LOCATION_GRAVE,1,e:GetHandler(),e,tp,eg,ep,ev,re,r,rp)
end
end
e:SetProperty(EFFECT_FLAG_CARD_TARGET)
e:SetCategory(0)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET)
if Duel.GetLocationCount(tp,LOCATION_SZONE)>0 then
Duel.SelectTarget(tp,c24096228.filter1,tp,0,LOCATION_GRAVE,1,1,nil)
Duel.SelectTarget(tp,c24096228.filter1,tp,0,LOCATION_GRAVE,1,1,nil,e,tp,eg,ep,ev,re,r,rp)
else
Duel.SelectTarget(tp,c24096228.filter2,tp,0,LOCATION_GRAVE,1,1,nil)
Duel.SelectTarget(tp,c24096228.filter2,tp,0,LOCATION_GRAVE,1,1,nil,e,tp,eg,ep,ev,re,r,rp)
end
end
function c24096228.operation(e,tp,eg,ep,ev,re,r,rp)
......@@ -61,7 +78,13 @@ function c24096228.operation(e,tp,eg,ep,ev,re,r,rp)
end
tc:CreateEffectRelation(te)
if co then co(te,tp,eg,ep,ev,re,r,rp,1) end
if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end
if tg then
if tc:IsSetCard(0x95) then
tg(e,tp,eg,ep,ev,re,r,rp,1)
else
tg(te,tp,eg,ep,ev,re,r,rp,1)
end
end
Duel.BreakEffect()
local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS)
local etc=g:GetFirst()
......@@ -69,7 +92,13 @@ function c24096228.operation(e,tp,eg,ep,ev,re,r,rp)
etc:CreateEffectRelation(te)
etc=g:GetNext()
end
if op then op(te,tp,eg,ep,ev,re,r,rp) end
if op then
if tc:IsSetCard(0x95) then
op(e,tp,eg,ep,ev,re,r,rp)
else
op(te,tp,eg,ep,ev,re,r,rp)
end
end
tc:ReleaseEffectRelation(te)
etc=g:GetFirst()
while etc do
......
......@@ -28,7 +28,7 @@ function c49398568.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chk==0 then return not ftg or ftg(e,tp,eg,ep,ev,re,r,rp,chk) end
if re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then
e:SetProperty(EFFECT_FLAG_CARD_TARGET)
else e:SetProperty(0) end
end
if ftg then
ftg(e,tp,eg,ep,ev,re,r,rp,chk)
end
......
......@@ -41,8 +41,9 @@ function c6165656.initial_effect(c)
c:RegisterEffect(e4)
end
c6165656.xyz_number=88
--target check is in RUM magic cards
function c6165656.splimit(e,se,sp,st)
return se:GetHandler():IsSetCard(0x95)
return se:GetHandler():IsSetCard(0x95) and se:GetHandler():IsType(TYPE_SPELL)
end
function c6165656.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) 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