Commit 85c61516 authored by Nemo Ma's avatar Nemo Ma

fix

parent 5be0dfe5
......@@ -61,12 +61,21 @@ function cm.target(e,tp,eg,ep,ev,re,r,rp,chk)
e1:SetValue(TYPE_NORMAL+TYPE_MONSTER)
e1:SetReset(RESET_EVENT+0x5fe0000)
tc:RegisterEffect(e1,true)
cm[tc]=e1
local e2=Effect.CreateEffect(e:GetHandler())
e2:SetType(EFFECT_TYPE_SINGLE)
e2:SetCode(EFFECT_XYZ_LEVEL)
e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_IGNORE_IMMUNE)
e2:SetValue(6)
e2:SetReset(RESET_EVENT+0x5fe0000)
tc:RegisterEffect(e2,true)
cm[tc]={e1,e2}
end
local res=Duel.IsExistingMatchingCard(cm.xyzfilter,tp,LOCATION_EXTRA,0,1,nil,g,tp)
for tc in aux.Next(g) do
tc:AddMonsterAttribute(0,0,0,0,0,0)
cm[tc]:Reset()
for _,se in pairs(cm[tc]) do
se:Reset()
end
end
return res
end
......@@ -96,16 +105,23 @@ function cm.activate(e,tp,eg,ep,ev,re,r,rp)
e1:SetValue(TYPE_NORMAL+TYPE_MONSTER)
e1:SetReset(RESET_EVENT+0x5fe0000)
tc:RegisterEffect(e1,true)
cm[tc]=e1
local e2=Effect.CreateEffect(e:GetHandler())
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e2:SetCode(EVENT_MOVE)
e2:SetCountLimit(1)
e2:SetLabelObject(tc)
e2:SetOperation(cm.adjustop)
e2:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e2,tp)
e2:SetType(EFFECT_TYPE_SINGLE)
e2:SetCode(EFFECT_XYZ_LEVEL)
e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_IGNORE_IMMUNE)
e2:SetValue(6)
e2:SetReset(RESET_EVENT+0x5fe0000)
tc:RegisterEffect(e2,true)
cm[tc]={e1,e2}
local e3=Effect.CreateEffect(e:GetHandler())
e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e3:SetCode(EVENT_MOVE)
e3:SetCountLimit(1)
e3:SetLabelObject(tc)
e3:SetOperation(cm.adjustop)
e3:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e3,tp)
end
local xyzg=Duel.GetMatchingGroup(cm.xyzfilter,tp,LOCATION_EXTRA,0,nil,g,tp)
if #xyzg>0 then
......@@ -115,15 +131,20 @@ function cm.activate(e,tp,eg,ep,ev,re,r,rp)
else
for tc in aux.Next(g) do
tc:AddMonsterAttribute(0,0,0,0,0,0)
cm[tc]:Reset()
for _,se in pairs(cm[tc]) do
se:Reset()
end
end
end
end
function cm.adjustop(e,tp,eg,ep,ev,re,r,rp)
local tc=e:GetLabelObject()
tc:AddMonsterAttribute(0,0,0,0,0,0)
local te=cm[tc]
if te and aux.GetValueType(te)=="Effect" then te:Reset() end
if cm[tc] and aux.GetValueType(cm[tc])=="table" then
for _,se in pairs(cm[tc]) do
se:Reset()
end
end
e:Reset()
end
function cm.rscon(e,tp,eg,ep,ev,re,r,rp)
......
......@@ -134,6 +134,7 @@ function cm.efop(e,tp,eg,ep,ev,re,r,rp)
e1:SetCategory(te:GetCategory())
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_CHAINING)
e1:SetProperty(EFFECT_FLAG_BOTH_SIDE)
if con then e1:SetCondition(con) end
e1:SetCost(cm.addcost)
if tg then e1:SetTarget(tg) end
......@@ -145,12 +146,8 @@ function cm.addcost(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
if chk==0 then
local xc=c:GetOverlayTarget()
e:SetLabelObject(xc)
return c:IsLocation(LOCATION_OVERLAY) and xc:IsHasEffect(m) and xc:IsControler(tp)
return c:IsLocation(LOCATION_OVERLAY) and xc:IsHasEffect(m) and xc:IsControler(tp) and Duel.GetLocationCount(tp,LOCATION_SZONE)>0
end
local tc=e:GetLabelObject()
tc:RegisterFlagEffect(m+1,RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END,0,1)
e:SetLabelObject(nil)
end
function cm.con(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetFlagEffect(m+1)==0
......@@ -164,6 +161,7 @@ function cm.costop(e,tp,eg,ep,ev,re,r,rp)
local te=e:GetLabelObject()
local tc=te:GetHandler()
Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,false)
e:GetHandler():RegisterFlagEffect(m+1,RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END,0,1)
tc:CreateEffectRelation(te)
local c=e:GetHandler()
local e1=Effect.CreateEffect(c)
......
......@@ -26,14 +26,14 @@ function c22050140.initial_effect(c)
--negate
local e3=Effect.CreateEffect(c)
e3:SetDescription(aux.Stringid(22050140,1))
e3:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY)
e3:SetCategory(CATEGORY_NEGATE)
e3:SetType(EFFECT_TYPE_QUICK_O)
e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL)
e3:SetCode(EVENT_CHAINING)
e3:SetRange(LOCATION_MZONE)
e3:SetCountLimit(1,22050140)
e3:SetCondition(c22050140.condition)
e3:SetCost(c22050140.cost)
e3:SetCost(c22050140.cost1)
e3:SetTarget(c22050140.target)
e3:SetOperation(c22050140.operation)
c:RegisterEffect(e3)
......@@ -45,6 +45,7 @@ function c22050140.initial_effect(c)
e4:SetProperty(EFFECT_FLAG_CARD_TARGET)
e4:SetRange(LOCATION_MZONE)
e4:SetCountLimit(1,22050141)
e4:SetCost(c22050140.cost)
e4:SetTarget(c22050140.destg)
e4:SetOperation(c22050140.desop)
c:RegisterEffect(e4)
......@@ -59,10 +60,10 @@ function c22050140.ctop(e,tp,eg,ep,ev,re,r,rp)
end
end
function c22050140.condition(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
return rp==1-tp and re:IsActiveType(TYPE_MONSTER) and not c:IsStatus(STATUS_BATTLE_DESTROYED) and Duel.IsChainNegatable(ev)
return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED)
and ep~=tp and re:IsActiveType(TYPE_MONSTER) and Duel.IsChainNegatable(ev)
end
function c22050140.cost(e,tp,eg,ep,ev,re,r,rp,chk)
function c22050140.cost1(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsCanRemoveCounter(tp,1,0,0xfec,2,REASON_COST) end
Duel.RemoveCounter(tp,1,0,0xfec,2,REASON_COST)
end
......
......@@ -23,10 +23,10 @@ function c22050480.initial_effect(c)
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_FIELD)
e3:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_RANGE+EFFECT_FLAG_IGNORE_IMMUNE)
e3:SetRange(LOCATION_MZONE)
e3:SetCode(EFFECT_TO_GRAVE_REDIRECT)
e3:SetRange(LOCATION_MZONE)
e3:SetTargetRange(0xfe,0xff)
e3:SetValue(LOCATION_DECK)
e3:SetValue(LOCATION_DECKSHF)
e3:SetTarget(c22050480.rmtg)
c:RegisterEffect(e3)
end
......
......@@ -136,7 +136,7 @@ function cm.adfilter(c)
end
function cm.adtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and cm.adfilter(chkc) end
if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_ONFIELD)>0 and Duel.IsExistingTarget(cm.adfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end
if chk==0 then return Duel.IsExistingTarget(cm.adfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP)
Duel.SelectTarget(tp,cm.adfilter,tp,LOCATION_MZONE,0,1,1,nil)
end
......
......@@ -53,7 +53,7 @@ function cm.acop(e,tp,eg,ep,ev,re,r,rp)
e1:SetTargetRange(1,0)
e1:SetValue(cm.aclimit)
e1:SetLabel(tc:GetCode())
e1:SetReset(RESET_PHASE+PHASE_END)
e1:SetReset(RESET_PHASE+PHASE_END,2)
Duel.RegisterEffect(e1,tp)
end
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