Commit 41c53ff7 authored by POLYMER's avatar POLYMER

fix

parent 0760975d
......@@ -183,7 +183,7 @@ function cm.spfilter(c,e,tp)
end
function cm.target(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
if chk==0 then return Duel.IsExistingMatchingCard(cm.spfilter,tp,LOCATION_HAND,LOCATION_GRAVE,1,nil,e,tp) and c:GetFlagEffect(m)==0 end
if chk==0 then return Duel.IsExistingMatchingCard(cm.spfilter,tp,LOCATION_HAND,LOCATION_GRAVE,1,c,e,tp) and c:GetFlagEffect(m)==0 end
local fid=c:GetFieldID()
local e1=Card.RegisterFlagEffect(c,m,RESET_EVENT+0x53e0000+RESET_PHASE+PHASE_END,EFFECT_FLAG_CLIENT_HINT+EFFECT_FLAG_OATH,1,fid,aux.Stringid(m,2))
local e2=Effect.CreateEffect(c)
......
--魔人★双子使徒 小雪
local cm,m=GetID()
function cm.initial_effect(c)
Duel.EnableGlobalFlag(GLOBALFLAG_DETACH_EVENT)
--effect1
local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_REMOVE)
......@@ -15,7 +16,7 @@ function cm.initial_effect(c)
local e3=Effect.CreateEffect(c)
e3:SetDescription(aux.Stringid(m,1))
e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O)
e3:SetCode(EVENT_TO_GRAVE)
e3:SetCode(EVENT_DETACH_MATERIAL)
e3:SetRange(LOCATION_GRAVE)
e3:SetProperty(EFFECT_FLAG_DELAY)
e3:SetCountLimit(2,m)
......@@ -86,7 +87,7 @@ function cm.thfilter(c,tp)
return c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_OVERLAY)
end
function cm.thcon(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(cm.thfilter,1,1,nil,tp) and not eg:IsContains(e:GetHandler())
return eg:IsExists(cm.thfilter,1,1,nil,tp) --and not eg:IsContains(e:GetHandler())
end
function cm.thtg(e,tp,eg,ep,ev,re,r,rp,chk)
local g=Duel.GetFieldGroup(tp,0,LOCATION_ONFIELD)
......
......@@ -68,8 +68,7 @@ function cm.target(e,tp,eg,ep,ev,re,r,rp,chk)
Duel.RegisterEffect(e2,tp)
end
function cm.activate(e,tp,eg,ep,ev,re,r,rp)
local act=e:IsHasType(EFFECT_TYPE_ACTIVATE)
local g=Duel.GetMatchingGroup(cm.filter,tp,LOCATION_DECK,0,nil,act)
local g=Duel.GetMatchingGroup(cm.filter,tp,LOCATION_DECK,0,nil)
if g:GetCount()>0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD)
local tc=g:Select(tp,1,1,nil):GetFirst()
......@@ -92,14 +91,14 @@ function cm.addition(e,tp,eg,ep,ev,re,r,rp)
local off=1
local ops={}
local opval={}
local b1=e:GetLabel()&0x1>0
local b2=e:GetLabel()&0x2>0 and Duel.IsExistingMatchingCard(Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil)
local b3=e:GetLabel()&0x4>0 and re:GetHandler():IsRelateToEffect(re) and re:GetHandler():IsAbleToRemove()
local b4=e:GetLabel()&0x8>0
local b5=e:GetLabel()&0x10>0 and Duel.IsPlayerCanDraw(tp,1)
local b6=e:GetLabel()&0x20>0 and Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0
local b7=e:GetLabel()&0x40>0 and Duel.IsExistingMatchingCard(Card.IsAbleToDeck,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil)
local b8=e:GetLabel()&0x80>0
local b1=e:GetLabel()&(0x8-0x1)>0
local b2=e:GetLabel()&(0x40-0x8)>0 and Duel.IsExistingMatchingCard(Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil)
local b3=e:GetLabel()&(0x200-0x40)>0 and re:GetHandler():IsRelateToEffect(re) and re:GetHandler():IsAbleToRemove()
local b4=e:GetLabel()&(0x1000-0x200)>0
local b5=e:GetLabel()&(0x8000-0x1000)>0 and Duel.IsPlayerCanDraw(tp,1)
local b6=e:GetLabel()&(0x40000-0x8000)>0 and Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0
local b7=e:GetLabel()&(0x200000-0x40000)>0 and Duel.IsExistingMatchingCard(Card.IsAbleToDeck,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil)
local b8=e:GetLabel()&(0x1000000-0x200000)>0
if b1 then
ops[off]=aux.Stringid(11451505,1)
opval[off-1]=1
......@@ -164,34 +163,34 @@ function cm.addition(e,tp,eg,ep,ev,re,r,rp)
end
if opval[op]==1 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x1)
e:SetLabel(e:GetLabel()-0x1)
Duel.NegateActivation(ev)
elseif opval[op]==2 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x2)
e:SetLabel(e:GetLabel()-0x8)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND)
local g=Duel.SelectMatchingCard(tp,Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil)
Duel.HintSelection(g)
Duel.SendtoHand(g,nil,REASON_EFFECT)
elseif opval[op]==3 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x4)
e:SetLabel(e:GetLabel()-0x40)
Duel.Remove(re:GetHandler(),POS_FACEUP,REASON_EFFECT)
elseif opval[op]==4 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x8)
e:SetLabel(e:GetLabel()-0x200)
Duel.Damage(ep,2200,REASON_EFFECT)
elseif opval[op]==5 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x10)
e:SetLabel(e:GetLabel()-0x1000)
Duel.Draw(tp,1,REASON_EFFECT)
elseif opval[op]==6 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x20)
e:SetLabel(e:GetLabel()-0x8000)
Duel.DiscardHand(1-tp,nil,1,1,REASON_EFFECT+REASON_DISCARD)
elseif opval[op]==7 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x40)
e:SetLabel(e:GetLabel()-0x40000)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(Card.IsAbleToDeck),tp,LOCATION_GRAVE,LOCATION_GRAVE,1,2,nil)
if #g>0 then
......@@ -253,8 +252,8 @@ function cm.dissop(e,tp,eg,ep,ev,re,r,rp)
end
function cm.chop(e,tp,eg,ep,ev,re,r,rp)
re:SetCategory(re:GetCategory()|CATEGORY_NEGATE)
if re:GetLabel()&0xbf~=0 then re:SetLabel(re:GetLabel()|0x1) return end
re:SetLabel(re:GetLabel()|0x1)
if re:GetLabel()&0x49421~=0 then re:SetLabel(re:GetLabel()+0x1) return end
re:SetLabel(re:GetLabel()+0x1)
local op=re:GetOperation()
local repop=function(e,tp,eg,ep,ev,re,r,rp)
op(e,tp,eg,ep,ev,re,r,rp)
......
......@@ -101,14 +101,14 @@ function cm.addition(e,tp,eg,ep,ev,re,r,rp)
local off=1
local ops={}
local opval={}
local b1=e:GetLabel()&0x1>0
local b2=e:GetLabel()&0x2>0 and Duel.IsExistingMatchingCard(Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil)
local b3=e:GetLabel()&0x4>0 and re:GetHandler():IsRelateToEffect(re) and re:GetHandler():IsAbleToRemove()
local b4=e:GetLabel()&0x8>0
local b5=e:GetLabel()&0x10>0 and Duel.IsPlayerCanDraw(tp,1)
local b6=e:GetLabel()&0x20>0 and Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0
local b7=e:GetLabel()&0x40>0 and Duel.IsExistingMatchingCard(Card.IsAbleToDeck,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil)
local b8=e:GetLabel()&0x80>0
local b1=e:GetLabel()&(0x8-0x1)>0
local b2=e:GetLabel()&(0x40-0x8)>0 and Duel.IsExistingMatchingCard(Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil)
local b3=e:GetLabel()&(0x200-0x40)>0 and re:GetHandler():IsRelateToEffect(re) and re:GetHandler():IsAbleToRemove()
local b4=e:GetLabel()&(0x1000-0x200)>0
local b5=e:GetLabel()&(0x8000-0x1000)>0 and Duel.IsPlayerCanDraw(tp,1)
local b6=e:GetLabel()&(0x40000-0x8000)>0 and Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0
local b7=e:GetLabel()&(0x200000-0x40000)>0 and Duel.IsExistingMatchingCard(Card.IsAbleToDeck,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil)
local b8=e:GetLabel()&(0x1000000-0x200000)>0
if b1 then
ops[off]=aux.Stringid(11451505,1)
opval[off-1]=1
......@@ -173,34 +173,34 @@ function cm.addition(e,tp,eg,ep,ev,re,r,rp)
end
if opval[op]==1 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x1)
e:SetLabel(e:GetLabel()-0x1)
Duel.NegateActivation(ev)
elseif opval[op]==2 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x2)
e:SetLabel(e:GetLabel()-0x8)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND)
local g=Duel.SelectMatchingCard(tp,Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil)
Duel.HintSelection(g)
Duel.SendtoHand(g,nil,REASON_EFFECT)
elseif opval[op]==3 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x4)
e:SetLabel(e:GetLabel()-0x40)
Duel.Remove(re:GetHandler(),POS_FACEUP,REASON_EFFECT)
elseif opval[op]==4 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x8)
e:SetLabel(e:GetLabel()-0x200)
Duel.Damage(ep,2200,REASON_EFFECT)
elseif opval[op]==5 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x10)
e:SetLabel(e:GetLabel()-0x1000)
Duel.Draw(tp,1,REASON_EFFECT)
elseif opval[op]==6 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x20)
e:SetLabel(e:GetLabel()-0x8000)
Duel.DiscardHand(1-tp,nil,1,1,REASON_EFFECT+REASON_DISCARD)
elseif opval[op]==7 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x40)
e:SetLabel(e:GetLabel()-0x40000)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(Card.IsAbleToDeck),tp,LOCATION_GRAVE,LOCATION_GRAVE,1,2,nil)
if #g>0 then
......@@ -262,8 +262,8 @@ function cm.dissop(e,tp,eg,ep,ev,re,r,rp)
end
function cm.chop(e,tp,eg,ep,ev,re,r,rp)
re:SetCategory(re:GetCategory()|CATEGORY_TOHAND)
if re:GetLabel()&0xbf~=0 then re:SetLabel(re:GetLabel()|0x2) return end
re:SetLabel(re:GetLabel()|0x2)
if re:GetLabel()&0x49421~=0 then re:SetLabel(re:GetLabel()+0x8) return end
re:SetLabel(re:GetLabel()+0x8)
local op=re:GetOperation()
local repop=function(e,tp,eg,ep,ev,re,r,rp)
op(e,tp,eg,ep,ev,re,r,rp)
......
......@@ -125,14 +125,14 @@ function cm.addition(e,tp,eg,ep,ev,re,r,rp)
local off=1
local ops={}
local opval={}
local b1=e:GetLabel()&0x1>0
local b2=e:GetLabel()&0x2>0 and Duel.IsExistingMatchingCard(Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil)
local b3=e:GetLabel()&0x4>0 and re:GetHandler():IsRelateToEffect(re) and re:GetHandler():IsAbleToRemove()
local b4=e:GetLabel()&0x8>0
local b5=e:GetLabel()&0x10>0 and Duel.IsPlayerCanDraw(tp,1)
local b6=e:GetLabel()&0x20>0 and Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0
local b7=e:GetLabel()&0x40>0 and Duel.IsExistingMatchingCard(Card.IsAbleToDeck,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil)
local b8=e:GetLabel()&0x80>0
local b1=e:GetLabel()&(0x8-0x1)>0
local b2=e:GetLabel()&(0x40-0x8)>0 and Duel.IsExistingMatchingCard(Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil)
local b3=e:GetLabel()&(0x200-0x40)>0 and re:GetHandler():IsRelateToEffect(re) and re:GetHandler():IsAbleToRemove()
local b4=e:GetLabel()&(0x1000-0x200)>0
local b5=e:GetLabel()&(0x8000-0x1000)>0 and Duel.IsPlayerCanDraw(tp,1)
local b6=e:GetLabel()&(0x40000-0x8000)>0 and Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0
local b7=e:GetLabel()&(0x200000-0x40000)>0 and Duel.IsExistingMatchingCard(Card.IsAbleToDeck,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil)
local b8=e:GetLabel()&(0x1000000-0x200000)>0
if b1 then
ops[off]=aux.Stringid(11451505,1)
opval[off-1]=1
......@@ -197,34 +197,34 @@ function cm.addition(e,tp,eg,ep,ev,re,r,rp)
end
if opval[op]==1 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x1)
e:SetLabel(e:GetLabel()-0x1)
Duel.NegateActivation(ev)
elseif opval[op]==2 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x2)
e:SetLabel(e:GetLabel()-0x8)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND)
local g=Duel.SelectMatchingCard(tp,Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil)
Duel.HintSelection(g)
Duel.SendtoHand(g,nil,REASON_EFFECT)
elseif opval[op]==3 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x4)
e:SetLabel(e:GetLabel()-0x40)
Duel.Remove(re:GetHandler(),POS_FACEUP,REASON_EFFECT)
elseif opval[op]==4 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x8)
e:SetLabel(e:GetLabel()-0x200)
Duel.Damage(ep,2200,REASON_EFFECT)
elseif opval[op]==5 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x10)
e:SetLabel(e:GetLabel()-0x1000)
Duel.Draw(tp,1,REASON_EFFECT)
elseif opval[op]==6 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x20)
e:SetLabel(e:GetLabel()-0x8000)
Duel.DiscardHand(1-tp,nil,1,1,REASON_EFFECT+REASON_DISCARD)
elseif opval[op]==7 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x40)
e:SetLabel(e:GetLabel()-0x40000)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(Card.IsAbleToDeck),tp,LOCATION_GRAVE,LOCATION_GRAVE,1,2,nil)
if #g>0 then
......@@ -286,8 +286,8 @@ function cm.dissop(e,tp,eg,ep,ev,re,r,rp)
end
function cm.chop(e,tp,eg,ep,ev,re,r,rp)
re:SetCategory(re:GetCategory()|CATEGORY_REMOVE)
if re:GetLabel()&0xbf~=0 then re:SetLabel(re:GetLabel()|0x4) return end
re:SetLabel(re:GetLabel()|0x4)
if re:GetLabel()&0x49421~=0 then re:SetLabel(re:GetLabel()+0x40) return end
re:SetLabel(re:GetLabel()+0x40)
local op=re:GetOperation()
local repop=function(e,tp,eg,ep,ev,re,r,rp)
op(e,tp,eg,ep,ev,re,r,rp)
......
......@@ -92,14 +92,14 @@ function cm.addition(e,tp,eg,ep,ev,re,r,rp)
local off=1
local ops={}
local opval={}
local b1=e:GetLabel()&0x1>0
local b2=e:GetLabel()&0x2>0 and Duel.IsExistingMatchingCard(Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil)
local b3=e:GetLabel()&0x4>0 and re:GetHandler():IsRelateToEffect(re) and re:GetHandler():IsAbleToRemove()
local b4=e:GetLabel()&0x8>0
local b5=e:GetLabel()&0x10>0 and Duel.IsPlayerCanDraw(tp,1)
local b6=e:GetLabel()&0x20>0 and Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0
local b7=e:GetLabel()&0x40>0 and Duel.IsExistingMatchingCard(Card.IsAbleToDeck,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil)
local b8=e:GetLabel()&0x80>0
local b1=e:GetLabel()&(0x8-0x1)>0
local b2=e:GetLabel()&(0x40-0x8)>0 and Duel.IsExistingMatchingCard(Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil)
local b3=e:GetLabel()&(0x200-0x40)>0 and re:GetHandler():IsRelateToEffect(re) and re:GetHandler():IsAbleToRemove()
local b4=e:GetLabel()&(0x1000-0x200)>0
local b5=e:GetLabel()&(0x8000-0x1000)>0 and Duel.IsPlayerCanDraw(tp,1)
local b6=e:GetLabel()&(0x40000-0x8000)>0 and Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0
local b7=e:GetLabel()&(0x200000-0x40000)>0 and Duel.IsExistingMatchingCard(Card.IsAbleToDeck,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil)
local b8=e:GetLabel()&(0x1000000-0x200000)>0
if b1 then
ops[off]=aux.Stringid(11451505,1)
opval[off-1]=1
......@@ -164,34 +164,34 @@ function cm.addition(e,tp,eg,ep,ev,re,r,rp)
end
if opval[op]==1 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x1)
e:SetLabel(e:GetLabel()-0x1)
Duel.NegateActivation(ev)
elseif opval[op]==2 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x2)
e:SetLabel(e:GetLabel()-0x8)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND)
local g=Duel.SelectMatchingCard(tp,Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil)
Duel.HintSelection(g)
Duel.SendtoHand(g,nil,REASON_EFFECT)
elseif opval[op]==3 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x4)
e:SetLabel(e:GetLabel()-0x40)
Duel.Remove(re:GetHandler(),POS_FACEUP,REASON_EFFECT)
elseif opval[op]==4 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x8)
e:SetLabel(e:GetLabel()-0x200)
Duel.Damage(ep,2200,REASON_EFFECT)
elseif opval[op]==5 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x10)
e:SetLabel(e:GetLabel()-0x1000)
Duel.Draw(tp,1,REASON_EFFECT)
elseif opval[op]==6 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x20)
e:SetLabel(e:GetLabel()-0x8000)
Duel.DiscardHand(1-tp,nil,1,1,REASON_EFFECT+REASON_DISCARD)
elseif opval[op]==7 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x40)
e:SetLabel(e:GetLabel()-0x40000)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(Card.IsAbleToDeck),tp,LOCATION_GRAVE,LOCATION_GRAVE,1,2,nil)
if #g>0 then
......@@ -253,8 +253,8 @@ function cm.dissop(e,tp,eg,ep,ev,re,r,rp)
end
function cm.chop(e,tp,eg,ep,ev,re,r,rp)
re:SetCategory(re:GetCategory()|CATEGORY_DAMAGE)
if re:GetLabel()&0xbf~=0 then re:SetLabel(re:GetLabel()|0x8) return end
re:SetLabel(re:GetLabel()|0x8)
if re:GetLabel()&0x49421~=0 then re:SetLabel(re:GetLabel()+0x200) return end
re:SetLabel(re:GetLabel()+0x200)
local op=re:GetOperation()
local repop=function(e,tp,eg,ep,ev,re,r,rp)
op(e,tp,eg,ep,ev,re,r,rp)
......
......@@ -123,14 +123,14 @@ function cm.addition(e,tp,eg,ep,ev,re,r,rp)
local off=1
local ops={}
local opval={}
local b1=e:GetLabel()&0x1>0
local b2=e:GetLabel()&0x2>0 and Duel.IsExistingMatchingCard(Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil)
local b3=e:GetLabel()&0x4>0 and re:GetHandler():IsRelateToEffect(re) and re:GetHandler():IsAbleToRemove()
local b4=e:GetLabel()&0x8>0
local b5=e:GetLabel()&0x10>0 and Duel.IsPlayerCanDraw(tp,1)
local b6=e:GetLabel()&0x20>0 and Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0
local b7=e:GetLabel()&0x40>0 and Duel.IsExistingMatchingCard(Card.IsAbleToDeck,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil)
local b8=e:GetLabel()&0x80>0
local b1=e:GetLabel()&(0x8-0x1)>0
local b2=e:GetLabel()&(0x40-0x8)>0 and Duel.IsExistingMatchingCard(Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil)
local b3=e:GetLabel()&(0x200-0x40)>0 and re:GetHandler():IsRelateToEffect(re) and re:GetHandler():IsAbleToRemove()
local b4=e:GetLabel()&(0x1000-0x200)>0
local b5=e:GetLabel()&(0x8000-0x1000)>0 and Duel.IsPlayerCanDraw(tp,1)
local b6=e:GetLabel()&(0x40000-0x8000)>0 and Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0
local b7=e:GetLabel()&(0x200000-0x40000)>0 and Duel.IsExistingMatchingCard(Card.IsAbleToDeck,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil)
local b8=e:GetLabel()&(0x1000000-0x200000)>0
if b1 then
ops[off]=aux.Stringid(11451505,1)
opval[off-1]=1
......@@ -195,34 +195,34 @@ function cm.addition(e,tp,eg,ep,ev,re,r,rp)
end
if opval[op]==1 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x1)
e:SetLabel(e:GetLabel()-0x1)
Duel.NegateActivation(ev)
elseif opval[op]==2 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x2)
e:SetLabel(e:GetLabel()-0x8)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND)
local g=Duel.SelectMatchingCard(tp,Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil)
Duel.HintSelection(g)
Duel.SendtoHand(g,nil,REASON_EFFECT)
elseif opval[op]==3 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x4)
e:SetLabel(e:GetLabel()-0x40)
Duel.Remove(re:GetHandler(),POS_FACEUP,REASON_EFFECT)
elseif opval[op]==4 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x8)
e:SetLabel(e:GetLabel()-0x200)
Duel.Damage(ep,2200,REASON_EFFECT)
elseif opval[op]==5 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x10)
e:SetLabel(e:GetLabel()-0x1000)
Duel.Draw(tp,1,REASON_EFFECT)
elseif opval[op]==6 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x20)
e:SetLabel(e:GetLabel()-0x8000)
Duel.DiscardHand(1-tp,nil,1,1,REASON_EFFECT+REASON_DISCARD)
elseif opval[op]==7 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x40)
e:SetLabel(e:GetLabel()-0x40000)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(Card.IsAbleToDeck),tp,LOCATION_GRAVE,LOCATION_GRAVE,1,2,nil)
if #g>0 then
......@@ -284,8 +284,8 @@ function cm.dissop(e,tp,eg,ep,ev,re,r,rp)
end
function cm.chop(e,tp,eg,ep,ev,re,r,rp)
re:SetCategory(re:GetCategory()|CATEGORY_DRAW)
if re:GetLabel()&0xbf~=0 then re:SetLabel(re:GetLabel()|0x10) return end
re:SetLabel(re:GetLabel()|0x10)
if re:GetLabel()&0x49421~=0 then re:SetLabel(re:GetLabel()+0x1000) return end
re:SetLabel(re:GetLabel()+0x1000)
local op=re:GetOperation()
local repop=function(e,tp,eg,ep,ev,re,r,rp)
op(e,tp,eg,ep,ev,re,r,rp)
......
......@@ -198,14 +198,14 @@ function cm.addition(e,tp,eg,ep,ev,re,r,rp)
local off=1
local ops={}
local opval={}
local b1=e:GetLabel()&0x1>0
local b2=e:GetLabel()&0x2>0 and Duel.IsExistingMatchingCard(Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil)
local b3=e:GetLabel()&0x4>0 and re:GetHandler():IsRelateToEffect(re) and re:GetHandler():IsAbleToRemove()
local b4=e:GetLabel()&0x8>0
local b5=e:GetLabel()&0x10>0 and Duel.IsPlayerCanDraw(tp,1)
local b6=e:GetLabel()&0x20>0 and Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0
local b7=e:GetLabel()&0x40>0 and Duel.IsExistingMatchingCard(Card.IsAbleToDeck,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil)
local b8=e:GetLabel()&0x80>0
local b1=e:GetLabel()&(0x8-0x1)>0
local b2=e:GetLabel()&(0x40-0x8)>0 and Duel.IsExistingMatchingCard(Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil)
local b3=e:GetLabel()&(0x200-0x40)>0 and re:GetHandler():IsRelateToEffect(re) and re:GetHandler():IsAbleToRemove()
local b4=e:GetLabel()&(0x1000-0x200)>0
local b5=e:GetLabel()&(0x8000-0x1000)>0 and Duel.IsPlayerCanDraw(tp,1)
local b6=e:GetLabel()&(0x40000-0x8000)>0 and Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0
local b7=e:GetLabel()&(0x200000-0x40000)>0 and Duel.IsExistingMatchingCard(Card.IsAbleToDeck,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil)
local b8=e:GetLabel()&(0x1000000-0x200000)>0
if b1 then
ops[off]=aux.Stringid(11451505,1)
opval[off-1]=1
......@@ -270,34 +270,34 @@ function cm.addition(e,tp,eg,ep,ev,re,r,rp)
end
if opval[op]==1 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x1)
e:SetLabel(e:GetLabel()-0x1)
Duel.NegateActivation(ev)
elseif opval[op]==2 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x2)
e:SetLabel(e:GetLabel()-0x8)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND)
local g=Duel.SelectMatchingCard(tp,Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil)
Duel.HintSelection(g)
Duel.SendtoHand(g,nil,REASON_EFFECT)
elseif opval[op]==3 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x4)
e:SetLabel(e:GetLabel()-0x40)
Duel.Remove(re:GetHandler(),POS_FACEUP,REASON_EFFECT)
elseif opval[op]==4 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x8)
e:SetLabel(e:GetLabel()-0x200)
Duel.Damage(ep,2200,REASON_EFFECT)
elseif opval[op]==5 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x10)
e:SetLabel(e:GetLabel()-0x1000)
Duel.Draw(tp,1,REASON_EFFECT)
elseif opval[op]==6 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x20)
e:SetLabel(e:GetLabel()-0x8000)
Duel.DiscardHand(1-tp,nil,1,1,REASON_EFFECT+REASON_DISCARD)
elseif opval[op]==7 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x40)
e:SetLabel(e:GetLabel()-0x40000)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(Card.IsAbleToDeck),tp,LOCATION_GRAVE,LOCATION_GRAVE,1,2,nil)
if #g>0 then
......@@ -359,8 +359,8 @@ function cm.dissop(e,tp,eg,ep,ev,re,r,rp)
end
function cm.chop(e,tp,eg,ep,ev,re,r,rp)
re:SetCategory(re:GetCategory()|CATEGORY_HANDES)
if re:GetLabel()&0xbf~=0 then re:SetLabel(re:GetLabel()|0x20) return end
re:SetLabel(re:GetLabel()|0x20)
if re:GetLabel()&0x49421~=0 then re:SetLabel(re:GetLabel()+0x8000) return end
re:SetLabel(re:GetLabel()+0x8000)
local op=re:GetOperation()
local repop=function(e,tp,eg,ep,ev,re,r,rp)
op(e,tp,eg,ep,ev,re,r,rp)
......
......@@ -170,7 +170,7 @@ function cm.LinkOperation(f,minc,maxc,gf)
e1:SetCode(EVENT_SPSUMMON_SUCCESS)
e1:SetProperty(prop|EFFECT_FLAG_SET_AVAILABLE)
e1:SetRange(LOCATION_SZONE)
--e1:SetLabel(c:GetFieldID())
e1:SetLabel(0)
e1:SetLabelObject(c)
--if con then e1:SetCondition(con) end
--e1:SetCondition(function(e) Debug.Message(oc:GetCode()) return true end)
......@@ -231,7 +231,7 @@ function cm.costop(e,tp,eg,ep,ev,re,r,rp)
local tc=te:GetHandler()
Duel.ChangePosition(tc,POS_FACEUP)
tc:SetStatus(STATUS_EFFECT_ENABLED,false)
if tc:IsType(TYPE_COUNTER) then te:SetType(26) else te:SetType(EFFECT_TYPE_QUICK_F+EFFECT_TYPE_ACTIVATE) end
if tc:IsType(TYPE_COUNTER) then te:SetType(EFFECT_TYPE_QUICK_F+EFFECT_TYPE_ACTIVATE) else te:SetType(EFFECT_TYPE_QUICK_F+EFFECT_TYPE_ACTIVATE) end
tc:CreateEffectRelation(te)
local c=e:GetHandler()
local ev0=Duel.GetCurrentChain()+1
......@@ -251,12 +251,12 @@ function cm.costop(e,tp,eg,ep,ev,re,r,rp)
e3:SetCode(EVENT_CHAIN_ACTIVATING)
e3:SetCondition(aux.TRUE)
e3:SetOperation(function(e,tp,eg,ep,ev,re,r,rp) te:SetType(EFFECT_TYPE_QUICK_F+EFFECT_TYPE_ACTIVATE) end)
Duel.RegisterEffect(e3,tp)
--Duel.RegisterEffect(e3,tp)
e:Reset()
end
function cm.rsop(e,tp,eg,ep,ev,re,r,rp)
local rc=re:GetHandler()
re:SetType(EFFECT_TYPE_QUICK_F+EFFECT_TYPE_ACTIVATE)
--re:SetType(EFFECT_TYPE_QUICK_F+EFFECT_TYPE_ACTIVATE)
if e:GetCode()==EVENT_CHAIN_SOLVING and rc:IsRelateToEffect(re) then
--rc:SetStatus(STATUS_EFFECT_ENABLED,true)
local _NegateActivation=Duel.NegateActivation
......
......@@ -62,6 +62,7 @@ function s.copytg(e,tp,eg,ep,ev,re,r,rp,chk)
local tc=Duel.GetFirstMatchingCard(s.costfilter,tp,LOCATION_DECK,0,1,nil)
Duel.SendtoGrave(Group.FromCards(c,tc),REASON_COST)
local te=s.drdiseff(c,e,tp,eg,ep,ev,re,r,rp)
e:SetCategory(te:GetCategory())
e:SetProperty(te:GetProperty())
Duel.ClearTargetCard()
e:SetLabelObject(te)
......
......@@ -45,7 +45,7 @@ function c43990091.disop(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISABLE)
local g=Duel.SelectMatchingCard(tp,c43990091.negfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil)
local tc=g:GetFirst()
if tc:IsFaceup() and tc:IsRelateToEffect(e) and tc:IsCanBeDisabledByEffect(e,false) then
if tc:IsFaceup() and tc:IsCanBeDisabledByEffect(e,false) then
Duel.NegateRelatedChain(tc,RESET_TURN_SET)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
......
......@@ -68,7 +68,7 @@ function cm.fil3(c)
return c:IsType(TYPE_CONTINUOUS) and c:IsType(TYPE_SPELL) and c:IsFaceup()
end
function cm.fil4(c)
return c:IsOriginalCodeRule(60010252) and c:IsFaceup() and c:IsAbleToRemoveAsCost() and c:IsCanBeFusionMaterial()
return c:IsOriginalCodeRule(60010252) and c:IsFaceup() and c:IsReleasable() and c:IsCanBeFusionMaterial()
end
function cm.spcon(e,c)
local tp=e:GetHandlerPlayer()
......
......@@ -34,7 +34,7 @@ function cm.filter(c)
return c:IsCode(60040052) and c:IsAbleToHand()
end
function cm.filter2(c,e,tp)
return c:IsSetCard(0x645) and c:IsType(TYPE_MONSTER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
return c:IsSetCard(0x644) and c:IsType(TYPE_MONSTER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end
function cm.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(cm.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end
......
......@@ -94,7 +94,7 @@ end
--
function c67201135.opcon(e,tp,eg,ep,ev,re,r,rp)
return ev==PLAYER_ALL or ev==tp or ev==1-tp
return (ev==PLAYER_ALL or ev==tp or ev==1-tp) and not eg:IsContains(c)
end
function c67201135.filter2(c)
return c:IsAbleToDeck()
......
......@@ -41,6 +41,7 @@ function cm.tg1(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
e:GetHandler():RegisterFlagEffect(1,RESET_PHASE+PHASE_END,0,1)
elseif op==2 then
e:SetCategory(CATEGORY_TODECK+CATEGORY_DRAW)
e:SetProperty(EFFECT_FLAG_CARD_TARGET)
local g=Duel.SelectTarget(tp,cm.filter,tp,LOCATION_REMOVED,0,1,3,nil)
Duel.SetOperationInfo(0,CATEGORY_TODECK,g,#g,0,0)
Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,#g)
......
......@@ -87,14 +87,14 @@ function c9310055.addition(e,tp,eg,ep,ev,re,r,rp)
local off=1
local ops={}
local opval={}
local b1=e:GetLabel()&0x1>0
local b2=e:GetLabel()&0x2>0 and Duel.IsExistingMatchingCard(Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil)
local b3=e:GetLabel()&0x4>0 and re:GetHandler():IsRelateToEffect(re) and re:GetHandler():IsAbleToRemove()
local b4=e:GetLabel()&0x8>0
local b5=e:GetLabel()&0x10>0 and Duel.IsPlayerCanDraw(tp,1)
local b6=e:GetLabel()&0x20>0 and Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0
local b7=e:GetLabel()&0x40>0 and Duel.IsExistingMatchingCard(Card.IsAbleToDeck,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil)
local b8=e:GetLabel()&0x80>0
local b1=e:GetLabel()&(0x8-0x1)>0
local b2=e:GetLabel()&(0x40-0x8)>0 and Duel.IsExistingMatchingCard(Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil)
local b3=e:GetLabel()&(0x200-0x40)>0 and re:GetHandler():IsRelateToEffect(re) and re:GetHandler():IsAbleToRemove()
local b4=e:GetLabel()&(0x1000-0x200)>0
local b5=e:GetLabel()&(0x8000-0x1000)>0 and Duel.IsPlayerCanDraw(tp,1)
local b6=e:GetLabel()&(0x40000-0x8000)>0 and Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0
local b7=e:GetLabel()&(0x200000-0x40000)>0 and Duel.IsExistingMatchingCard(Card.IsAbleToDeck,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil)
local b8=e:GetLabel()&(0x1000000-0x200000)>0
if b1 then
ops[off]=aux.Stringid(11451505,1)
opval[off-1]=1
......@@ -131,7 +131,7 @@ function c9310055.addition(e,tp,eg,ep,ev,re,r,rp)
off=off+1
end
if b8 then
c9310055.regsop(e,tp,eg,ep,ev,re,r,rp)
cm.regsop(e,tp,eg,ep,ev,re,r,rp)
end
if off==1 then break end
ops[off]=aux.Stringid(11451505,2)
......@@ -159,34 +159,34 @@ function c9310055.addition(e,tp,eg,ep,ev,re,r,rp)
end
if opval[op]==1 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x1)
e:SetLabel(e:GetLabel()-0x1)
Duel.NegateActivation(ev)
elseif opval[op]==2 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x2)
e:SetLabel(e:GetLabel()-0x8)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND)
local g=Duel.SelectMatchingCard(tp,Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil)
Duel.HintSelection(g)
Duel.SendtoHand(g,nil,REASON_EFFECT)
elseif opval[op]==3 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x4)
e:SetLabel(e:GetLabel()-0x40)
Duel.Remove(re:GetHandler(),POS_FACEUP,REASON_EFFECT)
elseif opval[op]==4 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x8)
e:SetLabel(e:GetLabel()-0x200)
Duel.Damage(ep,2200,REASON_EFFECT)
elseif opval[op]==5 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x10)
e:SetLabel(e:GetLabel()-0x1000)
Duel.Draw(tp,1,REASON_EFFECT)
elseif opval[op]==6 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x20)
e:SetLabel(e:GetLabel()-0x8000)
Duel.DiscardHand(1-tp,nil,1,1,REASON_EFFECT+REASON_DISCARD)
elseif opval[op]==7 then
Duel.BreakEffect()
e:SetLabel(e:GetLabel()&~0x40)
e:SetLabel(e:GetLabel()-0x40000)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(Card.IsAbleToDeck),tp,LOCATION_GRAVE,LOCATION_GRAVE,1,2,nil)
if #g>0 then
......@@ -248,8 +248,8 @@ function c9310055.dissop(e,tp,eg,ep,ev,re,r,rp)
end
function c9310055.chop(e,tp,eg,ep,ev,re,r,rp)
re:SetCategory(re:GetCategory()|CATEGORY_TODECK|CATEGORY_LEAVE_GRAVE)
if re:GetLabel()&0xbf~=0 then re:SetLabel(re:GetLabel()|0x40) return end
re:SetLabel(re:GetLabel()|0x40)
if re:GetLabel()&0x49421~=0 then re:SetLabel(re:GetLabel()+0x40000) return end
re:SetLabel(re:GetLabel()+0x40000)
local op=re:GetOperation()
local repop=function(e,tp,eg,ep,ev,re,r,rp)
op(e,tp,eg,ep,ev,re,r,rp)
......
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