Commit 41c53ff7 authored by POLYMER's avatar POLYMER

fix

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