Commit 7ca57d3f authored by POLYMER's avatar POLYMER

fix

parent 202eb2dd
...@@ -31,7 +31,7 @@ function cm.initial_effect(c) ...@@ -31,7 +31,7 @@ function cm.initial_effect(c)
e3:SetOperation(cm.synop) e3:SetOperation(cm.synop)
c:RegisterEffect(e3) c:RegisterEffect(e3)
local e4=Effect.CreateEffect(c) local e4=Effect.CreateEffect(c)
e4:SetDescription(aux.Stringid(m,1)) e4:SetDescription(aux.Stringid(m,2))
e4:SetCategory(CATEGORY_DESTROY) e4:SetCategory(CATEGORY_DESTROY)
e4:SetType(EFFECT_TYPE_QUICK_O) e4:SetType(EFFECT_TYPE_QUICK_O)
e4:SetCode(EVENT_FREE_CHAIN) e4:SetCode(EVENT_FREE_CHAIN)
...@@ -48,6 +48,8 @@ function cm.initial_effect(c) ...@@ -48,6 +48,8 @@ function cm.initial_effect(c)
e5:SetTargetRange(LOCATION_HAND+LOCATION_MZONE+LOCATION_GRAVE,0) e5:SetTargetRange(LOCATION_HAND+LOCATION_MZONE+LOCATION_GRAVE,0)
e5:SetTarget(cm.qtg) e5:SetTarget(cm.qtg)
e5:SetCondition(cm.qcon) e5:SetCondition(cm.qcon)
e5:SetTarget(cm.target)
e5:SetOperation(cm.operation)
c:RegisterEffect(e5) c:RegisterEffect(e5)
--search --search
local e6=Effect.CreateEffect(c) local e6=Effect.CreateEffect(c)
...@@ -148,10 +150,53 @@ function cm.desop(e,tp,eg,ep,ev,re,r,rp) ...@@ -148,10 +150,53 @@ function cm.desop(e,tp,eg,ep,ev,re,r,rp)
end end
function cm.qcon(e) function cm.qcon(e)
local c=e:GetHandler() local c=e:GetHandler()
return c:IsAttackAbove(3000) return c:IsAttackAbove(3000) and (Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2)
end end
function cm.qtg(e,c)
return c:IsSetCard(0xa450) and (c:IsType(TYPE_MONSTER) or c:IsType(TYPE_SPELL)) function cm.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(aux.NegateAnyFilter,tp,0,LOCATION_ONFIELD,1,e:GetHandler()) end
Duel.SetOperationInfo(0,CATEGORY_DISABLE,nil,1,1-tp,LOCATION_ONFIELD)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA)
end
function cm.synfilter(c)
return c:IsSetCard(0xa450) and c:IsType(TYPE_SYNCHRO) and c:IsSynchroSummonable(nil)
end
function cm.rmfilter(c)
return c:IsSetCard(0xa450) and c:IsAbleToRemove()
end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISABLE)
local g=Duel.SelectMatchingCard(tp,aux.NegateAnyFilter,tp,0,LOCATION_ONFIELD,1,1,e:GetHandler())
if g:GetCount()>0 then
local tc=g:GetFirst()
Duel.NegateRelatedChain(tc,RESET_TURN_SET)
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_DISABLE)
e1:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END)
tc:RegisterEffect(e1)
local e2=Effect.CreateEffect(e:GetHandler())
e2:SetType(EFFECT_TYPE_SINGLE)
e2:SetCode(EFFECT_DISABLE_EFFECT)
e2:SetValue(RESET_TURN_SET)
e2:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END)
tc:RegisterEffect(e2)
if Duel.IsExistingMatchingCard(cm.synfilter,tp,LOCATION_EXTRA,0,1,nil)
and Duel.IsExistingMatchingCard(cm.rmfilter,tp,LOCATION_HAND+LOCATION_ONFIELD+LOCATION_GRAVE,0,1,nil)
and Duel.SelectYesNo(tp,aux.Stringid(m,1)) then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local rg=Duel.SelectMatchingCard(tp,cm.rmfilter,tp,LOCATION_HAND+LOCATION_ONFIELD+LOCATION_GRAVE,0,1,1,nil)
if rg:GetCount()>0 and Duel.Remove(rg,POS_FACEUP,REASON_EFFECT)~=0 then
Duel.BreakEffect()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local sg=Duel.SelectMatchingCard(tp,cm.synfilter,tp,LOCATION_EXTRA,0,1,1,nil)
if sg:GetCount()>0 then
Duel.SynchroSummon(tp,sg:GetFirst(),nil)
end
end
end
end
end end
function cm.thcost(e,tp,eg,ep,ev,re,r,rp,chk) function cm.thcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end
......
...@@ -41,7 +41,6 @@ function s.initial_effect(c) ...@@ -41,7 +41,6 @@ function s.initial_effect(c)
end end
end end
function s.checkop(e,tp,eg,ep,ev,re,r,rp) function s.checkop(e,tp,eg,ep,ev,re,r,rp)
local tp=e:GetHandlerPlayer()
local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil)
for tc in aux.Next(g) do for tc in aux.Next(g) do
local e1=Effect.CreateEffect(e:GetHandler()) local e1=Effect.CreateEffect(e:GetHandler())
...@@ -80,9 +79,9 @@ function s.checkop(e,tp,eg,ep,ev,re,r,rp) ...@@ -80,9 +79,9 @@ function s.checkop(e,tp,eg,ep,ev,re,r,rp)
end end
end end
function s.immval(e,te) function s.immval(e,te)
local res=te:IsActivated(TYPE_MONSTER+TYPE_SPELL+TYPE_TRAP) and te:GetOwner()~=e:GetHandler() and te:GetOwner():IsSetCard(0x6a7d) local c=e:GetHandler()
local res=te:IsActivated(TYPE_MONSTER+TYPE_SPELL+TYPE_TRAP) and te:GetOwner()~=c and te:GetOwner():IsSetCard(0x6a7d)
if res then if res then
local c=e:GetHandler()
c:RegisterFlagEffect(id,RESET_EVENT+RESETS_STANDARD-RESET_TURN_SET-RESET_TOFIELD-RESET_LEAVE,0,1) c:RegisterFlagEffect(id,RESET_EVENT+RESETS_STANDARD-RESET_TURN_SET-RESET_TOFIELD-RESET_LEAVE,0,1)
end end
return false return false
...@@ -110,7 +109,8 @@ function s.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -110,7 +109,8 @@ function s.op(e,tp,eg,ep,ev,re,r,rp)
if #g==0 then return end if #g==0 then return end
local tg=g:Select(tp,1,1,nil) local tg=g:Select(tp,1,1,nil)
Duel.HintSelection(tg) Duel.HintSelection(tg)
if #tg>0 and Duel.SendtoDeck(tg,nil,SEQ_DECKSHUFFLE,REASON_EFFECT)>0 and tg:GetFirst():IsLocation(LOCATION_DECK+LOCATION_EXTRA) and Duel.IsPlayerCanDiscardDeck(tp,2) then if #tg>0 and Duel.SendtoDeck(tg,nil,SEQ_DECKSHUFFLE,REASON_EFFECT)>0 and tg:GetFirst():IsLocation(LOCATION_DECK+LOCATION_EXTRA)
and Duel.IsPlayerCanDiscardDeck(tp,1) then
Duel.BreakEffect() Duel.BreakEffect()
Duel.DisableShuffleCheck() Duel.DisableShuffleCheck()
Duel.DiscardDeck(tp,2,REASON_EFFECT) Duel.DiscardDeck(tp,2,REASON_EFFECT)
...@@ -118,12 +118,11 @@ function s.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -118,12 +118,11 @@ function s.op(e,tp,eg,ep,ev,re,r,rp)
end end
function s.discon(e,tp,eg,ep,ev,re,r,rp) function s.discon(e,tp,eg,ep,ev,re,r,rp)
local rc=re:GetHandler() local rc=re:GetHandler()
local loc=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION) local loc,p=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION,CHAININFO_TRIGGERING_PLAYER)
return re:IsActiveType(TYPE_MONSTER) and loc==LOCATION_MZONE and (rc:GetFlagEffect(id)>0 or rc:GetFlagEffect(id+o)>0) and rc:GetControler()==1-tp return re:IsActiveType(TYPE_MONSTER) and loc==LOCATION_MZONE and (rc:GetFlagEffect(id)>0 or rc:GetFlagEffect(id+o)>0) and p==1-tp
end end
function s.disop(e,tp,eg,ep,ev,re,r,rp) function s.disop(e,tp,eg,ep,ev,re,r,rp)
local rc=re:GetHandler() local rc=re:GetHandler()
if not rc:GetControler()==1-tp then return end
Duel.NegateEffect(ev) Duel.NegateEffect(ev)
if rc:GetFlagEffect(id+o)>0 then if rc:GetFlagEffect(id+o)>0 then
rc:ResetFlagEffect(id+o) rc:ResetFlagEffect(id+o)
......
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