Commit dd7e0afd authored by POLYMER's avatar POLYMER

update 250303 wd

parent d2aec25d
...@@ -6298,6 +6298,17 @@ ...@@ -6298,6 +6298,17 @@
16348099 0 16348099 0
16349061 0 16349061 0
53797091 0 53797091 0
20000450 0
20000451 0
20000452 0
20000453 0
20000454 0
20000455 0
20000456 0
20000457 0
20000458 0
20000459 0
20000460 0
#limit #limit
33403513 1 33403513 1
82204250 0 82204250 0
......
No preview for this file type
No preview for this file type
expansions/pics/20000450.jpg

63.5 KB | W: | H:

expansions/pics/20000450.jpg

63.5 KB | W: | H:

expansions/pics/20000450.jpg
expansions/pics/20000450.jpg
expansions/pics/20000450.jpg
expansions/pics/20000450.jpg
  • 2-up
  • Swipe
  • Onion skin
expansions/pics/20000451.jpg

59.3 KB | W: | H:

expansions/pics/20000451.jpg

59.3 KB | W: | H:

expansions/pics/20000451.jpg
expansions/pics/20000451.jpg
expansions/pics/20000451.jpg
expansions/pics/20000451.jpg
  • 2-up
  • Swipe
  • Onion skin
expansions/pics/20000452.jpg

60.7 KB | W: | H:

expansions/pics/20000452.jpg

60.7 KB | W: | H:

expansions/pics/20000452.jpg
expansions/pics/20000452.jpg
expansions/pics/20000452.jpg
expansions/pics/20000452.jpg
  • 2-up
  • Swipe
  • Onion skin
expansions/pics/20000453.jpg

64 KB | W: | H:

expansions/pics/20000453.jpg

64 KB | W: | H:

expansions/pics/20000453.jpg
expansions/pics/20000453.jpg
expansions/pics/20000453.jpg
expansions/pics/20000453.jpg
  • 2-up
  • Swipe
  • Onion skin
expansions/pics/20000454.jpg

56.8 KB | W: | H:

expansions/pics/20000454.jpg

56.8 KB | W: | H:

expansions/pics/20000454.jpg
expansions/pics/20000454.jpg
expansions/pics/20000454.jpg
expansions/pics/20000454.jpg
  • 2-up
  • Swipe
  • Onion skin
expansions/pics/20000455.jpg

61.7 KB | W: | H:

expansions/pics/20000455.jpg

61.7 KB | W: | H:

expansions/pics/20000455.jpg
expansions/pics/20000455.jpg
expansions/pics/20000455.jpg
expansions/pics/20000455.jpg
  • 2-up
  • Swipe
  • Onion skin
expansions/pics/20000456.jpg

56.9 KB | W: | H:

expansions/pics/20000456.jpg

56.9 KB | W: | H:

expansions/pics/20000456.jpg
expansions/pics/20000456.jpg
expansions/pics/20000456.jpg
expansions/pics/20000456.jpg
  • 2-up
  • Swipe
  • Onion skin
expansions/pics/20000457.jpg

65.2 KB | W: | H:

expansions/pics/20000457.jpg

65.2 KB | W: | H:

expansions/pics/20000457.jpg
expansions/pics/20000457.jpg
expansions/pics/20000457.jpg
expansions/pics/20000457.jpg
  • 2-up
  • Swipe
  • Onion skin
expansions/pics/20000458.jpg

67 KB | W: | H:

expansions/pics/20000458.jpg

67 KB | W: | H:

expansions/pics/20000458.jpg
expansions/pics/20000458.jpg
expansions/pics/20000458.jpg
expansions/pics/20000458.jpg
  • 2-up
  • Swipe
  • Onion skin
expansions/pics/20000459.jpg

63 KB | W: | H:

expansions/pics/20000459.jpg

63.1 KB | W: | H:

expansions/pics/20000459.jpg
expansions/pics/20000459.jpg
expansions/pics/20000459.jpg
expansions/pics/20000459.jpg
  • 2-up
  • Swipe
  • Onion skin
...@@ -67,7 +67,7 @@ function c118426889.cost2(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -67,7 +67,7 @@ function c118426889.cost2(e,tp,eg,ep,ev,re,r,rp,chk)
Duel.ConfirmCards(1-tp,e:GetHandler()) Duel.ConfirmCards(1-tp,e:GetHandler())
end end
function c118426889.filter2(c,tp,sc) function c118426889.filter2(c,tp,sc)
return c:IsSetCard(0x97) and (c:IsControler(tp) or c:IsFaceup()) and Duel.IsExistingMatchingCard(c118426889.filter4,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil,tp,c,sc) return c:IsSetCard(0x97) and (c:IsControler(tp) or c:IsFaceup()) and Duel.IsExistingMatchingCard(c118426889.filter4,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,c,tp,c,sc)
end end
function c118426889.filter4(c,tp,mc,sc) function c118426889.filter4(c,tp,mc,sc)
return Duel.GetLocationCountFromEx(tp,tp,Group.FromCards(c,mc),sc)>0 return Duel.GetLocationCountFromEx(tp,tp,Group.FromCards(c,mc),sc)>0
......
--禁征龙-缄龙 --禁征龙-缄龙
local s,id,o=GetID() local s,id,o=GetID()
function s.initial_effect(c) function s.initial_effect(c)
local e0=Effect.CreateEffect(c) local e4=Effect.CreateEffect(c)
e0:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e0:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e4:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e0:SetCode(EVENT_ADJUST) e4:SetCode(EVENT_ADJUST)
e0:SetRange(0xff) e4:SetRange(0xff)
e0:SetOperation(s.adjustop) e4:SetOperation(s.adjustop)
c:RegisterEffect(e0) c:RegisterEffect(e4)
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(id,0)) e1:SetDescription(aux.Stringid(id,0))
e1:SetType(EFFECT_TYPE_IGNITION) e1:SetType(EFFECT_TYPE_IGNITION)
......
dofile("expansions/script/c20099997.lua") dofile("expansions/script/c20099997.lua")
if fuef then return end if fuef then return end
fuef = { DebugMode = false } --2024/10/14 fuef = { DebugMode = false } --2024/2/27
fuef.__index = fuef fuef.__index = fuef
---------------------------------------------------------------- Standard Register ---------------------------------------------------------------- Standard Register
-- no cod -- no cod
fuef.I = function(_owner, _handler, _ignore) return fuef:Creat("I", nil, _owner, _handler, _ignore) end fuef.I = function(_owner, _handler, _ignore) return fuef:Creat("I", nil, _owner, _handler, _ignore) end
...@@ -17,6 +17,48 @@ for i,str in ipairs({"S,F,E,S+C,F+C,E+C,F+TO,F+TF,S+TO,S+TF,X", "A,QO,QF"}) do ...@@ -17,6 +17,48 @@ for i,str in ipairs({"S,F,E,S+C,F+C,E+C,F+TO,F+TF,S+TO,S+TF,X", "A,QO,QF"}) do
end end
end end
end end
---------------------------------------------------------------- procedure Register (just Noc
function fuef.Proc_XYZ(cf, gf, min, max, ex_loc)
min, max = min or 1, max or 99
return fuef.F(EFFECT_SPSUMMON_PROC):DES("XYZ"):PRO("OE"):RAN("E"):Func("XYZ,PX_con(%1,%2,%3,%4,%5),PX_tg(%1,%2,%3,%4,%5),XyzLevelFreeOperation()",cf,gf,min,max,ex_loc)
end
function fuef.PX_g_goal(g, tp, xyzc, gf)
return (not gf or gf(g, tp, xyzc)) and Duel.GetLocationCountFromEx(tp, tp, g, xyzc) > 0
end
function fuef.PX_con(cf, gf, minc, maxc, ex_loc)
return function(e, c, og, min, max)
if c == nil then return true end
if c:IsType(TYPE_PENDULUM) and c:IsFaceup() then return false end
local tp, minc, maxc = c:GetControler(), math.max(minc, min or minc), math.min(maxc, max or maxc)
if maxc < minc then return false end
local mg = fugf.Filter(og or fugf.Get(tp, "M"), "XyzLevelFreeFilter", {c, cf})
if ex_loc then mg = mg + fugf.GetFilter(tp, ex_loc, "XyzLevelFreeFilter", {c, cf}) end
local sg = Duel.GetMustMaterial(tp,EFFECT_MUST_BE_XMATERIAL)
if #mg > #(mg + sg) then return false end
Duel.SetSelectedCard(sg)
Auxiliary.GCheckAdditional = Auxiliary.TuneMagicianCheckAdditionalX(EFFECT_TUNE_MAGICIAN_X)
local res = mg:CheckSubGroup(fuef.PX_g_goal, minc, maxc, tp, c, gf)
Auxiliary.GCheckAdditional = nil
return res
end
end
function fuef.PX_tg(cf, gf, minc, maxc, ex_loc)
return function(e, tp, eg, ep, ev, re, r, rp, chk, c, og, min, max)
if og and not min then return true end
minc, maxc = math.max(minc, min or minc), math.min(maxc, max or maxc)
local mg = fugf.Filter(og or fugf.Get(tp,"M"), "XyzLevelFreeFilter", {c, cf})
if ex_loc then mg = mg + fugf.GetFilter(tp, ex_loc, "XyzLevelFreeFilter", {c, cf}) end
Duel.SetSelectedCard(Duel.GetMustMaterial(tp,EFFECT_MUST_BE_XMATERIAL))
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL)
Auxiliary.GCheckAdditional = Auxiliary.TuneMagicianCheckAdditionalX(EFFECT_TUNE_MAGICIAN_X)
mg = mg:SelectSubGroup(tp, fuef.PX_g_goal, Duel.IsSummonCancelable(), minc, maxc, tp, c, gf)
Auxiliary.GCheckAdditional = nil
if not mg or #mg == 0 then return false end
mg:KeepAlive()
e:SetLabelObject(mg)
return true
end
end
---------------------------------------------------------------- fuef() ---------------------------------------------------------------- fuef()
function fuef:__call(_cod, _handler, _ignore) function fuef:__call(_cod, _handler, _ignore)
-- _cod is owner (Creat and Register Noc -- _cod is owner (Creat and Register Noc
...@@ -60,7 +102,8 @@ function fuef:CreatNoc(_owner, _handler, _ignore) ...@@ -60,7 +102,8 @@ function fuef:CreatNoc(_owner, _handler, _ignore)
while ori.pre do while ori.pre do
ori = ori.pre ori = ori.pre
end end
repeat repeat
if type(ori.typ) == "table" then ori.typ = ori.typ[1] end
self = fuef:Creat(ori.typ, ori.cod, _owner, _handler, _ignore) self = fuef:Creat(ori.typ, ori.cod, _owner, _handler, _ignore)
for _,_key in ipairs(fusf.CutString("des,cat,pro,ran,tran,ctl,val,con,cos,tg,op,res,lab,obj", ",", "CreatNoc")) do for _,_key in ipairs(fusf.CutString("des,cat,pro,ran,tran,ctl,val,con,cos,tg,op,res,lab,obj", ",", "CreatNoc")) do
if ori[_key] then fuef[_key:upper()](self, table.unpack(ori[_key])) end if ori[_key] then fuef[_key:upper()](self, table.unpack(ori[_key])) end
...@@ -75,7 +118,7 @@ function fuef:Reg(_handler, _ignore) ...@@ -75,7 +118,7 @@ function fuef:Reg(_handler, _ignore)
local handler = self.handler or self.e:GetOwner() local handler = self.handler or self.e:GetOwner()
-- is force Register (use in Card.RegisterEffect -- is force Register (use in Card.RegisterEffect
local ignore = _ignore local ignore = _ignore
if _handler then if _handler then
if _handler == true then -- handler equal owner and ignore == true if _handler == true then -- handler equal owner and ignore == true
ignore = true ignore = true
elseif _handler == false then -- not Reg (use in FG elseif _handler == false then -- not Reg (use in FG
...@@ -144,7 +187,7 @@ function fuef:Reload(_from) ...@@ -144,7 +187,7 @@ function fuef:Reload(_from)
self.e:Reset() self.e:Reset()
self.e = Effect.CreateEffect(_owner) self.e = Effect.CreateEffect(_owner)
-- Reset if handler is group -- Reset if handler is group
if self.gclo then if self.gclo then
for _, gcloe in ipairs(self.gclo) do for _, gcloe in ipairs(self.gclo) do
gcloe:Reset() gcloe:Reset()
end end
...@@ -154,13 +197,13 @@ function fuef:Reload(_from) ...@@ -154,13 +197,13 @@ function fuef:Reload(_from)
end end
function fuef:IsNil(from, ...) function fuef:IsNil(from, ...)
local res = fusf.IsNil(...) local res = fusf.IsNil(...)
if res then self:Debug("... IsNil <- ".._from) end if res then self:Debug("... IsNil <- "..from) end
return res return res
end end
function fuef:PreChk(from, ...) function fuef:PreChk(from, ...)
if not self.e then --is Noc if not self.e then --is Noc
self[from:lower()] = {...} self[from:lower()] = {...}
return false return false
end end
return not self:IsNil("PreChk <- "..from, ...) return not self:IsNil("PreChk <- "..from, ...)
end end
...@@ -180,7 +223,7 @@ function fuef:Cons_Model(_key, _val) ...@@ -180,7 +223,7 @@ function fuef:Cons_Model(_key, _val)
local _keytype = _key == "typ" and "etyp" or _key local _keytype = _key == "typ" and "etyp" or _key
local val, des = fusf.Get_Constant(_keytype, _val) local val, des = fusf.Get_Constant(_keytype, _val)
self[_key] = val self[_key] = val
if _key == "cod" and not self.des and fucs.des[des] then self.des = fucs.des[des] end if _key == "cat" and des then self.des = self.des or des end
return self:Reload("Cons_Model <- ".._key:upper()) return self:Reload("Cons_Model <- ".._key:upper())
end end
function fuef:TYP(_val) function fuef:TYP(_val)
...@@ -210,8 +253,9 @@ end ...@@ -210,8 +253,9 @@ end
function fuef:CTL(_count, _code, _pro) --count, code, pro function fuef:CTL(_count, _code, _pro) --count, code, pro
if not self:PreChk("CTL", _count, _code, _pro) then return self end if not self:PreChk("CTL", _count, _code, _pro) then return self end
if type(_count) == "string" or _count > 99 then -- ("n+D") or (m) -> (1, "n+D") or (1, m) if type(_count) == "string" or _count > 99 then -- ("n+D") or (m) -> (1, "n+D") or (1, m)
_count, _code, _pro = 1, _count, _code _count, _code, _pro = 1, _count, _code
end end
if _code == "m" then _code = self.e:GetOwner():GetOriginalCode() end
local res, ctl_val = {_code or 0, _pro or 0}, { local res, ctl_val = {_code or 0, _pro or 0}, {
O = EFFECT_COUNT_CODE_OATH, O = EFFECT_COUNT_CODE_OATH,
D = EFFECT_COUNT_CODE_DUEL, D = EFFECT_COUNT_CODE_DUEL,
...@@ -245,7 +289,7 @@ function fuef:Func(_val, _func, ...) ...@@ -245,7 +289,7 @@ function fuef:Func(_val, _func, ...)
if not (type(_val) == "string" and _val:match("%,")) then -- check _val is val if not (type(_val) == "string" and _val:match("%,")) then -- check _val is val
local val = { _val } local val = { _val }
if type(_val) == "string" and _val:match("%%") then val = { _val , ... } end if type(_val) == "string" and _val:match("%%") then val = { _val , ... } end
self.val = val self.val = val
else -- _val is _func else -- _val is _func
vals, _func = {_func, ...}, _val vals, _func = {_func, ...}, _val
end end
...@@ -256,7 +300,7 @@ function fuef:Func(_val, _func, ...) ...@@ -256,7 +300,7 @@ function fuef:Func(_val, _func, ...)
local fname, fval = func, func local fname, fval = func, func
if type(fname) == "table" then if type(fname) == "table" then
fname = table.remove(fval,1) fname = table.remove(fval,1)
else else
fval = nil fval = nil
end end
-- find fname can match seqs -- find fname can match seqs
...@@ -296,12 +340,12 @@ function fuef:Func_Model(_key, _func, ...) ...@@ -296,12 +340,12 @@ function fuef:Func_Model(_key, _func, ...)
if not self:PreChk(_key:upper(), _func, ...) then return self end if not self:PreChk(_key:upper(), _func, ...) then return self end
local val_chk = _key == "val" and (tonumber(_func) or fucs.val[_func]) or nil local val_chk = _key == "val" and (tonumber(_func) or fucs.val[_func]) or nil
local vals = select("#", ...) > 0 and { ... } or nil local vals = select("#", ...) > 0 and { ... } or nil
if type(_func) == "string" and _func:match("%(") then if type(_func) == "string" and _func:match("%(") then
_func = fusf.Val_Cuts(_func, ...)[1] _func = fusf.Val_Cuts(_func, ...)[1]
vals = _func vals = _func
if type(_func) == "table" then if type(_func) == "table" then
_func = table.remove(vals,1) _func = table.remove(vals,1)
else else
vals = nil vals = nil
end end
elseif vals and #vals == 1 and type(vals[1]) == "table" then elseif vals and #vals == 1 and type(vals[1]) == "table" then
...@@ -338,7 +382,7 @@ function fuef:LAB(...) ...@@ -338,7 +382,7 @@ function fuef:LAB(...)
local _labs = {...} local _labs = {...}
local labs = { } local labs = { }
for _,_lab in ipairs(_labs) do for _,_lab in ipairs(_labs) do
if type(_lab) == "string" then if type(_lab) == "string" then
for _,lab in ipairs(fusf.CutString(_lab, "+", "LAB")) do for _,lab in ipairs(fusf.CutString(_lab, "+", "LAB")) do
labs[#labs + 1] = (lab == "m") and self.e:GetOwner():GetOriginalCode() or tonumber(lab) labs[#labs + 1] = (lab == "m") and self.e:GetOwner():GetOriginalCode() or tonumber(lab)
end end
...@@ -362,13 +406,18 @@ function fuef.initial(_lib, _glo, _exop_func, ...) ...@@ -362,13 +406,18 @@ function fuef.initial(_lib, _glo, _exop_func, ...)
cm.es, cm.lib = {}, _lib cm.es, cm.lib = {}, _lib
cm.initial_effect = cm.initial_effect or function(c) cm.initial_effect = cm.initial_effect or function(c)
-- do ex_op -- do ex_op
if _exop_func then if _exop_func then
local place = 1 local place = 1
if type(_exop_func) ~= "table" then _exop_func = { _exop_func } end if type(_exop_func) ~= "table" then _exop_func = { _exop_func } end
for _, exop_func in ipairs(_exop_func) do for _, exop_func in ipairs(_exop_func) do
if type(exop_func) == "string" then if type(exop_func) == "string" then
for _, func in ipairs(fusf.CutString(exop_func, ",", "fuef.initial")) do for _, func in ipairs(fusf.CutString(exop_func, ",", "fuef.initial")) do
(fucf[func] or Card[func])(c, exop_val[place]) local f = fucf[func] or Card[func]
if f then
f(c, exop_val[place])
else
cm[func] = exop_val[place](c)
end
place = place + 1 place = place + 1
end end
else else
......
...@@ -7,10 +7,10 @@ function fu_GD.sd_con(e,tp,eg,ep,ev,re,r,rp) ...@@ -7,10 +7,10 @@ function fu_GD.sd_con(e,tp,eg,ep,ev,re,r,rp)
end end
--Normal initial --Normal initial
function fu_GD.N_initial(add_cat, f1_loc, f1_func, f1_val) function fu_GD.N_initial(add_cat, f1_loc, f1_func, f1_val)
local cm, m = fuef.initial(fu_GD, _glo)
local func = function(e,tp) return fugf.GetFilter(tp, f1_loc, f1_func, f1_val) end local func = function(e,tp) return fugf.GetFilter(tp, f1_loc, f1_func, f1_val) end
cm.pe1 = fuef.I():CAT("TD+DR"..(add_cat and "+"..add_cat or "")):RAN("H"):CTL(m):Func("N_cos1,N_tg1(%1),N_op1(%1)", func) local pe = fuef.I():CAT("TD+DR"..(add_cat and "+"..add_cat or "")):RAN("H"):CTL("m"):Func("N_cos1,N_tg1(%1),N_op1(%1)", func)
cm.pe2 = fuef.FC("DR"):RAN("H"):Func("sd_con,N_op2") local cm, m = fuef.initial(fu_GD, _glo, "public_effect", pe)
cm.pe1 = fuef.FC("DR"):RAN("H"):Func("sd_con,N_op2")
return cm, m return cm, m
end end
function fu_GD.N_cos1(e,tp,eg,ep,ev,re,r,rp,chk) function fu_GD.N_cos1(e,tp,eg,ep,ev,re,r,rp,chk)
......
--创导龙裔·探求者 --创导龙裔·探求者
dofile("expansions/script/c20000450.lua") dofile("expansions/script/c20000450.lua")
fu_GD.N_initial(nil, "D", "IsTyp+IsSet", "S,bfd4") fu_GD.N_initial(nil, "D", "IsTyp+IsSet", "S/T,bfd4")
\ No newline at end of file \ No newline at end of file
...@@ -30,6 +30,6 @@ function cm.op1(e,tp,eg,ep,ev,re,r,rp) ...@@ -30,6 +30,6 @@ function cm.op1(e,tp,eg,ep,ev,re,r,rp)
Duel.BreakEffect() Duel.BreakEffect()
Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,false,true,POS_FACEUP) Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,false,true,POS_FACEUP)
tc:CompleteProcedure() tc:CompleteProcedure()
if #mg == 1 then fuef.S(e,EFFECT_INDESTRUCTABLE_EFFECT,tc):DES(0):PRO("SR+CD+HINT"):RAN("M"):VAL(1):RES("STD") end if #mg == 1 then fuef.S(e,EFFECT_INDESTRUCTABLE_EFFECT,tc):DES(m,0):PRO("SR+CD+HINT"):RAN("M"):VAL(1):RES("STD") end
if mg:IsExists(Card.IsSetCard,nil,1,0xbfd4) then fuef.S(e,EFFECT_CANNOT_BE_EFFECT_TARGET,tc):DES(1):PRO("HINT"):VAL("tgoval"):RES("STD") end if mg:IsExists(Card.IsSetCard,nil,1,0xbfd4) then fuef.S(e,EFFECT_CANNOT_BE_EFFECT_TARGET,tc):DES(m,1):PRO("HINT"):VAL("tgoval"):RES("STD") end
end end
\ No newline at end of file
...@@ -9,7 +9,7 @@ function cm.tg1(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -9,7 +9,7 @@ function cm.tg1(e,tp,eg,ep,ev,re,r,rp,chk)
end end
function cm.op1(e,tp,eg,ep,ev,re,r,rp) function cm.op1(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local g = fugf.SelectFilter(tp,"+MSG",nil,nil,1,ev) local g = fugf.Select(tp,"+MSG",nil,nil,1,ev)
if #g<=0 then return end if #g<=0 then return end
Duel.Remove(g,POS_FACEUP,REASON_EFFECT) Duel.Remove(g,POS_FACEUP,REASON_EFFECT)
end end
\ No newline at end of file
...@@ -16,11 +16,21 @@ function cm.tg1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) ...@@ -16,11 +16,21 @@ function cm.tg1(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
Duel.SetChainLimit(cm.tg1f(g)) Duel.SetChainLimit(cm.tg1f(g))
end end
function cm.op1con1(e) function cm.op1con1(e)
local tp = e:GetOwnerPlayer() if not fugf.GetFilter(e:GetOwnerPlayer(),"M","IsTyp+IsRac+IsPos","RI+M,DR,FU",1) then return false end
return e:GetHandler():IsStatus(STATUS_EFFECT_ENABLED) and fugf.GetFilter(tp,"M","IsTyp+IsRac+IsPos","RI+M,DR,FU",1) local c = e:GetHandler()
if c:IsType(TYPE_TRAPMONSTER) then
return c:IsFaceup()
elseif c:IsType(TYPE_SPELL+TYPE_TRAP) then
return c:IsFaceup() and not c:IsDisabled()
else
return Auxiliary.NegateMonsterFilter(c)
end
end
function cm.op1con2(e)
return fugf.GetFilter(e:GetOwnerPlayer(),"M","IsTyp+IsRac+IsPos","RI+M,DR,FU",1)
end end
function cm.op1(e,tp,eg,ep,ev,re,r,rp) function cm.op1(e,tp,eg,ep,ev,re,r,rp)
local g = Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) local g = Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e)
if #g==0 then return end if #g==0 then return end
fuef.S(e,EFFECT_CANNOT_TRIGGER,g):DES(1):PRO("HINT"):CON("op1con1"):RES("STD")(EFFECT_DISABLE) fuef.S(e,EFFECT_DISABLE,g):DES(1):PRO("HINT"):CON("op1con1"):RES("STD")(EFFECT_CANNOT_TRIGGER):CON("op1con2")
end end
\ No newline at end of file
--创导龙裔·研究者
dofile("expansions/script/c20000450.lua")
local cm, m = fuef.initial(fu_GD, _glo)
cm.e1 = fuef.STO("DR"):RAN("H"):PRO("DAM"):CTL(m):Func("con1,N_cos1,tg1,op1")
cm.e2 = fuef.QO():RAN("H"):PRO("TG"):CTL(m):Func("con2,tg2,op2")
--e1
function cm.con1(e,tp,eg,ep,ev,re,r,rp)
return (r & REASON_EFFECT == REASON_EFFECT) and fucf.Filter(re:GetHandler(), "IsSet+IsTyp", "bfd4,M")
end
function cm.tg1(e,tp,eg,ep,ev,re,r,rp,chk)
local te = re:GetHandler().public_effect
if not te then return false end
te = te.e
local tg = te:GetTarget()
if chk==0 then return not tg or tg(e,tp,eg,ep,ev,re,r,rp,0) end
e:SetLabelObject(te)
if tg then tg(e,tp,eg,ep,ev,re,r,rp,1) end
end
function cm.op1(e,tp,eg,ep,ev,re,r,rp)
local op = e:GetLabelObject():GetOperation()
if op then op(e,tp,eg,ep,ev,re,r,rp) end
end
--e2
function cm.con2(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsPublic() and Duel.GetTurnPlayer() ~= tp
end
function cm.tg2tg1(e,c)
return not fusf.Creat_CF("IsSet+IsTyp","3fd4,RI+M")(c)
end
function cm.tg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
local e1 = fuef.F(e,EFFECT_CANNOT_SPECIAL_SUMMON,tp):PRO("PTG"):TRAN(1,0):TG("tg2tg1")
local g = fugf.GetFilter(tp,"G","IsTyp+CheckActivateEffect+TgChk",{"RI+S",{true,true,false},e})
e1.e:Reset()
if chkc then return chkc:IsLocation(LOCATION_MZONE) and g:IsContains(chkc) end
if chk==0 then return #g > 0 end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET)
g = fugf.SelectTg(tp, g)
local te, ceg, cep, cev, cre, cr, crp = g:GetFirst():CheckActivateEffect(true,true,true)
e:SetProperty(te:GetProperty())
local tg = te:GetTarget()
if tg then tg(e, tp, ceg, cep, cev, cre, cr, crp, 1) end
te:SetLabelObject(e:GetLabelObject())
e:SetLabelObject(te)
Duel.ClearOperationInfo(0)
end
function cm.op2(e,tp,eg,ep,ev,re,r,rp)
local e1 = fuef.F(e,EFFECT_CANNOT_SPECIAL_SUMMON,tp):PRO("PTG"):TRAN(1,0):TG("tg2tg1")
local te=e:GetLabelObject()
if te then
e:SetLabelObject(te:GetLabelObject())
local op=te:GetOperation()
if op then op(e,tp,eg,ep,ev,re,r,rp) end
end
e1.e:Reset()
end
\ No newline at end of file
...@@ -6,59 +6,7 @@ function fugf.Get(_tp, _loc) ...@@ -6,59 +6,7 @@ function fugf.Get(_tp, _loc)
return Duel.GetFieldGroup(_tp, fusf.Get_Loc(_loc)) return Duel.GetFieldGroup(_tp, fusf.Get_Loc(_loc))
end end
function fugf.Filter(_g, _func, _val, _n, ...) function fugf.Filter(_g, _func, _val, _n, ...)
if not _func then return not _n and _g or #_g >= _n end -- nil chk return fusf.Creat_GF(_func, _val, ...)(_g, _n)
-- trans _val
if type(_val) ~= "table" then _val = { _val } end
local temp_val, v_ind = { }, 0
for _, f_val in ipairs(_val) do
if type(f_val) == "string" then
for _, val in fusf.ForTable(fusf.Val_Cuts(f_val, ...)) do
v_ind = v_ind + 1
temp_val[v_ind] = val
end
else
v_ind = v_ind + 1
temp_val[v_ind] = f_val
end
end
_val, temp_val = temp_val
-- _func is function
if type(_func) == "function" then
_g = _g:Filter(_func, nil, table.unpack(_val, 1, v_ind))
return not _n and _g or #_g >= _n
end
-- _func is string
_func = fusf.PostFix_Trans(_func, ...)
if #_func == 1 then
_func = fucf[_func[1] ] or Card[_func[1] ] or aux[_func[1] ]
_g = _g:Filter(_func, nil, table.unpack(_val, 1, v_ind))
return not _n and _g or #_g >= _n
end
-- multi _func
local v_ind, temp_g = 1, { }
for _, func in ipairs(_func) do
if func == "~" then
temp_g[#temp_g] = _g - temp_g[#temp_g]
elseif type(func) == "string" and #func == 1 then
local valR = table.remove(temp_g)
local valL = table.remove(temp_g)
local Cal = {
["+"] = valL & valR,
["-"] = valL - valR,
["/"] = valL + valR
}
table.insert(temp_g, Cal[func])
else
if type(func) == "string" then
func = fucf[func] or Card[func] or aux[func]
end
temp_val, v_ind = _val[v_ind], v_ind + 1
if type(temp_val) ~= "table" then temp_val = {temp_val, len = 1} end
table.insert(temp_g, _g:Filter(func, nil, table.unpack(temp_val, 1, temp_val.len)))
end
end
_g = table.remove(temp_g)
return not _n and _g or #_g >= _n
end end
function fugf.GetFilter(_tp, _loc, _func, _val, _n, ...) function fugf.GetFilter(_tp, _loc, _func, _val, _n, ...)
return fugf.Filter(fugf.Get(_tp, _loc), _func, _val, _n, ...) return fugf.Filter(fugf.Get(_tp, _loc), _func, _val, _n, ...)
...@@ -96,8 +44,9 @@ function fucf.AddCode(c, ...) ...@@ -96,8 +44,9 @@ function fucf.AddCode(c, ...)
end end
fucf.ReviveLimit = Card.EnableReviveLimit fucf.ReviveLimit = Card.EnableReviveLimit
--------------------------------------"Card function" (use in Filter --------------------------------------"Card function" (use in Filter
function fucf.Filter(c, func, ...) function fucf.Filter(c, _func, ...)
return fugf.Filter(Group.FromCards(c), func, {...},1) return fusf.Creat_CF(_func, {...})(c)
--return fugf.Filter(Group.FromCards(c), func, {...}, 1)
end end
fucf.IsRk = fusf.IsN("GetRank") fucf.IsRk = fusf.IsN("GetRank")
fucf.IsLv = fusf.IsN("GetLevel") fucf.IsLv = fusf.IsN("GetLevel")
...@@ -184,4 +133,17 @@ fucf.IsOTyp = fusf.Is_Cons("GetOriginalType", "typ") ...@@ -184,4 +133,17 @@ fucf.IsOTyp = fusf.Is_Cons("GetOriginalType", "typ")
fucf.IsAtt = fusf.Is_Cons("GetAttribute", "att") fucf.IsAtt = fusf.Is_Cons("GetAttribute", "att")
fucf.IsRac = fusf.Is_Cons("GetRace", "rac") fucf.IsRac = fusf.Is_Cons("GetRace", "rac")
fucf.IsPos = fusf.Is_Cons("GetPosition", "pos", function(card_val, val) return card_val | val == val end) fucf.IsPos = fusf.Is_Cons("GetPosition", "pos", function(card_val, val) return card_val | val == val end)
fucf.IsPPos = fusf.Is_Cons("GetPreviousPosition", "pos", function(card_val, val) return card_val | val == val end) fucf.IsPPos = fusf.Is_Cons("GetPreviousPosition", "pos", function(card_val, val) return card_val | val == val end)
\ No newline at end of file
---------------------------------------------------------------- procedure
function fucf.RMFilter(c, rf, e, tp, g1, g2, level_function, greater_or_equal, chk)
if rf and not rf(c, e, tp, chk) then return false end
if not fucf.Filter(rc, "IsTyp+CanSp", "RI+M", {e, SUMMON_TYPE_RITUAL, tp, false, true}) then return false end
local g = g1:Filter(Card.IsCanBeRitualMaterial, c, c) + (g2 or Group.CreateGroup())
g = g:Filter(c.mat_filter or aux.TRUE, c, tp)
local lv = level_function(c)
Auxiliary.GCheckAdditional = Auxiliary.RitualCheckAdditional(c, lv, greater_or_equal)
local res = g:CheckSubGroup(Auxiliary.RitualCheck, 1, lv, tp, c, lv, greater_or_equal)
Auxiliary.GCheckAdditional = nil
return res
end
\ No newline at end of file
...@@ -46,7 +46,7 @@ end ...@@ -46,7 +46,7 @@ end
function fusf.Get_Constant(_constable, _vals) function fusf.Get_Constant(_constable, _vals)
-- string chk -- string chk
if type(_vals) ~= "string" then return _vals end if type(_vals) ~= "string" then return _vals end
local _res, _first = 0 local _res = 0
-- cod chk -- cod chk
if _constable == "cod" then if _constable == "cod" then
-- EVENT_CUSTOM -- EVENT_CUSTOM
...@@ -56,7 +56,7 @@ function fusf.Get_Constant(_constable, _vals) ...@@ -56,7 +56,7 @@ function fusf.Get_Constant(_constable, _vals)
_res = EVENT_CUSTOM + fusf.M_chk(_vals) _res = EVENT_CUSTOM + fusf.M_chk(_vals)
-- EVENT_PHASE or EVENT_PHASE_START -- EVENT_PHASE or EVENT_PHASE_START
elseif _vals:match("PH") then elseif _vals:match("PH") then
for _,_var in ipairs(fusf.CutString(_vals, "+", "Get_Constant_1")) do for _, _var in ipairs(fusf.CutString(_vals, "+", "Get_Constant_1")) do
local _constable = _var:match("PH") and "cod" or "pha" local _constable = _var:match("PH") and "cod" or "pha"
_res = _res + fucs[_constable][_var] _res = _res + fucs[_constable][_var]
end end
...@@ -64,11 +64,13 @@ function fusf.Get_Constant(_constable, _vals) ...@@ -64,11 +64,13 @@ function fusf.Get_Constant(_constable, _vals)
if _res ~= 0 then return _res end if _res ~= 0 then return _res end
end end
-- find _constable -- find _constable
for i,_val in ipairs(fusf.CutString(_vals, "+", "Get_Constant_2")) do local vals, cons, _des = fusf.CutString(_vals, "+", "Get_Constant_2"), fucs[_constable]
if i == 1 then _first = _val end for i = #vals, 1, -1 do
_res = _res + (fusf.NotNil(_val) and fucs[_constable][_val:upper()] or 0) local _val = vals[i]
_des = fucs.des[_val] or _des
_res = _res + cons[_val]
end end
return _res, _first return _res, _des
end end
function fusf.Get_Loc(_loc1, _loc2, _from) function fusf.Get_Loc(_loc1, _loc2, _from)
-- nil chk -- nil chk
...@@ -93,9 +95,10 @@ function fusf.Get_Loc(_loc1, _loc2, _from) ...@@ -93,9 +95,10 @@ function fusf.Get_Loc(_loc1, _loc2, _from)
end end
return table.unpack(_locs) return table.unpack(_locs)
end end
function fusf.M_chk(_val) function fusf.M_chk(val) -- val : number|string
if _val < 19999999 then return _val + 20000000 end val = tonumber(val)
return _val if val < 19999999 then return val + 20000000 end
return val
end end
function fusf.PostFix_Trans(_str, ...) function fusf.PostFix_Trans(_str, ...)
local vals, res, temp, i = {...}, { }, { }, 1 local vals, res, temp, i = {...}, { }, { }, 1
...@@ -144,13 +147,14 @@ function fusf.IsN(_func) ...@@ -144,13 +147,14 @@ function fusf.IsN(_func)
return function(_c, _val, _exval) return function(_c, _val, _exval)
local c_val = Card[_func](_c, _exval) local c_val = Card[_func](_c, _exval)
if type(_val) == "string" then if type(_val) == "string" then
local oper, _val = _val:match("([%+%-])(%d+)") local oper, _val = _val:match("%+%-"), _val:match("%d+")
_val = tonumber(_val) _val = tonumber(_val)
if oper == "+" then if oper == "+" then
return c_val >= _val return c_val >= _val
elseif oper == "-" then elseif oper == "-" then
return c_val <= _val return c_val <= _val
end end
return c_val == _val
end end
if _val > 0 then return c_val == _val end if _val > 0 then return c_val == _val end
return c_val <= -_val -- _val = -n return c_val <= -_val -- _val = -n
...@@ -182,19 +186,22 @@ end ...@@ -182,19 +186,22 @@ end
function fusf.Get_Func(_c, _func, _val) function fusf.Get_Func(_c, _func, _val)
if type(_func) ~= "string" then return _func end if type(_func) ~= "string" then return _func end
local lib = _c.lib or {} local lib = _c.lib or {}
local res = function(_func) return _func end
if _func:match("~") then
_func = _func:sub(2)
res = function(_func) return function(...) return not _func(...) end end
end
-- find cm, lib, fuef, aux -- find cm, lib, fuef, aux
if not _val then if not _val then
return _c[_func] or lib[_func] or fuef[_func] or aux[_func] return res(_c[_func] or lib[_func] or fuef[_func] or aux[_func])
end end
-- translate vals -- translate vals
for i, val in ipairs(_val) do for i, val in ipairs(_val) do
if tonumber(val) then _val[i] = tonumber(val) or val
_val[i] = tonumber(val)
end
end end
-- find cm, lib, fuef, aux -- find cm, lib, fuef, aux
for _, Lib in ipairs({_c, lib, fuef, aux}) do for _, Lib in ipairs({_c, lib, fuef, aux}) do
if Lib[_func] then return Lib[_func](table.unpack(_val)) end if Lib[_func] then return res(Lib[_func](table.unpack(_val))) end
end end
Debug.Message("Get_Func not found : ".._func) Debug.Message("Get_Func not found : ".._func)
return nil return nil
...@@ -242,6 +249,72 @@ function fusf.Val_Cuts_Table_Process(_str, ...) -- "f(%1,,3)" -> {"f", vals[1], ...@@ -242,6 +249,72 @@ function fusf.Val_Cuts_Table_Process(_str, ...) -- "f(%1,,3)" -> {"f", vals[1],
res.len = res_ind res.len = res_ind
return res return res
end end
function fusf.Creat_CF(_func, _val, ...)
if not _func then return function(c) return true end end
-- trans _val
if type(_val) ~= "table" then _val = { _val } end
local temp_val, v_ind = { }, 0
for _, f_val in ipairs(_val) do
if type(f_val) == "string" then
for _, val in fusf.ForTable(fusf.Val_Cuts(f_val, ...)) do
v_ind = v_ind + 1
temp_val[v_ind] = val
end
else
v_ind = v_ind + 1
temp_val[v_ind] = f_val
end
end
_val, temp_val = temp_val
-- _func is function
if type(_func) == "function" then
return function(c)
return _func(c, table.unpack(_val, 1, v_ind))
end
end
-- _func is string
_func = fusf.PostFix_Trans(_func, ...)
local fucf, Card, aux = fucf, Card, aux
if #_func == 1 then -- _func just one
_func = fucf[_func[1] ] or Card[_func[1] ] or aux[_func[1] ]
return function(c)
return _func(c, table.unpack(_val, 1, v_ind))
end
end
-- _func is multi
return function(c)
local stack, v_ind, temp_val = { }, 1
for _, func in ipairs(_func) do
if func == "~" then
stack[#stack] = not stack[#stack]
elseif type(func) == "string" and #func == 1 then
local valR, valL = table.remove(stack), table.remove(stack)
local Cal = {
["+"] = valL and valR,
["-"] = valL and not valR,
["/"] = valL or valR
}
stack[#stack + 1] = Cal[func]
else
if type(func) == "string" then
func = fucf[func] or Card[func] or aux[func]
end
temp_val, v_ind = _val[v_ind], v_ind + 1
if type(temp_val) ~= "table" then temp_val = {temp_val, len = 1} end
stack[#stack + 1] = func(c, table.unpack(temp_val, 1, temp_val.len))
end
end
return table.remove(stack)
end
end
function fusf.Creat_GF(_func, _val, ...)
local ex_val = {...}
return function(g, n)
g = g:Filter(fusf.Creat_CF(_func, _val, table.unpack(ex_val)), nil)
if not n then return g end
return n > 0 and #g >= n or #g <= -n
end
end
function fusf.ForTable(t, n) function fusf.ForTable(t, n)
local i, max = 0, t.len or n local i, max = 0, t.len or n
return function() return function()
...@@ -272,55 +345,46 @@ function fusf.GetDES(_code, _id, m) -- (0), ("n"), (m), ("+1") ...@@ -272,55 +345,46 @@ function fusf.GetDES(_code, _id, m) -- (0), ("n"), (m), ("+1")
end end
return aux.Stringid(_code, _id) -- _code*16 + _id return aux.Stringid(_code, _id) -- _code*16 + _id
end end
function fusf.GetRES(_flag, _count) -- _flag = a + b/b1/b2 + c | 1 function fusf.GetRES(_flag, _count) -- _flag = a + b/b1/b2 + c | 1
if type(_flag) == "string" then if type(_flag) ~= "string" then return {_flag or 0, _count} end
local temp = 0 if not _count then -- cut count
if not _count then _flag = fusf.CutString(_flag, "|", "RES")
_flag = fusf.CutString(_flag, "|", "RES_1") _flag, _count = _flag[1], tonumber(_flag[2] or 1)
_flag, _count = _flag[1], tonumber(_flag[2]) end
end local stack = { }
for _,val in ipairs(fusf.CutString(_flag, "+", "RES_2")) do for _, unit in ipairs(fusf.PostFix_Trans(_flag)) do
if val:match("PH") then if unit:match("[+-/]") then
temp = temp + RESET_PHASE local valR, valL = table.remove(stack), table.remove(stack)
val = fusf.CutString(val, "/", "RES_2") table.insert(stack, unit == "-" and valL - valR or valL | valR)
for i = 2, #val do else
temp = temp + fucs.pha[val[i] ] table.insert(stack, fucs.res[unit] or fucs.pha[unit])
end
elseif val == "SELF" or val == "OPPO" or val == "CH" or val == "EV" then
temp = temp + fucs.res[val]
else -- add RESET_EVENT
temp = (temp | RESET_EVENT) + fucs.res[val]
end
end end
_flag = temp
end end
_flag = table.remove(stack)
if _flag & 0xfff0000 > 0 then _flag = _flag | RESET_EVENT end
if _flag & 0x00003ff > 0 then _flag = _flag | RESET_PHASE end
return {_flag, _count} return {_flag, _count}
end end
--------------------------------------"Other Support function" --------------------------------------"Other Support function"
function fusf.RegFlag(tp_or_c, cod, res, pro, lab, des) function fusf.RegFlag(val, cod, res, pro, lab, des) -- val : Card|Effect|player(number)
cod = fusf.M_chk(cod) cod, res, pro = fusf.M_chk(cod), fusf.GetRES(res), fusf.Get_Constant("pro", pro) or 0
res = fusf.GetRES(res) if des then des, pro = fusf.GetDES(des, nil, cod), (pro or 0)|EFFECT_FLAG_CLIENT_HINT end
pro = fusf.Get_Constant("pro", pro) local typ = aux.GetValueType(val)
if des then des = fusf.GetDES(des, nil, cod) end if typ == "Card" then
if tonumber(tp_or_c) then val:RegisterFlagEffect(cod, res[1], pro, res[2] or 1, lab or 0, des)
Duel.RegisterFlagEffect(tp_or_c, cod, res[1], pro, res[2] or 1, lab or 0) elseif typ == "Effect" then
val:GetHandler():RegisterFlagEffect(cod, res[1], pro, res[2] or 1, lab or 0, des)
else else
tp_or_c:RegisterFlagEffect(cod, res[1], pro, res[2] or 1, lab or 0, des) Duel.RegisterFlagEffect(val, cod, res[1], pro, res[2] or 1, lab or 0)
end end
end end
function fusf.GetFlag(val, cod, n1, n2) function fusf.GetFlag(val, cod) -- val : Card|Effect|player(number)
local typ, count = aux.GetValueType(val) cod = fusf.M_chk(cod)
if type(cod) == "string" then cod = tonumber(cod) end local typ = aux.GetValueType(val)
if cod < 19999999 then cod = cod + 20000000 end if typ == "Card" then
if typ == "Card" then count = val:GetFlagEffect(cod) end return val:GetFlagEffect(cod)
if typ == "Effect" then count = val:GetHandler():GetFlagEffect(cod) end elseif typ == "Effect" then
if typ == "int" then count = Duel.GetFlagEffect(val, cod) end return val:GetHandler():GetFlagEffect(cod)
if not n1 then return n2 and (count == n2) or count end
if type(n1) == "string" and n1:match("[%+%-]") then
local Cal = {
["+"] = count >= (n2 or math.abs(tonumber(n1))),
["-"] = count <= (n2 or math.abs(tonumber(n1)))
}
return Cal[n1:match("[%+%-]")]
end end
return Duel.GetFlagEffect(val, cod)
end end
\ No newline at end of file
...@@ -219,7 +219,7 @@ fucs.pro = { ...@@ -219,7 +219,7 @@ fucs.pro = {
CAL = EFFECT_FLAG_DAMAGE_CAL , --可以在伤害计算时发动 CAL = EFFECT_FLAG_DAMAGE_CAL , --可以在伤害计算时发动
OP = EFFECT_FLAG_EVENT_PLAYER , --发动/处理效果的玩家为触发事件的玩家而不是卡片的持有者,如仪式魔人,万魔殿 OP = EFFECT_FLAG_EVENT_PLAYER , --发动/处理效果的玩家为触发事件的玩家而不是卡片的持有者,如仪式魔人,万魔殿
NR = EFFECT_FLAG_NO_TURN_RESET , --发条等“这张卡在场上只能发动一次”的效果 NR = EFFECT_FLAG_NO_TURN_RESET , --发条等“这张卡在场上只能发动一次”的效果
OE = 0x40400 , --EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE(out effect) OE = 0x40400 , --EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE(out effect)
} }
--Location Variable --Location Variable
fucs.ran = { fucs.ran = {
...@@ -255,8 +255,6 @@ fucs.res = { ...@@ -255,8 +255,6 @@ fucs.res = {
SELF = RESET_SELF_TURN , SELF = RESET_SELF_TURN ,
OPPO = RESET_OPPO_TURN , OPPO = RESET_OPPO_TURN ,
CH = RESET_CHAIN , CH = RESET_CHAIN ,
PH = RESET_PHASE ,
EV = RESET_EVENT ,
-- 以下自动添加 RESET_EVENT -- 以下自动添加 RESET_EVENT
DIS = RESET_DISABLE , DIS = RESET_DISABLE ,
SET = RESET_TURN_SET , SET = RESET_TURN_SET ,
...@@ -273,6 +271,9 @@ fucs.res = { ...@@ -273,6 +271,9 @@ fucs.res = {
----组合时点 ----组合时点
STD = RESETS_STANDARD , STD = RESETS_STANDARD ,
RED = RESETS_REDIRECT , RED = RESETS_REDIRECT ,
-- 自动添加
PH = RESET_PHASE ,
EV = RESET_EVENT ,
} }
--reason Variable --reason Variable
fucs.rea = { fucs.rea = {
......
...@@ -10,7 +10,7 @@ function c98941056.initial_effect(c) ...@@ -10,7 +10,7 @@ function c98941056.initial_effect(c)
e1:SetTarget(s.tg1) e1:SetTarget(s.tg1)
c:RegisterEffect(e1) c:RegisterEffect(e1)
local e0=e1:Clone() local e0=e1:Clone()
e0:SetDescription(aux.Stringid(id,0)) e0:SetDescription(aux.Stringid(id,6))
e0:SetRange(LOCATION_DECK) e0:SetRange(LOCATION_DECK)
e0:SetCondition(s.descon) e0:SetCondition(s.descon)
e0:SetCost(s.cost2) e0:SetCost(s.cost2)
...@@ -26,16 +26,28 @@ function c98941056.initial_effect(c) ...@@ -26,16 +26,28 @@ function c98941056.initial_effect(c)
e2:SetTarget(s.target) e2:SetTarget(s.target)
e2:SetOperation(s.activate) e2:SetOperation(s.activate)
c:RegisterEffect(e2) c:RegisterEffect(e2)
local e10=e2:Clone()
e10:SetDescription(aux.Stringid(id,7))
e10:SetRange(LOCATION_DECK)
e10:SetCondition(s.descon)
e10:SetCost(s.cost2)
c:RegisterEffect(e10)
--change effect --change effect
local e2=Effect.CreateEffect(c) local e3=Effect.CreateEffect(c)
e2:SetDescription(aux.Stringid(98941056,2)) e3:SetDescription(aux.Stringid(98941056,2))
e2:SetType(EFFECT_TYPE_QUICK_O) e3:SetType(EFFECT_TYPE_QUICK_O)
e2:SetCode(EVENT_CHAINING) e3:SetCode(EVENT_CHAINING)
e2:SetRange(LOCATION_SZONE) e3:SetRange(LOCATION_SZONE)
e2:SetCountLimit(1,id+o) e3:SetCountLimit(1,id+o)
e2:SetTarget(c98941056.chtg) e3:SetTarget(c98941056.chtg)
e2:SetOperation(c98941056.chop) e3:SetOperation(c98941056.chop)
c:RegisterEffect(e2) c:RegisterEffect(e3)
local e11=e3:Clone()
e11:SetDescription(aux.Stringid(id,8))
e11:SetRange(LOCATION_DECK)
e11:SetCondition(s.descon)
e11:SetCost(s.cost2)
c:RegisterEffect(e11)
end end
function s.checkop(e,tp,eg,ep,ev,re,r,rp) function s.checkop(e,tp,eg,ep,ev,re,r,rp)
local rc=re:GetHandler() local rc=re:GetHandler()
...@@ -192,7 +204,7 @@ function c98941056.chop(e,tp,eg,ep,ev,re,r,rp) ...@@ -192,7 +204,7 @@ function c98941056.chop(e,tp,eg,ep,ev,re,r,rp)
end end
end end
function c98941056.repop(e,tp,eg,ep,ev,re,r,rp) function c98941056.repop(e,tp,eg,ep,ev,re,r,rp)
local oog=Duel.GetMatchingGroup(s.filterx,tp,LOCATION_GRAVE,0,nil) local oog=Duel.GetMatchingGroup(c98941056.disfilter,tp,LOCATION_SZONE,0,nil)
if oog:GetCount()==0 then if oog:GetCount()==0 then
local g=Duel.GetMatchingGroup(s.filterx,1-tp,LOCATION_GRAVE,0,nil) local g=Duel.GetMatchingGroup(s.filterx,1-tp,LOCATION_GRAVE,0,nil)
if not Duel.IsPlayerAffectedByEffect(1-tp,59822133) and g:IsExists(s.sfilter1,1,nil,e,1-tp,g) then if not Duel.IsPlayerAffectedByEffect(1-tp,59822133) and g:IsExists(s.sfilter1,1,nil,e,1-tp,g) then
......
...@@ -113,6 +113,7 @@ ...@@ -113,6 +113,7 @@
!setname 0x6410 星光歌剧 !setname 0x6410 星光歌剧
!setname 0x5411 源祀 !setname 0x5411 源祀
!setname 0x412 圣地友爱团 !setname 0x412 圣地友爱团
!setname 0x1419 摩斯迪露姆
!setname 0x341a 深层幻夜 !setname 0x341a 深层幻夜
!setname 0x541a 燃煤 !setname 0x541a 燃煤
!setname 0x641a 神代丰 !setname 0x641a 神代丰
...@@ -583,6 +584,7 @@ ...@@ -583,6 +584,7 @@
!setname 0x3f43 反诘 !setname 0x3f43 反诘
!setname 0x5f43 天翎渊 !setname 0x5f43 天翎渊
!setname 0x6f43 狂音主 !setname 0x6f43 狂音主
!setname 0x9f43 龙芯残机
#地狱犬 SEINE 314&907 #地狱犬 SEINE 314&907
!victory 0x60 「时计塔」效果胜利 !victory 0x60 「时计塔」效果胜利
...@@ -1125,10 +1127,11 @@ ...@@ -1125,10 +1127,11 @@
!setname 0x3213 渊海异兽 !setname 0x3213 渊海异兽
#依然 223 0x700-0x70f #依然 223 0x700-0x70f
!setname 0x613 金属 !setname 0x613 金属
!counter 0x1613 金属化指示物 !counter 0x1613 金属化指示物
!setname 0x700 机神 !setname 0x700 机神
!setname 0x702 红之印象 !setname 0x3702 惧质
!setname 0x970b 拉特金
!setname 0x703 墓园 !setname 0x703 墓园
!setname 0x3703 墓园死者 !setname 0x3703 墓园死者
!setname 0x5703 墓园守护者 !setname 0x5703 墓园守护者
......
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