Commit e67f4ca3 authored by Nemo Ma's avatar Nemo Ma

fix

parent db190e06
......@@ -49,8 +49,8 @@ function cm.hint(e,tp,eg,ep,ev,re,r,rp)
if Duel.SelectYesNo(tp,aux.Stringid(m,0)) then
local e3=Effect.CreateEffect(e:GetHandler())
e3:SetDescription(aux.Stringid(m,1))
e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e3:SetCode(EVENT_FREE_CHAIN)
e3:SetType(EFFECT_TYPE_FIELD)
e3:SetCode(EFFECT_SPSUMMON_PROC_G)
e3:SetCondition(cm.debcon)
e3:SetOperation(cm.debug)
Duel.RegisterEffect(e3,tp)
......
......@@ -40,15 +40,64 @@ function cm.initial_effect(c)
if not GIGANTIC_JET then
GIGANTIC_JET=true
local _CGetCounter=Card.GetCounter
local _CRemoveCounter=Card.RemoveCounter
local _DIsCanRemoveCounter=Duel.IsCanRemoveCounter
local _DRemoveCounter=Duel.RemoveCounter
function Card.GetCounter(c,typ)
local ct=_CGetCounter(c,typ)
if typ~=0x1019 then return ct end
if c:IsHasEffect(m) then
local og=c:GetOverlayGroup()
if og and og:FilterCount(cm.filter,nil)>ct then ct=og:FilterCount(cm.filter,nil) end
if og and #og>0 then ct=ct+og:FilterCount(cm.filter,nil) end
end
return ct
end
function Card.RemoveCounter(c,p,typ,ct,r)
if c:IsHasEffect(m) and typ==0x1019 and ct==c:GetCounter(typ) then
local og=c:GetOverlayGroup():Filter(cm.filter,nil)
local ct0=_CGetCounter(c,typ)
if og and #og>0 and c:CheckRemoveOverlayCard(p,#og,r) then c:RemoveOverlayCard(p,#og,#og,r) end
if ct0>0 then _CRemoveCounter(c,p,typ,ct0,r) end
return true
end
return _CRemoveCounter(c,p,typ,ct,r)
end
function Duel.IsCanRemoveCounter(p,s,o,typ,ct,r)
if typ~=0x1019 then return _DIsCanRemoveCounter(p,s,o,typ,ct,r) end
local s1,o1=s,o
if s==1 then s1=0xff end
if o==1 then o1=0xff end
local g=Duel.GetMatchingGroup(Card.IsHasEffect,p,s1,o1,nil,m)
for tc in aux.Next(g) do
local og=tc:GetOverlayGroup():Filter(cm.filter,nil)
if og and #og>0 and tc:CheckRemoveOverlayCard(p,#og,r) then ct=ct-#og end
end
if ct<=0 then return true end
return _DIsCanRemoveCounter(p,s,o,typ,ct,r)
end
function Duel.RemoveCounter(p,s,o,typ,ct,r)
if typ~=0x1019 then return _DRemoveCounter(p,s,o,typ,ct,r) end
local ct0=Duel.GetCounter(p,s,o,typ)
local s1,o1=s,o
if s==1 then s1=0xff end
if o==1 then o1=0xff end
local g=Duel.GetMatchingGroup(Card.IsHasEffect,p,s1,o1,nil,m)
local rg=Group.CreateGroup()
for tc in aux.Next(g) do
local og=tc:GetOverlayGroup():Filter(cm.filter,nil)
if og and #og>0 and tc:CheckRemoveOverlayCard(p,#og,r) then rg:Merge(og) end
end
if rg and #rg>0 and (ct>ct0 or Duel.SelectYesNo(p,aux.Stringid(m,2))) then
Duel.Hint(HINT_SELECTMSG,ep,HINTMSG_REMOVEXYZ)
local tg=rg:Select(ep,math.max(1,ct-ct0),ct,nil)
if #tg>0 then
local ct1=Duel.SendtoGrave(tg,r)
ct=ct-ct1
end
end
if ct<=0 then return true end
return _DRemoveCounter(p,s,o,typ,ct,r)
end
end
end
function cm.mfilter(c,xyzc)
......@@ -91,9 +140,17 @@ function cm.splimit(e,c)
end
function cm.rcon(e,tp,eg,ep,ev,re,r,rp)
local og=e:GetHandler():GetOverlayGroup()
return ep==e:GetOwnerPlayer() and og and og:FilterCount(cm.filter,nil)>=ev
local code=re:GetOwner():GetOriginalCode()
--continuously updating
local tab={11451697,79703905,90557975,99913710}
for _,code0 in pairs(tab) do
if code==code0 then return false end
end
return ep==e:GetOwnerPlayer() and og and og:FilterCount(cm.filter,nil)>=ev and e:GetHandler():CheckRemoveOverlayCard(ep,ev,r)
end
function cm.rop(e,tp,eg,ep,ev,re,r,rp)
local og=e:GetHandler():GetOverlayGroup():Filter(cm.filter,nil)
e:GetHandler():RemoveOverlayCard(ep,ev,ev,REASON_EFFECT)
Duel.Hint(HINT_SELECTMSG,ep,HINTMSG_REMOVEXYZ)
local tg=og:Select(ep,ev,ev,nil)
if #tg>0 then Duel.SendtoGrave(tg,r) end
end
\ No newline at end of file
......@@ -11,7 +11,7 @@ function cm.initial_effect(c)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O)
e1:SetCode(EVENT_PHASE+PHASE_END)
e1:SetCountLimit(1)
e1:SetRange(LOCATION_FZONE)
e1:SetRange(LOCATION_MZONE)
e1:SetCondition(cm.tgcon)
e1:SetTarget(cm.tgtg)
e1:SetOperation(cm.tgop)
......@@ -22,6 +22,7 @@ function cm.initial_effect(c)
e2:SetType(EFFECT_TYPE_IGNITION)
e2:SetRange(LOCATION_MZONE)
e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE)
e2:SetCondition(cm.rmcon)
e2:SetCost(cm.rmcost)
e2:SetTarget(cm.rmtg)
e2:SetOperation(cm.rmop)
......@@ -136,6 +137,9 @@ end
function cm.efilter2(e,te)
return te:IsActiveType(TYPE_TRAP)
end
function cm.rmcon(e,tp,eg,ep,ev,re,r,rp)
return bit.band(e:GetHandler():GetFlagEffectLabel(m),TYPE_MONSTER+TYPE_SPELL+TYPE_TRAP)==TYPE_MONSTER+TYPE_SPELL+TYPE_TRAP
end
function cm.rmcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsReleasable() end
Duel.Release(e:GetHandler(),REASON_COST)
......
......@@ -37,7 +37,7 @@ function c71400033.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
end
function c71400033.operation(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget()
if tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)>0 and e:GetLabel==1 then
if tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)>0 and e:GetLabel()==1 then
Duel.BreakEffect()
Duel.SetLP(tp,Duel.GetLP(tp)-1500)
local fc=Duel.GetFieldCard(tp,LOCATION_FZONE,0)
......
......@@ -39,7 +39,7 @@ end
function c71400066.tg1(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsOnField() and chkc~=e:GetHandler() end
if chk==0 then
return Duel.CheckLPCost(tc:GetControler(),500) and yume.YumeFieldCheck(tp,0,2,LOCATION_DECK+LOCATION_GRAVE+LOCATION_REMOVED)
return Duel.CheckLPCost(tp,1000) and yume.YumeFieldCheck(tp,0,2,LOCATION_DECK+LOCATION_GRAVE+LOCATION_REMOVED)
end
if not Duel.CheckPhaseActivity() then e:SetLabel(1) else e:SetLabel(0) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY)
......@@ -55,6 +55,11 @@ function c71400066.limit(c)
end
end
function c71400066.op1(e,tp,eg,ep,ev,re,r,rp)
if Duel.CheckLPCost(tc:GetControler(),1000) then
Duel.PayLPCost(tc:GetControler(),1000)
else
return
end
local tc=Duel.GetFirstTarget()
if yume.ActivateYumeField(e,tp,0,0,LOCATION_DECK+LOCATION_GRAVE+LOCATION_REMOVED) and tc:IsRelateToEffect(e) then
Duel.BreakEffect()
......@@ -71,7 +76,7 @@ end
function c71400066.tg1a(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsOnField() and chkc~=e:GetHandler() end
if chk==0 then
return Duel.CheckLPCost(tc:GetControler(),500) and yume.YumeFieldCheck(tp,0,2,LOCATION_DECK+LOCATION_GRAVE+LOCATION_REMOVED) and Duel.IsExistingMatchingCard(c71400066.filter1a,tp,LOCATION_DECK+LOCATION_GRAVE+LOCATION_REMOVED,0,1,nil)
return Duel.CheckLPCost(tp,1000) and yume.YumeFieldCheck(tp,0,2,LOCATION_DECK+LOCATION_GRAVE+LOCATION_REMOVED) and Duel.IsExistingMatchingCard(c71400066.filter1a,tp,LOCATION_DECK+LOCATION_GRAVE+LOCATION_REMOVED,0,1,nil)
end
if not Duel.CheckPhaseActivity() then e:SetLabel(1) else e:SetLabel(0) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY)
......@@ -83,6 +88,11 @@ function c71400066.tg1a(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
end
end
function c71400066.op1a(e,tp,eg,ep,ev,re,r,rp)
if Duel.CheckLPCost(tc:GetControler(),1000) then
Duel.PayLPCost(tc:GetControler(),1000)
else
return
end
local tc=Duel.GetFirstTarget()
if yume.ActivateYumeField(e,tp,0,0,LOCATION_DECK+LOCATION_GRAVE+LOCATION_REMOVED) and tc:IsRelateToEffect(e) then
Duel.BreakEffect()
......
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