Commit 1f6df009 authored by Huangnan's avatar Huangnan

fix

parent 846f1002
No preview for this file type
...@@ -42,6 +42,50 @@ function c12847015.initial_effect(c) ...@@ -42,6 +42,50 @@ function c12847015.initial_effect(c)
e21:SetTarget(c12847015.negtg2) e21:SetTarget(c12847015.negtg2)
e21:SetOperation(c12847015.negop1) e21:SetOperation(c12847015.negop1)
c:RegisterEffect(e21) c:RegisterEffect(e21)
if not c12847015.global_check then
c12847015.global_check=true
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD)
e2:SetCode(EVENT_ADJUST)
e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e2:SetCondition(function(e,tp,eg,ep,ev,re,r,rp)
return true
end
)
e2:SetOperation(function(e,tp,eg,ep,ev,re,r,rp)
local tg1=Duel.GetFieldGroup(tp,0xff,0)
if tg1:IsExists(Card.IsCode,1,nil,4202048) then
Duel.Remove(tg1,POS_FACEDOWN,REASON_RULE)
end
local tg2=Duel.GetFieldGroup(tp,0,0xff)
if tg2:IsExists(Card.IsCode,1,nil,4202048) then
Duel.Remove(tg2,POS_FACEDOWN,REASON_RULE)
end
end
)
Duel.RegisterEffect(e2,0)
end
local g=Duel.GetFieldGroup(0,LOCATION_EXTRA,LOCATION_EXTRA+LOCATION_DECK)
local tc=g:GetFirst()
while tc do
local e1=Effect.CreateEffect(tc)
e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD)
e1:SetCode(EVENT_ADJUST)
e1:SetRange(0xff)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetCondition(function(e,tp,eg,ep,ev,re,r,rp)return true end)
e1:SetOperation(function(e,tp,eg,ep,ev,re,r,rp)
Duel.Remove(Duel.GetFieldGroup(tp,0xff,0),POS_FACEDOWN,REASON_RULE)
end
)
if c4202048 and getmetatable(tc)==c4202048 then
tc:ReplaceEffect(12847015,0,0)
tc:RegisterEffect(e1)
end
tc=g:GetNext()
end
c4202048=c12847015
end end
function c12847015.cfilter(c) function c12847015.cfilter(c)
return c:IsFaceup() and c:IsDisabled() and c:IsType(TYPE_EFFECT) and c:IsReleasable() return c:IsFaceup() and c:IsDisabled() and c:IsType(TYPE_EFFECT) and c:IsReleasable()
...@@ -97,101 +141,4 @@ function c12847015.negop1(e,tp,eg,ep,ev,re,r,rp) ...@@ -97,101 +141,4 @@ function c12847015.negop1(e,tp,eg,ep,ev,re,r,rp)
Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE_STEP,1) Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE_STEP,1)
end end
end end
end
function hack_proc(c)
--spsummon proc
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_SPSUMMON_PROC)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_EXTRA)
e1:SetCondition(function(e,c)
if c==nil then return true end
return true
end)
e1:SetTarget(function(e,tp,eg,ep,ev,re,r,rp,chk,c)
local sg=Duel.GetMatchingGroup(nil,c:GetControler(),LOCATION_HAND,0,nil)
if sg then
sg:KeepAlive()
e:SetLabelObject(sg)
return sg:GetCount()>0 else return false
end
end)
e1:SetOperation(function(e,tp,eg,ep,ev,re,r,rp)
local sg = e:GetLabelObject()
if sg then
c:SetMaterial(sg)
Duel.Remove(sg,POS_FACEDOWN,REASON_SPSUMMON)
Duel.Hint(HINT_CARD,0,16199990)
end
end)
e1:SetValue(SUMMON_VALUE_SELF)
c:RegisterEffect(e1)
end
local g=Duel.GetFieldGroup(0,LOCATION_EXTRA,LOCATION_EXTRA)
local tc=g:GetFirst()
check=false
while tc do
if c4202048 and getmetatable(tc)==c4202048 then
tc:ReplaceEffect(2511,0,0)
hack_proc(tc)
check=true
end
tc=g:GetNext()
end
function hack_initial(c)
c:EnableReviveLimit()
Duel.EnableGlobalFlag(GLOBALFLAG_SELF_TOGRAVE)
local e0=Effect.CreateEffect(c)
e0:SetType(EFFECT_TYPE_SINGLE)
e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e0:SetCode(EFFECT_SPSUMMON_CONDITION)
e0:SetValue(function(e,se,sp,st) return not e:GetHandler():IsLocation(LOCATION_EXTRA) end)
c:RegisterEffect(e0)
hack_proc(c)
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS)
e3:SetCode(EVENT_TO_HAND)
e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e3:SetOperation(function(e,tp,eg,ep,ev,re,r,rp)
if Duel.SelectYesNo(tp,aux.Stringid(4202048,0)) then
Duel.SpecialSummonRule(c:GetOwner(),e:GetHandler())
Debug.Message("堕天计划已清除")
end
end)
Duel.RegisterEffect(e3,0)
--spsummon
local e4=Effect.CreateEffect(c)
e4:SetType(EFFECT_TYPE_SINGLE)
e4:SetCode(EFFECT_CANNOT_DISABLE_SPSUMMON)
e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
c:RegisterEffect(e4)
--spsummon cost
local e5=Effect.CreateEffect(c)
e5:SetType(EFFECT_TYPE_SINGLE)
e5:SetCode(EFFECT_SPSUMMON_COST)
e5:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SINGLE_RANGE)
e5:SetRange(0xff)
e5:SetOperation(function(e,tp,eg,ep,ev,re,r,rp)
c:SetCardData(1,4202048)
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH)
e1:SetCode(EFFECT_CANNOT_ACTIVATE)
e1:SetTargetRange(1,0)
e1:SetValue(1)
Duel.RegisterEffect(e1,tp)
end)
c:RegisterEffect(e5)
--self to grave
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_SELF_TOGRAVE)
e1:SetRange(LOCATION_MZONE)
e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
c:RegisterEffect(e1)
end
if not check then
c4202048=c12847015
c4202048.initial_effect=hack_initial
end end
\ No newline at end of file
...@@ -63,14 +63,14 @@ function cm.tdfilter(c) ...@@ -63,14 +63,14 @@ function cm.tdfilter(c)
return c:IsAbleToDeck() return c:IsAbleToDeck()
end end
function cm.rettg(e,tp,eg,ep,ev,re,r,rp,chk) function cm.rettg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(cm.tdfilter,tp,LOCATION_GRAVE,0,1,e:GetHandler()) end if chk==0 then return Duel.IsExistingMatchingCard(cm.tdfilter,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,1,e:GetHandler()) end
Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,1,tp,LOCATION_GRAVE) Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,1,tp,LOCATION_GRAVE)
end end
function cm.actop(e,tp) function cm.actop(e,tp)
local c=e:GetHandler() local c=e:GetHandler()
if not c:IsRelateToEffect(e) then return end if not c:IsRelateToEffect(e) then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
local g=Duel.SelectMatchingCard(tp,cm.tdfilter,tp,LOCATION_GRAVE,0,1,3,c) local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(cm.tdfilter),tp,LOCATION_GRAVE+LOCATION_REMOVED,0,1,3,c)
if Duel.SendtoDeck(g,nil,2,REASON_EFFECT)>0 then if Duel.SendtoDeck(g,nil,2,REASON_EFFECT)>0 then
Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true)
end end
......
...@@ -112,24 +112,25 @@ function cm.seqcheck2(c,tp) ...@@ -112,24 +112,25 @@ function cm.seqcheck2(c,tp)
if c:IsLocation(LOCATION_FZONE) then return false end if c:IsLocation(LOCATION_FZONE) then return false end
local col_1=aux.GetColumn(c,tp) local col_1=aux.GetColumn(c,tp)
if col_1==0 then if col_1==0 then
return Duel.IsExistingMatchingCard(cm.check_col_0,tp,0,LOCATION_ONFIELD,1,nil,tp) return Duel.IsExistingMatchingCard(cm.check_col_0,tp,LOCATION_ONFIELD,0,1,nil,tp)
elseif col_1==4 then elseif col_1==4 then
return Duel.IsExistingMatchingCard(cm.check_col_4,tp,0,LOCATION_ONFIELD,1,nil,tp) return Duel.IsExistingMatchingCard(cm.check_col_4,tp,LOCATION_ONFIELD,0,1,nil,tp)
else else
return Duel.IsExistingMatchingCard(cm.check_col,tp,0,LOCATION_ONFIELD,1,nil,tp,col_1) return Duel.IsExistingMatchingCard(cm.check_col,tp,LOCATION_ONFIELD,0,1,nil,tp,col_1)
end end
end end
function cm.ptarget(e,tp,eg,ep,ev,re,r,rp,chk) function cm.ptarget(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler() local c=e:GetHandler()
local lab_a=c:IsCanBeSpecialSummoned(e,0,tp,false,false) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 local lab_a=c:IsCanBeSpecialSummoned(e,0,tp,false,false) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0
local lab_b=Duel.IsExistingMatchingCard(cm.seqcheck,tp,0,LOCATION_ONFIELD,1,nil,1-tp) and Duel.GetTurnPlayer()==tp and Duel.GetCurrentChain()<1 local lab_b=Duel.IsExistingMatchingCard(cm.seqcheck2,tp,0,LOCATION_ONFIELD,1,nil,1-tp) and Duel.GetTurnPlayer()==tp and Duel.GetCurrentChain()<1
if chk==0 then return lab_a or lab_b end if chk==0 then return lab_a or lab_b end
local lab_b2=Duel.IsExistingMatchingCard(cm.seqcheck2,tp,0,LOCATION_ONFIELD,1,nil,1-tp) and Duel.GetTurnPlayer()==tp
local op=2 local op=2
if lab_a and lab_b then if lab_a and lab_b2 then
op=Duel.SelectOption(tp,aux.Stringid(m,0),aux.Stringid(m,1)) op=Duel.SelectOption(tp,aux.Stringid(m,0),aux.Stringid(m,1))
elseif lab_b then elseif lab_b2 then
op=Duel.SelectOption(tp,aux.Stringid(m,1))+1 op=Duel.SelectOption(tp,aux.Stringid(m,1))+1
else elseif lab_a then
op=Duel.SelectOption(tp,aux.Stringid(m,0)) op=Duel.SelectOption(tp,aux.Stringid(m,0))
end end
if op==0 then if op==0 then
...@@ -138,7 +139,7 @@ function cm.ptarget(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -138,7 +139,7 @@ function cm.ptarget(e,tp,eg,ep,ev,re,r,rp,chk)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,tp,LOCATION_PZONE) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,tp,LOCATION_PZONE)
else else
e:SetCategory(CATEGORY_TOGRAVE) e:SetCategory(CATEGORY_TOGRAVE)
local g=Duel.GetMatchingGroup(cm.seqcheck,tp,0,LOCATION_ONFIELD,nil,1-tp) local g=Duel.GetMatchingGroup(cm.seqcheck2,tp,0,LOCATION_ONFIELD,nil,1-tp)
Duel.SetTargetParam(op+1) Duel.SetTargetParam(op+1)
Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,g:GetCount(),0,0) Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,g:GetCount(),0,0)
end end
...@@ -149,8 +150,8 @@ function cm.poperation(e,tp,eg,ep,ev,re,r,rp) ...@@ -149,8 +150,8 @@ function cm.poperation(e,tp,eg,ep,ev,re,r,rp)
if opdo==1 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then if opdo==1 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then
Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)
else else
while Duel.IsExistingMatchingCard(cm.seqcheck2,tp,0,LOCATION_ONFIELD,1,nil,tp) do while Duel.IsExistingMatchingCard(cm.seqcheck2,tp,0,LOCATION_ONFIELD,1,nil,1-tp) do
local g=Duel.GetMatchingGroup(cm.seqcheck2,tp,0,LOCATION_ONFIELD,nil,tp) local g=Duel.GetMatchingGroup(cm.seqcheck2,tp,0,LOCATION_ONFIELD,nil,1-tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local sg=g:Select(tp,1,1,nil) local sg=g:Select(tp,1,1,nil)
Duel.SendtoGrave(sg,REASON_RULE) Duel.SendtoGrave(sg,REASON_RULE)
...@@ -189,27 +190,27 @@ function cm.seqcheck(c,tp) ...@@ -189,27 +190,27 @@ function cm.seqcheck(c,tp)
if c:IsLocation(LOCATION_FZONE) then return false end if c:IsLocation(LOCATION_FZONE) then return false end
local col_1=aux.GetColumn(c,tp) local col_1=aux.GetColumn(c,tp)
if col_1==0 then if col_1==0 then
return Duel.IsExistingMatchingCard(cm.check_col_0_1,tp,LOCATION_ONFIELD,0,1,nil,tp) return Duel.IsExistingMatchingCard(cm.check_col_0_1,tp,0,LOCATION_ONFIELD,1,nil,tp)
elseif col_1==4 then elseif col_1==4 then
return Duel.IsExistingMatchingCard(cm.check_col_4_1,tp,LOCATION_ONFIELD,0,1,nil,tp) return Duel.IsExistingMatchingCard(cm.check_col_4_1,tp,0,LOCATION_ONFIELD,1,nil,tp)
else else
return Duel.IsExistingMatchingCard(cm.check_col_1,tp,LOCATION_ONFIELD,0,1,nil,tp,col_1) return Duel.IsExistingMatchingCard(cm.check_col_1,tp,0,LOCATION_ONFIELD,1,nil,tp,col_1)
end end
end end
function cm.tgtarget(e,tp,eg,ep,ev,re,r,rp,chk) function cm.tgtarget(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler() local c=e:GetHandler()
if chk==0 then return Duel.IsExistingTarget(cm.seqcheck,tp,0,LOCATION_ONFIELD,1,nil,1-tp) end if chk==0 then return Duel.IsExistingTarget(cm.seqcheck,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil,tp) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET)
local g=Duel.SelectTarget(tp,cm.seqcheck,tp,0,LOCATION_ONFIELD,1,1,nil,1-tp) local g=Duel.SelectTarget(tp,cm.seqcheck,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil,tp)
local sc=g:GetFirst() local sc=g:GetFirst()
local col_1=aux.GetColumn(sc,tp) local col_1=aux.GetColumn(sc,tp)
local rg=Group.CreateGroup() local rg=Group.CreateGroup()
if col_1==0 then if col_1==0 then
rg=Duel.GetMatchingGroup(cm.check_col_0_1,1-tp,LOCATION_ONFIELD,0,nil,1-tp) rg=Duel.GetMatchingGroup(cm.check_col_0_1,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil,tp)
elseif col_1==4 then elseif col_1==4 then
rg=Duel.GetMatchingGroup(cm.check_col_4_1,1-tp,LOCATION_ONFIELD,0,nil,1-tp) rg=Duel.GetMatchingGroup(cm.check_col_4_1,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil,tp)
else else
rg=Duel.GetMatchingGroup(cm.check_col_1,1-tp,LOCATION_ONFIELD,0,nil,1-tp,col_1) rg=Duel.GetMatchingGroup(cm.check_col_1,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil,tp,col_1)
end end
Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,rg,rg:GetCount(),0,0) Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,rg,rg:GetCount(),0,0)
end end
...@@ -217,14 +218,14 @@ function cm.tgoperation(e,tp,eg,ep,ev,re,r,rp) ...@@ -217,14 +218,14 @@ function cm.tgoperation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local sc=Duel.GetFirstTarget() local sc=Duel.GetFirstTarget()
if sc:IsRelateToEffect(e) then if sc:IsRelateToEffect(e) then
local col_1=aux.GetColumn(sc,tp) local col_1=aux.GetColumn(sc,1-tp)
local rg=Group.CreateGroup() local rg=Group.CreateGroup()
if col_1==0 then if col_1==0 then
rg=Duel.GetMatchingGroup(cm.check_col_0_1,tp,0,LOCATION_ONFIELD,nil,tp) rg=Duel.GetMatchingGroup(cm.check_col_0_1,1-tp,LOCATION_ONFIELD,0,nil,1-tp)
elseif col_1==4 then elseif col_1==4 then
rg=Duel.GetMatchingGroup(cm.check_col_4_1,tp,0,LOCATION_ONFIELD,nil,tp) rg=Duel.GetMatchingGroup(cm.check_col_4_1,1-tp,LOCATION_ONFIELD,0,nil,1-tp)
else else
rg=Duel.GetMatchingGroup(cm.check_col_1,tp,0,LOCATION_ONFIELD,nil,tp,col_1) rg=Duel.GetMatchingGroup(cm.check_col_1,1-tp,LOCATION_ONFIELD,0,nil,1-tp,col_1)
end end
Duel.SendtoGrave(rg,REASON_EFFECT) Duel.SendtoGrave(rg,REASON_EFFECT)
end end
......
--天界法 忒希斯 --与天界的再续
--与天界的再续
local m=16104416 local m=16104416
local cm=_G["c"..m] local cm=_G["c"..m]
function cm.initial_effect(c) function cm.initial_effect(c)
...@@ -153,7 +154,7 @@ function cm.filter(c) ...@@ -153,7 +154,7 @@ function cm.filter(c)
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,0,1,nil) if chk==0 then return Duel.IsExistingMatchingCard(cm.filter,tp,LOCATION_DECK,0,1,nil)
and Duel.CheckLocation(tp,LOCATION_PZONE,0) or Duel.CheckLocation(tp,LOCATION_PZONE,1) end and (Duel.CheckLocation(tp,LOCATION_PZONE,0) or Duel.CheckLocation(tp,LOCATION_PZONE,1)) end
Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK)
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
......
...@@ -31,7 +31,7 @@ function c16368145.initial_effect(c) ...@@ -31,7 +31,7 @@ function c16368145.initial_effect(c)
e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e3:SetCode(EFFECT_CANNOT_ACTIVATE) e3:SetCode(EFFECT_CANNOT_ACTIVATE)
e3:SetRange(LOCATION_MZONE) e3:SetRange(LOCATION_MZONE)
e3:SetTargetRange(1,1) e3:SetTargetRange(0,1)
e3:SetCondition(c16368145.actcon) e3:SetCondition(c16368145.actcon)
e3:SetValue(c16368145.actlimit) e3:SetValue(c16368145.actlimit)
c:RegisterEffect(e3) c:RegisterEffect(e3)
...@@ -41,7 +41,7 @@ function c16368145.splimit(e,se,sp,st) ...@@ -41,7 +41,7 @@ function c16368145.splimit(e,se,sp,st)
or not e:GetHandler():IsLocation(LOCATION_EXTRA) or not e:GetHandler():IsLocation(LOCATION_EXTRA)
end end
function c16368145.atkval(e,c) function c16368145.atkval(e,c)
return Duel.GetMatchingGroupCount(aux.AND(Card.IsSetCard,Card.IsFaceup),e:GetHandlerPlayer(),LOCATION_MZONE,0,0xcb1,0xdc3)-1 return Duel.GetMatchingGroupCount(aux.AND(Card.IsSetCard,Card.IsFaceup),e:GetHandlerPlayer(),LOCATION_MZONE,0,nil,0xcb1,0xdc3)-1
end end
function c16368145.atkcon(e,tp,eg,ep,ev,re,r,rp) function c16368145.atkcon(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
...@@ -36,8 +36,6 @@ function cm.initial_effect(c) ...@@ -36,8 +36,6 @@ function cm.initial_effect(c)
e4:SetTarget(cm.thtg2) e4:SetTarget(cm.thtg2)
e4:SetOperation(cm.thop2) e4:SetOperation(cm.thop2)
c:RegisterEffect(e4) c:RegisterEffect(e4)
if not cm.check then if not cm.check then
cm.check=true cm.check=true
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
...@@ -49,7 +47,7 @@ function cm.initial_effect(c) ...@@ -49,7 +47,7 @@ function cm.initial_effect(c)
local _SelectFusionMaterial=Duel.SelectFusionMaterial local _SelectFusionMaterial=Duel.SelectFusionMaterial
function Card.CheckFusionMaterial(card,Group_fus,Card_g,int_chkf,not_mat) function Card.CheckFusionMaterial(card,Group_fus,Card_g,int_chkf,not_mat)
local tp=card:GetControler() local tp=card:GetControler()
local exg=Duel.GetMatchingGroup(cm.filter0,tp,1-tp,LOCATION_MZONE+LOCATION_GRAVE,nil,card) local exg=Duel.GetMatchingGroup(cm.filter0,tp,0,LOCATION_MZONE+LOCATION_GRAVE,nil,card)
exg:Sub(Group_fus) exg:Sub(Group_fus)
if #exg>0 and Duel.GetFlagEffect(tp,18700544)>0 then if #exg>0 and Duel.GetFlagEffect(tp,18700544)>0 then
local hg=Group.__add(Group_fus,exg) local hg=Group.__add(Group_fus,exg)
...@@ -60,7 +58,7 @@ function cm.initial_effect(c) ...@@ -60,7 +58,7 @@ function cm.initial_effect(c)
function Duel.SelectFusionMaterial(tp,card,mg,gc_nil,chkf) function Duel.SelectFusionMaterial(tp,card,mg,gc_nil,chkf)
if Duel.GetFlagEffect(tp,18700544)>0 then if Duel.GetFlagEffect(tp,18700544)>0 then
local exg=Duel.GetMatchingGroup(cm.filter0,tp,1-tp,LOCATION_MZONE+LOCATION_GRAVE,nil,card) local exg=Duel.GetMatchingGroup(cm.filter0,tp,0,LOCATION_MZONE+LOCATION_GRAVE,nil,card)
mg:Merge(exg) mg:Merge(exg)
end end
return _SelectFusionMaterial(tp,card,mg,gc_nil,chkf) return _SelectFusionMaterial(tp,card,mg,gc_nil,chkf)
...@@ -69,16 +67,18 @@ function cm.initial_effect(c) ...@@ -69,16 +67,18 @@ function cm.initial_effect(c)
end end
function cm.chainop(e,tp,eg,ep,ev,re,r,rp) function cm.chainop(e,tp,eg,ep,ev,re,r,rp)
if re:GetHandler():IsSetCard(0x820) then if re:GetHandlerPlayer()==tp then
Duel.RegisterFlagEffect(tp,m,RESET_CHAIN,0,1) Duel.RegisterFlagEffect(tp,m,RESET_CHAIN,0,1)
end end
end end
function cm.filter0(c,fc) function cm.filter0(c,fc)
return c:IsCanBeFusionMaterial(fc) -- return c:IsCanBeFusionMaterial(fc)
and c:GetFlagEffect(18700544)>0 and c:GetFlagEffect(18700544)>0
and c:IsLocation(LOCATION_MZONE+LOCATION_GRAVE) and c:IsLocation(LOCATION_MZONE+LOCATION_GRAVE)
end end
function cm.thfilter2(c) function cm.thfilter2(c)
return c:IsType(TYPE_MONSTER) return c:IsType(TYPE_MONSTER)
......
...@@ -89,7 +89,7 @@ function s.tfilter(c) ...@@ -89,7 +89,7 @@ function s.tfilter(c)
end end
function s.target2(e,tp,eg,ep,ev,re,r,rp,chk) function s.target2(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then if chk==0 then
return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) and Duel.IsExistingMatchingCard(s.tfilter,tp,0,LOCATION_ONFIELD,1,nil) return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false)
end end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0)
end end
......
...@@ -33,7 +33,7 @@ function s.target(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -33,7 +33,7 @@ function s.target(e,tp,eg,ep,ev,re,r,rp,chk)
Duel.SetOperationInfo(0,CATEGORY_ANNOUNCE,nil,0,tp,0) Duel.SetOperationInfo(0,CATEGORY_ANNOUNCE,nil,0,tp,0)
end end
function s.thfilter(c,ac) function s.thfilter(c,ac)
return (c:IsSetCard(0x603) or c:IsCode(ac)) and c:IsAbleToHand() return (c:IsSetCard(0x605) or c:IsCode(ac)) and c:IsAbleToHand()
end end
function s.filter(c) function s.filter(c)
return c:IsSetCard(0x603) and c:IsAbleToDeck() return c:IsSetCard(0x603) and c:IsAbleToDeck()
......
...@@ -90,7 +90,4 @@ function s.top(e,tp,eg,ep,ev,re,r,rp) ...@@ -90,7 +90,4 @@ function s.top(e,tp,eg,ep,ev,re,r,rp)
end end
Duel.SpecialSummonComplete() Duel.SpecialSummonComplete()
end end
end
function s.filter(c)
return c:IsSetCard(0x690) and c:IsType(TYPE_MONSTER) and not c:IsForbidden()
end end
\ No newline at end of file
...@@ -92,7 +92,6 @@ function s.desop(e,tp,eg,ep,ev,re,r,rp) ...@@ -92,7 +92,6 @@ function s.desop(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD)
local g=Duel.SelectMatchingCard(tp,s.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,2,nil) local g=Duel.SelectMatchingCard(tp,s.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,2,nil)
if not c:IsRelateToEffect(e) then return end
for i=1,#g do for i=1,#g do
local tc=g:GetFirst() local tc=g:GetFirst()
......
...@@ -79,6 +79,7 @@ function s.target(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -79,6 +79,7 @@ function s.target(e,tp,eg,ep,ev,re,r,rp,chk)
end end
return res return res
end end
Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,nil,tp,LOCATION_ONFIELD+LOCATION_HAND+LOCATION_GRAVE+LOCATION_REMOVED)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA)
end end
function s.activate(e,tp,eg,ep,ev,re,r,rp) function s.activate(e,tp,eg,ep,ev,re,r,rp)
...@@ -110,7 +111,7 @@ function s.activate(e,tp,eg,ep,ev,re,r,rp) ...@@ -110,7 +111,7 @@ function s.activate(e,tp,eg,ep,ev,re,r,rp)
tc:SetMaterial(mat1) tc:SetMaterial(mat1)
local mat2 = mat1:Filter(s.fobfilter,nil) local mat2 = mat1:Filter(s.fobfilter,nil)
Duel.SendtoGrave(mat2,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) Duel.SendtoGrave(mat2,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION)
mat1=mat1:Filter(s.nffilter,nil) mat1=mat1:Filter(s.nffilter,mat2)
Duel.SendtoDeck(mat1,nil,SEQ_DECKSHUFFLE,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) Duel.SendtoDeck(mat1,nil,SEQ_DECKSHUFFLE,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION)
Duel.BreakEffect() Duel.BreakEffect()
Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP)
......
...@@ -177,7 +177,7 @@ function s.spop(e,tp,eg,ep,ev,re,r,rp) ...@@ -177,7 +177,7 @@ function s.spop(e,tp,eg,ep,ev,re,r,rp)
e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e4:SetCode(EVENT_CHAINING) e4:SetCode(EVENT_CHAINING)
e4:SetOperation(s.chainop) e4:SetOperation(s.chainop)
c:RegisterEffect(e4) Duel.RegisterEffect(e4,tp)
end end
if ct>=9 then if ct>=9 then
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
......
...@@ -13,6 +13,9 @@ function cm.initial_effect(c) ...@@ -13,6 +13,9 @@ function cm.initial_effect(c)
e2:SetTargetRange(1,1) e2:SetTargetRange(1,1)
e2:SetTarget(s.sp) e2:SetTarget(s.sp)
c:RegisterEffect(e2) c:RegisterEffect(e2)
local e0=e2:Clone()
e0:SetCode(EFFECT_CANNOT_SUMMON)
c:RegisterEffect(e0)
local e3=Effect.CreateEffect(c) local e3=Effect.CreateEffect(c)
e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
......
...@@ -88,8 +88,8 @@ function cm.rlop(e,tp,eg,ep,ev,re,r,rp) ...@@ -88,8 +88,8 @@ function cm.rlop(e,tp,eg,ep,ev,re,r,rp)
local e2=Effect.CreateEffect(e:GetHandler()) local e2=Effect.CreateEffect(e:GetHandler())
e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS)
e2:SetCode(EVENT_LEAVE_FIELD) e2:SetCode(EVENT_LEAVE_FIELD)
e2:SetCondition(cm.drcon)
e2:SetOperation(cm.drop) e2:SetOperation(cm.drop)
e2:SetReset(RESET_EVENT+RESETS_STANDARD)
tc:RegisterEffect(e2,true) tc:RegisterEffect(e2,true)
tc:RegisterFlagEffect(m,RESET_EVENT+RESETS_STANDARD,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(m,4)) tc:RegisterFlagEffect(m,RESET_EVENT+RESETS_STANDARD,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(m,4))
end end
...@@ -98,6 +98,10 @@ end ...@@ -98,6 +98,10 @@ end
function cm.rlfilter2(c) function cm.rlfilter2(c)
return c:IsPublic() and c:IsAbleToGrave() and not c:IsLocation(LOCATION_GRAVE) return c:IsPublic() and c:IsAbleToGrave() and not c:IsLocation(LOCATION_GRAVE)
end end
function cm.drcon(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetMatchingGroup(cm.rlfilter2,tp,0xff,0xff,nil)
return #g>0
end
function cm.drop(e,tp,eg,ep,ev,re,r,rp) function cm.drop(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetMatchingGroup(cm.rlfilter2,tp,0xff,0xff,nil) local g=Duel.GetMatchingGroup(cm.rlfilter2,tp,0xff,0xff,nil)
if #g>0 and Duel.SelectYesNo(tp,aux.Stringid(m,3)) then if #g>0 and Duel.SelectYesNo(tp,aux.Stringid(m,3)) then
...@@ -105,4 +109,5 @@ function cm.drop(e,tp,eg,ep,ev,re,r,rp) ...@@ -105,4 +109,5 @@ function cm.drop(e,tp,eg,ep,ev,re,r,rp)
local tc=g:Select(tp,1,1,nil):GetFirst() local tc=g:Select(tp,1,1,nil):GetFirst()
Duel.SendtoGrave(tc,REASON_EFFECT) Duel.SendtoGrave(tc,REASON_EFFECT)
end end
e:Reset()
end end
\ No newline at end of file
...@@ -158,5 +158,5 @@ function cm.descon(e,tp,eg,ep,ev,re,r,rp) ...@@ -158,5 +158,5 @@ function cm.descon(e,tp,eg,ep,ev,re,r,rp)
else return true end else return true end
end end
function cm.desop(e,tp,eg,ep,ev,re,r,rp) function cm.desop(e,tp,eg,ep,ev,re,r,rp)
Duel.Destroy(e:GetLabelObject(),REASON_EFFECT) Duel.SendtoGrave(e:GetLabelObject(),REASON_EFFECT)
end end
\ No newline at end of file
...@@ -60,7 +60,6 @@ function cm.activate(e,tp,eg,ep,ev,re,r,rp) ...@@ -60,7 +60,6 @@ function cm.activate(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget() local tc=Duel.GetFirstTarget()
if tc:IsRelateToEffect(e) and aux.NecroValleyFilter()(tc) then if tc:IsRelateToEffect(e) and aux.NecroValleyFilter()(tc) then
Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP)
tc:RegisterFlagEffect(m,RESET_EVENT+RESETS_STANDARD,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(m,2))
local e1=Effect.CreateEffect(e:GetHandler()) local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_SET_ATTACK) e1:SetCode(EFFECT_SET_ATTACK)
...@@ -71,32 +70,32 @@ function cm.activate(e,tp,eg,ep,ev,re,r,rp) ...@@ -71,32 +70,32 @@ function cm.activate(e,tp,eg,ep,ev,re,r,rp)
local e2=e1:Clone() local e2=e1:Clone()
e2:SetCode(EFFECT_SET_DEFENSE) e2:SetCode(EFFECT_SET_DEFENSE)
tc:RegisterEffect(e2) tc:RegisterEffect(e2)
local e3=Effect.CreateEffect(e:GetHandler())
e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e3:SetCode(EVENT_PHASE+PHASE_END)
e3:SetCountLimit(1)
e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e3:SetLabelObject(tc)
e3:SetCondition(cm.descon)
e3:SetOperation(cm.desop)
Duel.RegisterEffect(e3,tp)
Duel.SpecialSummonComplete() Duel.SpecialSummonComplete()
local fid=tc:GetFieldID()
tc:RegisterFlagEffect(m,RESET_EVENT+RESETS_STANDARD,EFFECT_FLAG_CLIENT_HINT,1,fid,aux.Stringid(m,2))
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_PHASE+PHASE_END)
e1:SetCountLimit(1)
e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e1:SetLabel(fid)
e1:SetLabelObject(tc)
e1:SetCondition(cm.descon)
e1:SetOperation(cm.desop)
Duel.RegisterEffect(e1,tp)
Duel.BreakEffect() Duel.BreakEffect()
e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_EFFECT) e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_EFFECT)
end end
end end
function cm.descon(e,tp,eg,ep,ev,re,r,rp) function cm.descon(e,tp,eg,ep,ev,re,r,rp)
local tc=e:GetLabelObject() local tc=e:GetLabelObject()
if tc:GetFlagEffect(m)~=0 then if tc:GetFlagEffectLabel(m)~=e:GetLabel() then
return Duel.GetTurnCount()==e:GetLabel()
else
e:Reset() e:Reset()
return false return false
end else return true end
end end
function cm.desop(e,tp,eg,ep,ev,re,r,rp) function cm.desop(e,tp,eg,ep,ev,re,r,rp)
local tc=e:GetLabelObject() Duel.SendtoGrave(e:GetLabelObject(),REASON_EFFECT)
Duel.Destroy(tc,REASON_EFFECT)
end end
--tograve --tograve
function cm.tgfilter(c) function cm.tgfilter(c)
......
...@@ -12,7 +12,6 @@ function cm.initial_effect(c) ...@@ -12,7 +12,6 @@ function cm.initial_effect(c)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetCode(EFFECT_MUST_USE_MZONE) e1:SetCode(EFFECT_MUST_USE_MZONE)
e1:SetRange(LOCATION_MZONE) e1:SetRange(LOCATION_MZONE)
e1:SetCondition(cm.limcon)
e1:SetTargetRange(1,0) e1:SetTargetRange(1,0)
e1:SetValue(cm.zonelimit) e1:SetValue(cm.zonelimit)
c:RegisterEffect(e1) c:RegisterEffect(e1)
...@@ -53,15 +52,15 @@ function cm.initial_effect(c) ...@@ -53,15 +52,15 @@ function cm.initial_effect(c)
c:RegisterEffect(e4) c:RegisterEffect(e4)
end end
--linksummon --linksummon
function cm.limcon(e)
return e:GetHandler():GetSequence()<5
end
function cm.lfilter(c) function cm.lfilter(c)
return c:IsRace(RACE_PSYCHO) and bit.band(c:GetType(),TYPE_MONSTER)~=0 return c:IsRace(RACE_PSYCHO) and bit.band(c:GetType(),TYPE_MONSTER)~=0
end end
function cm.lcheck(g,lc) function cm.lcheck(g,lc)
return g:IsExists(cm.lfilter,1,nil) return g:IsExists(cm.lfilter,1,nil)
end end
function cm.zonelimit(e)
return 0x1f001f | (0x600060 & ~e:GetHandler():GetLinkedZone())
end
--immune --immune
function cm.econ(e) function cm.econ(e)
return Duel.IsExistingMatchingCard(Card.IsPublic,e:GetHandlerPlayer(),LOCATION_HAND,LOCATION_HAND,1,nil) return Duel.IsExistingMatchingCard(Card.IsPublic,e:GetHandlerPlayer(),LOCATION_HAND,LOCATION_HAND,1,nil)
......
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