Commit 08a50bb2 authored by POLYMER's avatar POLYMER

fix

parent 02503888
--祝祷女祭司 --祝祷女祭司
if not pcall(function() require("expansions/script/c10199990") end) then require("script/c10199990") end Duel.LoadScript("c10199990.lua")
local m,cm=rscf.DefineCard(10174065) local m,cm=rscf.DefineCard(10174065)
function cm.initial_effect(c) function cm.initial_effect(c)
local e1=rsef.STO(c,EVENT_SUMMON_SUCCESS,{m,0},{1,m},"se,th","de,dsp",nil,nil,rsop.target(cm.thfilter,"th",LOCATION_DECK),cm.thop) local e1=rsef.STO(c,EVENT_SUMMON_SUCCESS,{m,0},{1,m},"se,th","de,dsp",nil,nil,rsop.target(cm.thfilter,"th",LOCATION_DECK),cm.thop)
......
...@@ -7,7 +7,8 @@ ...@@ -7,7 +7,8 @@
local Version_Number = "2022.11.02" local Version_Number = "2022.11.02"
if not pcall(function() dofile("expansions/script/c10100000.lua") end) then dofile("script/c10100000.lua") end Duel.LoadScript("c10100000.lua")
Duel.LoadScript("c11410000.lua")
if rsv then return end if rsv then return end
local s = {} local s = {}
rsv = { } --"Base Function" rsv = { } --"Base Function"
...@@ -43,7 +44,7 @@ rscode.Phase_Leave_Flag = FLAG_PHASE_OPERATE_SCL ...@@ -43,7 +44,7 @@ rscode.Phase_Leave_Flag = FLAG_PHASE_OPERATE_SCL
rscode.Extra_Synchro_Material = EFFECT_EXTRA_SYNCHRO_MATERIAL_SCL rscode.Extra_Synchro_Material = EFFECT_EXTRA_SYNCHRO_MATERIAL_SCL
rscode.Extra_Xyz_Material = EFFECT_EXTRA_XYZ_MATERIAL_SCL rscode.Extra_Xyz_Material = EFFECT_EXTRA_XYZ_MATERIAL_SCL
rscode.Utility_Xyz_Material = EFFECT_UTILITY_XYZ_MATERIAL_SCL rscode.Utility_Xyz_Material = EFFECT_UTILITY_XYZ_MATERIAL_SCL
rscode.Previous_Set_Code = FLAG_PREVIOUS_XYZ_MATERIAL_SCL rscode.Previous_Set_Code = FLAG_PREVIOUS_XYZ_MATERIAL_SCL
rscode.Pre_Complete_Proc = EFFECT_COMPLETE_SUMMON_PROC_SCL rscode.Pre_Complete_Proc = EFFECT_COMPLETE_SUMMON_PROC_SCL
rscode.Set = EVENT_SET_SCL rscode.Set = EVENT_SET_SCL
...@@ -64,103 +65,103 @@ rsloc.all = 0xff ...@@ -64,103 +65,103 @@ rsloc.all = 0xff
s.sum_list = { s.sum_list = {
["sp"] = "SpecialSummon", ["adv"] = "TributeSummon", ["rit"] = "RitualSummon" ["sp"] = "SpecialSummon", ["adv"] = "TributeSummon", ["rit"] = "RitualSummon"
, ["fus"] = "FusionSummon", ["syn"] = "SynchroSummon", ["xyz"] = "XyzSummon" , ["fus"] = "FusionSummon", ["syn"] = "SynchroSummon", ["xyz"] = "XyzSummon"
, ["link"] = "LinkSummon", ["pen"] = "PendulumSummon" , ["link"] = "LinkSummon", ["pen"] = "PendulumSummon"
} }
s.flag_list = { s.flag_list = {
["tg"] = "Target", ["ptg"] = "PlayerTarget", ["de"] = "Delay", ["dsp"] = "DamageStep" ["tg"] = "Target", ["ptg"] = "PlayerTarget", ["de"] = "Delay", ["dsp"] = "DamageStep"
, ["dcal"] = "DamageCalculation", ["ii"] = "IgnoreImmune", ["sa"] = "SetAvailable", ["ir"] = "IgnoreZone" , ["dcal"] = "DamageCalculation", ["ii"] = "IgnoreImmune", ["sa"] = "SetAvailable", ["ir"] = "IgnoreZone"
, ["sr"] = "BuffZone", ["bs"] = "BothSide", ["uc"] = "Uncopyable" , ["sr"] = "BuffZone", ["bs"] = "BothSide", ["uc"] = "Uncopyable"
, ["ch"] = "ClientHint", ["lz"] = "LimitActivateZone", ["atg"] = "AbsoluteTarget" , ["ch"] = "ClientHint", ["lz"] = "LimitActivateZone", ["atg"] = "AbsoluteTarget"
, ["sp"] = "SummonParama", ["ep"] = "EventPlayer", ["oa"] = "Oath" , ["ntr"] = "NoTurnReset" , ["sp"] = "SummonParama", ["ep"] = "EventPlayer", ["oa"] = "Oath" , ["ntr"] = "NoTurnReset"
, ["neg~"] = "!NegateActivation" , ["neg~"] = "!NegateActivation"
, ["cn"] = "!NegateEffect", ["dise~"] = "!NegateEffect2" , ["cn"] = "!NegateEffect", ["dise~"] = "!NegateEffect2"
, ["cd"] = "!NegateEffect" , ["dis~"] = "!NegateEffect" , ["cd"] = "!NegateEffect" , ["dis~"] = "!NegateEffect"
} }
s.ctgy_list = { s.ctgy_list = {
["des"] = "Destroy" ["des"] = "Destroy"
, ["rdes"] = "DestroyReplace" , ["rdes"] = "DestroyReplace"
, ["res"] = "Tribute" , ["res"] = "Tribute"
, ["rm"] = "Banish" , ["rm"] = "Banish"
, ["rmd"] = "BanishFacedown" , ["rmd"] = "BanishFacedown"
, ["se"] = "Search" , ["se"] = "Search"
, ["th"] = "Add2Hand" , ["th"] = "Add2Hand"
, ["rth"] = "Return2Hand" , ["rth"] = "Return2Hand"
, ["td"] = "ShuffleIn2Deck" , ["td"] = "ShuffleIn2Deck"
, ["tdt"] = "ShuffleIn2DeckTop" , ["tdt"] = "ShuffleIn2DeckTop"
, ["tdb"] = "ShuffleIn2DeckBottom" , ["tdb"] = "ShuffleIn2DeckBottom"
, ["ptdt"] = "PlaceOnDeckTop" , ["ptdt"] = "PlaceOnDeckTop"
, ["ptdb"] = "PlaceOnDeckBottom" , ["ptdb"] = "PlaceOnDeckBottom"
, ["te"] = "Return2Extra" , ["te"] = "Return2Extra"
, ["tde"] = "ShuffleIn2Deck/ExtraAsCost" , ["tde"] = "ShuffleIn2Deck/ExtraAsCost"
, ["pte"] = "Add2ExtraFaceup" , ["pte"] = "Add2ExtraFaceup"
, ["tg"] = "Send2GY" , ["tg"] = "Send2GY"
, ["rtg"] = "Return2GY" , ["rtg"] = "Return2GY"
, ["dtg"] = "Discard2GY" , ["dtg"] = "Discard2GY"
, ["dish"] = "Discard" , ["dish"] = "Discard"
, ["dh"] = "Discard" , ["dh"] = "Discard"
, ["dishf"] = "DiscardWithFilter" , ["dishf"] = "DiscardWithFilter"
, ["dhf"] = "DiscardWithFilter" , ["dhf"] = "DiscardWithFilter"
, ["disd"] = "SendDeckTop2GY" , ["disd"] = "SendDeckTop2GY"
, ["dd"] = "SendDeckTop2GY" , ["dd"] = "SendDeckTop2GY"
, ["dr"] = "Draw" , ["dr"] = "Draw"
, ["dam"] = "Damage" , ["dam"] = "Damage"
, ["rec"] = "GainLP" , ["rec"] = "GainLP"
, ["sum"] = "NormalSummon" , ["sum"] = "NormalSummon"
, ["tk"] = "Token" , ["tk"] = "Token"
, ["sp"] = "SpecialSummon" , ["sp"] = "SpecialSummon"
, ["cp"] = "ChangePosition" , ["cp"] = "ChangePosition"
, ["pos"] = "ChangePosition" , ["pos"] = "ChangePosition"
, ["upa"] = "Change2AttackPosition" , ["upa"] = "Change2AttackPosition"
, ["upd"] = "Change2FaceupDefensePosition" , ["upd"] = "Change2FaceupDefensePosition"
, ["dpd"] = "Change2FacedownDefensePosition" , ["dpd"] = "Change2FacedownDefensePosition"
, ["posd"] = "Change2DefensePosition" , ["posd"] = "Change2DefensePosition"
, ["ctrl"] = "ChangeControl" , ["ctrl"] = "ChangeControl"
, ["con"] = "ChangeControl" , ["con"] = "ChangeControl"
, ["sctrl"] = "SwitchControl" , ["sctrl"] = "SwitchControl"
, ["dis"] = "NegateEffect" , ["dis"] = "NegateEffect"
, ["diss"] = "NegateSummon" , ["diss"] = "NegateSummon"
, ["neg"] = "NegateActivation" , ["neg"] = "NegateActivation"
, ["eq"] = "Equip" , ["eq"] = "Equip"
, ["atk"] = "ChangeATK" , ["atk"] = "ChangeATK"
, ["def"] = "ChangeDEF" , ["def"] = "ChangeDEF"
, ["ct"] = "PlaceCounter" , ["ct"] = "PlaceCounter"
, ["pct"] = "PlaceCounter" , ["pct"] = "PlaceCounter"
, ["rmct"] = "RemoveCounter" , ["rmct"] = "RemoveCounter"
, ["coin"] = "TossCoin" , ["coin"] = "TossCoin"
, ["dice"] = "TossDice" , ["dice"] = "TossDice"
, ["an"] = "AnnounceCard" , ["an"] = "AnnounceCard"
, ["lv"] = "ChangLevel" , ["lv"] = "ChangLevel"
, ["fus"] = "FusionSummon" , ["fus"] = "FusionSummon"
, ["ga"] = "GYAction" , ["ga"] = "GYAction"
, ["gsp"] = "SpecialSummonFromGY" , ["gsp"] = "SpecialSummonFromGY"
, ["lg"] = "LeaveGY" , ["lg"] = "LeaveGY"
, ["cf"] = "Look" , ["cf"] = "Look"
, ["rv"] = "Reveal" , ["rv"] = "Reveal"
, ["rvep"] = "RevealUntilEP" , ["rvep"] = "RevealUntilEP"
, ["tf"] = "PlaceOnField" , ["tf"] = "PlaceOnField"
, ["act"] = "ActivateCard" , ["act"] = "ActivateCard"
, ["rf"] = "Return2Field" , ["rf"] = "Return2Field"
, ["rtf"] = "Return2Field" , ["rtf"] = "Return2Field"
, ["ae"] = "ApplyEffect" , ["ae"] = "ApplyEffect"
, ["set"] = "SetSpell/Trap" , ["set"] = "SetSpell/Trap"
, ["sset"] = "SetSpell/Trap" , ["sset"] = "SetSpell/Trap"
, ["xmat"] = "AttachXyzMaterial" , ["xmat"] = "AttachXyzMaterial"
, ["axmat"] = "AttachXyzMaterial" , ["axmat"] = "AttachXyzMaterial"
, ["rxmat"] = "DetachXyzMaterial" , ["rxmat"] = "DetachXyzMaterial"
, ["rmxmat"] = "DetachXyzMaterial" , ["rmxmat"] = "DetachXyzMaterial"
, ["ms"] = "MoveZone" , ["ms"] = "MoveZone"
, ["dum"] = "Dummy" , ["dum"] = "Dummy"
, ["self"] = "Self" , ["self"] = "Self"
, ["oppo"] = "Opponent" , ["oppo"] = "Opponent"
} }
...@@ -296,7 +297,7 @@ rsef.CreatEvent_Set = Scl.RaiseGlobalSetEvent ...@@ -296,7 +297,7 @@ rsef.CreatEvent_Set = Scl.RaiseGlobalSetEvent
rsef.SetChainLimit= Scl.SetChainLimit rsef.SetChainLimit= Scl.SetChainLimit
s.clone_list = { s.clone_list = {
["code"] = "Code", ["desc"] = "Description", ["flag"] = "Property", ["cate"] = "Category", ["code"] = "Code", ["desc"] = "Description", ["flag"] = "Property", ["cate"] = "Category",
["reset"] = "Reset", ["type"] = "Type", ["con"] = "Condition", ["tg"] = "Target", ["cost"] = "Cost", ["reset"] = "Reset", ["type"] = "Type", ["con"] = "Condition", ["tg"] = "Target", ["cost"] = "Cost",
["op"] = "Operation", ["value"] = "Value", ["loc"] = "Zone", ["tgrng"] = "TargetRange" ["op"] = "Operation", ["value"] = "Value", ["loc"] = "Zone", ["tgrng"] = "TargetRange"
} }
...@@ -316,21 +317,21 @@ rsef.QO_OPPONENT_TURN = Scl.CloneEffectAsQucikEffect ...@@ -316,21 +317,21 @@ rsef.QO_OPPONENT_TURN = Scl.CloneEffectAsQucikEffect
rsef.RegisterSolve = Scl.RegisterSolvePart rsef.RegisterSolve = Scl.RegisterSolvePart
Effect.RegisterSolve = Scl.RegisterSolvePart Effect.RegisterSolve = Scl.RegisterSolvePart
function s.get_default_range(reg_obj) function s.get_default_range(reg_obj)
local reg_range local reg_range
local reg_owner, reg_handler = Scl.GetRegisterInfo(reg_obj) local reg_owner, reg_handler = Scl.GetRegisterInfo(reg_obj)
if aux.GetValueType(reg_handler) ~= "Card" then return nil end if aux.GetValueType(reg_handler) ~= "Card" then return nil end
--(TYPE_PENDULUM , LOCATION_PZONE must manual input) --(TYPE_PENDULUM , LOCATION_PZONE must manual input)
local type_list = { TYPE_MONSTER, TYPE_FIELD, TYPE_SPELL + TYPE_TRAP } local type_list = { TYPE_MONSTER, TYPE_FIELD, TYPE_SPELL + TYPE_TRAP }
local reg_obj = { LOCATION_MZONE, LOCATION_FZONE, LOCATION_SZONE } local reg_obj = { LOCATION_MZONE, LOCATION_FZONE, LOCATION_SZONE }
for idx, card_type in pairs(type_list) do for idx, card_type in pairs(type_list) do
if reg_handler:IsType(card_type) then if reg_handler:IsType(card_type) then
reg_range = reg_obj[idx] reg_range = reg_obj[idx]
break break
end end
end end
--after begain duel --after begain duel
--if Duel.GetTurnCount() > 0 then reg_range = reg_handler:GetLocation() end --if Duel.GetTurnCount() > 0 then reg_range = reg_handler:GetLocation() end
return reg_range return reg_range
end end
function s.switch_old_string(desc_obj, ctgy, flag, buff_code) function s.switch_old_string(desc_obj, ctgy, flag, buff_code)
local desc_obj2 = type(desc_obj) == "string" and s.ctgy_list[desc_obj] or desc_obj local desc_obj2 = type(desc_obj) == "string" and s.ctgy_list[desc_obj] or desc_obj
...@@ -524,7 +525,7 @@ function rsef.FV_ExtraMaterial_Self(reg_obj, mat, val_obj, tg, tgrng_obj, con, r ...@@ -524,7 +525,7 @@ function rsef.FV_ExtraMaterial_Self(reg_obj, mat, val_obj, tg, tgrng_obj, con, r
elseif mat == "link" then elseif mat == "link" then
att = "ExtraLinkMaterial" att = "ExtraLinkMaterial"
end end
local val_obj2 = val_obj or { function(e, c, mg) return c == e:GetHandler(), true end } local val_obj2 = val_obj or { function(e, c, mg) return c == e:GetHandler(), true end }
local _, _, flag2 = s.switch_old_string(0, 0, flag) local _, _, flag2 = s.switch_old_string(0, 0, flag)
local lim_obj2 = s.switch_old_count_limit(lim_obj) local lim_obj2 = s.switch_old_count_limit(lim_obj)
return Scl.CreateFieldBuffEffect(reg_obj, att, val_obj2, tg, tgrng_obj, LOCATION_EXTRA, con, rst_obj, desc_obj, lim_obj2, flag2) return Scl.CreateFieldBuffEffect(reg_obj, att, val_obj2, tg, tgrng_obj, LOCATION_EXTRA, con, rst_obj, desc_obj, lim_obj2, flag2)
...@@ -565,7 +566,7 @@ end ...@@ -565,7 +566,7 @@ end
function rsef.STO_Flip(reg_obj, desc_obj, lim_obj, ctgy, flag, con, cost, tg, op, rst_obj) function rsef.STO_Flip(reg_obj, desc_obj, lim_obj, ctgy, flag, con, cost, tg, op, rst_obj)
local desc_obj2, ctgy2, flag2 = s.switch_old_string(desc_obj, ctgy, flag) local desc_obj2, ctgy2, flag2 = s.switch_old_string(desc_obj, ctgy, flag)
local lim_obj2 = s.switch_old_count_limit(lim_obj) local lim_obj2 = s.switch_old_count_limit(lim_obj)
return Scl.CreateFlipOptionalEffect(reg_obj, desc_obj2, lim_obj2, ctgy2, flag2, con, cost, tg, op, rst_obj) return Scl.CreateFlipOptionalEffect(reg_obj, desc_obj2, lim_obj2, ctgy2, flag2, con, cost, tg, op, rst_obj)
end end
function rsef.STF_Flip(reg_obj, desc_obj, lim_obj, ctgy, flag, con, cost, tg, op, rst_obj) function rsef.STF_Flip(reg_obj, desc_obj, lim_obj, ctgy, flag, con, cost, tg, op, rst_obj)
local desc_obj2, ctgy2, flag2 = s.switch_old_string(desc_obj, ctgy, flag) local desc_obj2, ctgy2, flag2 = s.switch_old_string(desc_obj, ctgy, flag)
...@@ -633,7 +634,7 @@ function rsef.SC(reg_obj, code, desc_obj, lim_obj, flag, con, op, rst_obj) ...@@ -633,7 +634,7 @@ function rsef.SC(reg_obj, code, desc_obj, lim_obj, flag, con, op, rst_obj)
return Scl.CreateSingleTriggerContinousEffect(reg_obj, code, desc_obj, lim_obj2, flag2, con, op, rst_obj) return Scl.CreateSingleTriggerContinousEffect(reg_obj, code, desc_obj, lim_obj2, flag2, con, op, rst_obj)
end end
function rsef.SC_Easy(reg_obj, code, flag, con, op, reset_obj) function rsef.SC_Easy(reg_obj, code, flag, con, op, reset_obj)
return rsef.SC(reg_obj, code, nil, nil, flag, con, op, reset_obj) return rsef.SC(reg_obj, code, nil, nil, flag, con, op, reset_obj)
end end
function rsef.SC_DestroyReplace(reg_obj, lim_obj, repfilter, tg, op, con, flag, rst_obj) function rsef.SC_DestroyReplace(reg_obj, lim_obj, repfilter, tg, op, con, flag, rst_obj)
local _, _, flag2 = s.switch_old_string(0, 0, flag) local _, _, flag2 = s.switch_old_string(0, 0, flag)
...@@ -725,26 +726,26 @@ rstg.token = scl.target_special_summon_token ...@@ -725,26 +726,26 @@ rstg.token = scl.target_special_summon_token
rssf.CheckTokenSummonable = Scl.IsCanSpecialSummonToken rssf.CheckTokenSummonable = Scl.IsCanSpecialSummonToken
rssf.SpecialSummonToken = Scl.SpecialSummonToken rssf.SpecialSummonToken = Scl.SpecialSummonToken
function rstg.neg(dn_str, ex_tg) function rstg.neg(dn_str, ex_tg)
return function(e, tp, eg, ep, ev, re, r, rp, chk, chkc) return function(e, tp, eg, ep, ev, re, r, rp, chk, chkc)
dn_str = dn_str or "dum" dn_str = dn_str or "dum"
local dn_str2 = s.ctgy_list[dn_str] local dn_str2 = s.ctgy_list[dn_str]
local c = e:GetHandler() local c = e:GetHandler()
local rc = re:GetHandler() local rc = re:GetHandler()
ex_tg = ex_tg or aux.TRUE ex_tg = ex_tg or aux.TRUE
if chkc then return ex_tg(e, tp, eg, ep, ev, re, r, rp, chk, chkc) end if chkc then return ex_tg(e, tp, eg, ep, ev, re, r, rp, chk, chkc) end
if chk == 0 then return (dn_str ~= "rm" or aux.nbcon(tp, re)) and (ex_tg(e, tp, eg, ep, ev, re, r, rp, chk, chkc)) end if chk == 0 then return (dn_str ~= "rm" or aux.nbcon(tp, re)) and (ex_tg(e, tp, eg, ep, ev, re, r, rp, chk, chkc)) end
local op_cate = Scl.Category_List[dn_str2][2] local op_cate = Scl.Category_List[dn_str2][2]
local ctgy_list = type(op_cate) == "number" and {op_cate} or op_cate local ctgy_list = type(op_cate) == "number" and {op_cate} or op_cate
if #ctgy_list > 0 and rc:IsRelateToEffect(re) then if #ctgy_list > 0 and rc:IsRelateToEffect(re) then
local res = Scl.OperateSelectedObjects(eg, dn_str2, REASON_EFFECT, 0, e, tp, eg, ep, ev, re, r, rp)() local res = Scl.OperateSelectedObjects(eg, dn_str2, REASON_EFFECT, 0, e, tp, eg, ep, ev, re, r, rp)()
if res then if res then
for ctgy in pairs(ctgy_list) do for ctgy in pairs(ctgy_list) do
Duel.SetOperationInfo(0, ctgy, eg, 1, 0, 0) Duel.SetOperationInfo(0, ctgy, eg, 1, 0, 0)
end end
end end
end end
ex_tg(e, tp, eg, ep, ev, re, r, rp, 1) ex_tg(e, tp, eg, ep, ev, re, r, rp, 1)
end end
end end
function rsop.neg(dn_str, ex_op) function rsop.neg(dn_str, ex_op)
return function(...) return function(...)
...@@ -760,11 +761,11 @@ function rsop.dis(dn_str, ex_op) ...@@ -760,11 +761,11 @@ function rsop.dis(dn_str, ex_op)
end end
function s.get_effect_array(checkfun, endfun, list_typ, a1, a2, a3, ...) function s.get_effect_array(checkfun, endfun, list_typ, a1, a2, a3, ...)
local arr = { } local arr = { }
if type(a1) == "table" and (not a2 or (type(a2) == "table" )) and (not a3 or type(a3) == "table") then if type(a1) == "table" and (not a2 or (type(a2) == "table" )) and (not a3 or type(a3) == "table") then
arr = { a1, a2, a3, ... } arr = { a1, a2, a3, ... }
else else
arr = { { a1, a2, a3, ... } } arr = { { a1, a2, a3, ... } }
end end
local cache_arr = Scl.CloneArray(arr) local cache_arr = Scl.CloneArray(arr)
--boom nil --boom nil
for idx, arr2 in pairs(arr) do for idx, arr2 in pairs(arr) do
...@@ -1048,31 +1049,31 @@ function rscon.excard2(...) ...@@ -1048,31 +1049,31 @@ function rscon.excard2(...)
end end
end end
function rscon.sumtolz(link_filter, sum_filter) function rscon.sumtolz(link_filter, sum_filter)
return function(e, tp, eg, ep, ev, re, r, rp) return function(e, tp, eg, ep, ev, re, r, rp)
local c = e:GetHandler() local c = e:GetHandler()
local zone = 0 local zone = 0
local link_group = Group.CreateGroup() local link_group = Group.CreateGroup()
if rsof.Check_Boolean(link_filter) then if rsof.Check_Boolean(link_filter) then
link_group = rsgf.Mix2(c) link_group = rsgf.Mix2(c)
else else
link_group = Duel.GetMatchingGroup(link_filter, tp, LOCATION_MZONE, LOCATION_MZONE, nil, e, tp, eg, ep, ev, re, rp) link_group = Duel.GetMatchingGroup(link_filter, tp, LOCATION_MZONE, LOCATION_MZONE, nil, e, tp, eg, ep, ev, re, rp)
end end
for tc in aux.Next(link_group) do for tc in aux.Next(link_group) do
zone = zone | tc:GetLinkedZone(tp) zone = zone | tc:GetLinkedZone(tp)
end end
return eg:IsExists(rscon.sumtolz_filter, 1, nil, zone, sum_filter, e, tp, eg, ep, ev, re, rp) return eg:IsExists(rscon.sumtolz_filter, 1, nil, zone, sum_filter, e, tp, eg, ep, ev, re, rp)
end end
end end
function rscon.sumtolz_filter(c, zone, sum_filter, e, tp, eg, ep, ev, re, rp) function rscon.sumtolz_filter(c, zone, sum_filter, e, tp, eg, ep, ev, re, rp)
if sum_filter and not sum_filter(c, e, tp, eg, ep, ev, re, rp) then return false end if sum_filter and not sum_filter(c, e, tp, eg, ep, ev, re, rp) then return false end
local seq = c:GetSequence() local seq = c:GetSequence()
if c:IsLocation(LOCATION_MZONE) then if c:IsLocation(LOCATION_MZONE) then
if c:IsControler(1 - tp) then seq = seq + 16 end if c:IsControler(1 - tp) then seq = seq + 16 end
else else
seq = c:GetPreviousSequence() seq = c:GetPreviousSequence()
if c:GetPreviousControler() == 1 - tp then seq = seq + 16 end if c:GetPreviousControler() == 1 - tp then seq = seq + 16 end
end end
return bit.extract(zone, seq) ~= 0 return bit.extract(zone, seq) ~= 0
end end
function rsop.SelectExPara(a1, ...) function rsop.SelectExPara(a1, ...)
return Scl.SetExtraSelectAndOperateParama(s.ctgy_list[a1], ...) return Scl.SetExtraSelectAndOperateParama(s.ctgy_list[a1], ...)
...@@ -1107,15 +1108,15 @@ end ...@@ -1107,15 +1108,15 @@ end
rsop.GetOperatedCorrectlyCount = Scl.GetCorrectlyOperatedCount rsop.GetOperatedCorrectlyCount = Scl.GetCorrectlyOperatedCount
rsop.CheckOperateCorrectly = Scl.IsCorrectlyOperated rsop.CheckOperateCorrectly = Scl.IsCorrectlyOperated
function rsop.ToDeckDraw(dp, dct, is_break, check_count) function rsop.ToDeckDraw(dp, dct, is_break, check_count)
local res, ct, g = rsop.CheckOperateCorrectly(rsloc.de, check_count) local res, ct, g = rsop.CheckOperateCorrectly(rsloc.de, check_count)
if not res then return 0 end if not res then return 0 end
if g:IsExists(Card.IsLocation, 1, nil, LOCATION_DECK) then if g:IsExists(Card.IsLocation, 1, nil, LOCATION_DECK) then
Duel.ShuffleDeck(dp) Duel.ShuffleDeck(dp)
end end
if is_break then if is_break then
Duel.BreakEffect() Duel.BreakEffect()
end end
return Duel.Draw(dp, dct, REASON_EFFECT) return Duel.Draw(dp, dct, REASON_EFFECT)
end end
rsop.SendtoHand = Scl.Send2Hand rsop.SendtoHand = Scl.Send2Hand
function rsop.MoveToField_Activate(tc, movep, targetp, zone, pos, enable, zone) function rsop.MoveToField_Activate(tc, movep, targetp, zone, pos, enable, zone)
...@@ -1155,26 +1156,26 @@ function rscf.DefineCard(code, inside_series_str) ...@@ -1155,26 +1156,26 @@ function rscf.DefineCard(code, inside_series_str)
return m, cm return m, cm
end end
function rscf.DefineSet(setmeta, seriesstring, type_int) function rscf.DefineSet(setmeta, seriesstring, type_int)
local prefixlist1 = { "", "Fus", "Link", "Pre", "Ori" } local prefixlist1 = { "", "Fus", "Link", "Pre", "Ori" }
local prefixlist1_fun = { "", "Fusion", "Link", "Previous", "Original" } local prefixlist1_fun = { "", "Fusion", "Link", "Previous", "Original" }
local prefixlist2 = { "", "M", "S", "T", "ST" } local prefixlist2 = { "", "M", "S", "T", "ST" }
local prefixlist2_fun = { nil, TYPE_MONSTER, TYPE_SPELL, TYPE_TRAP, TYPE_SPELL + TYPE_TRAP } local prefixlist2_fun = { nil, TYPE_MONSTER, TYPE_SPELL, TYPE_TRAP, TYPE_SPELL + TYPE_TRAP }
local suffixlist1 = { "", "_th", "_tg", "_td", "_rm", "_sp1", "_sp2" } local suffixlist1 = { "", "_th", "_tg", "_td", "_rm", "_sp1", "_sp2" }
local suffixlist1_fun = { nil, Card.IsAbleToHand, Card.IsAbleToGrave, Card.IsAbleToDeck, Card.IsAbleToRemove, rscf.spfilter(), rscf.spfilter2() } local suffixlist1_fun = { nil, Card.IsAbleToHand, Card.IsAbleToGrave, Card.IsAbleToDeck, Card.IsAbleToRemove, rscf.spfilter(), rscf.spfilter2() }
type_int = type_int or "" type_int = type_int or ""
for idx1, prefix1 in pairs(prefixlist1) do for idx1, prefix1 in pairs(prefixlist1) do
for idx2, prefix2 in pairs(prefixlist2) do for idx2, prefix2 in pairs(prefixlist2) do
for idx3, suffix1 in pairs(suffixlist1) do for idx3, suffix1 in pairs(suffixlist1) do
setmeta["Is"..prefix1.."Set"..prefix2..type_int..suffix1] = rscf.DefineSet_Fun(prefixlist1_fun[idx1], prefixlist2_fun[idx2], suffixlist1_fun[idx3], seriesstring) setmeta["Is"..prefix1.."Set"..prefix2..type_int..suffix1] = rscf.DefineSet_Fun(prefixlist1_fun[idx1], prefixlist2_fun[idx2], suffixlist1_fun[idx3], seriesstring)
end end
end end
end end
end end
function rscf.DefineSet_Fun(prefix1, prefix2, suffix1, seriesstring) function rscf.DefineSet_Fun(prefix1, prefix2, suffix1, seriesstring)
return function(c, ...) return function(c, ...)
return rscf["Check"..prefix1.."SetCard"](c, seriesstring) and (not prefix2 or c:IsType(prefix2)) return rscf["Check"..prefix1.."SetCard"](c, seriesstring) and (not prefix2 or c:IsType(prefix2))
and (not suffix1 or suffix1(c, ...)) and (not suffix1 or suffix1(c, ...))
end end
end end
function s.get_quick_buff_new_arr(...) function s.get_quick_buff_new_arr(...)
local arr = { ... } local arr = { ... }
...@@ -1249,10 +1250,10 @@ rscf.IsDarkSynchro = Scl.IsDarkSynchro ...@@ -1249,10 +1250,10 @@ rscf.IsDarkSynchro = Scl.IsDarkSynchro
rscf.IsDarkTuner = Scl.IsDarkTuner rscf.IsDarkTuner = Scl.IsDarkTuner
rscf.DarkTuner = Scl.DarkTuner rscf.DarkTuner = Scl.DarkTuner
function rscf.fufilter(f, ...) function rscf.fufilter(f, ...)
local ext_paramms = { ... } local ext_paramms = { ... }
return function(target) return function(target)
return f(target, table.unpack(ext_paramms)) and target:IsFaceup() return f(target, table.unpack(ext_paramms)) and target:IsFaceup()
end end
end end
function rscf.spfilter(f1, ...) function rscf.spfilter(f1, ...)
local list = { ... } local list = { ... }
...@@ -1524,200 +1525,200 @@ function rsgf.SelectOperate(sel_hint, g, sp, filter, minct, maxct, except_obj, s ...@@ -1524,200 +1525,200 @@ function rsgf.SelectOperate(sel_hint, g, sp, filter, minct, maxct, except_obj, s
end end
function rsef.INDESTRUCTABLE_List(inds_list) function rsef.INDESTRUCTABLE_List(inds_list)
local inds_list2 = string.gsub(inds_list, "battle", "indb") local inds_list2 = string.gsub(inds_list, "battle", "indb")
inds_list2 = string.gsub(inds_list2, "effect", "inde") inds_list2 = string.gsub(inds_list2, "effect", "inde")
inds_list2 = string.gsub(inds_list2, "ct", "indct") inds_list2 = string.gsub(inds_list2, "ct", "indct")
inds_list2 = string.gsub(inds_list2, "all", "ind") inds_list2 = string.gsub(inds_list2, "all", "ind")
return inds_list2 return inds_list2
end end
--Single Val Effect: Cannot destroed --Single Val Effect: Cannot destroed
function rsef.SV_INDESTRUCTABLE(reg_list, inds_list, val_list, con, reset_list, flag, desc_list, lim_list) function rsef.SV_INDESTRUCTABLE(reg_list, inds_list, val_list, con, reset_list, flag, desc_list, lim_list)
local inds_list2 = rsef.INDESTRUCTABLE_List(inds_list) local inds_list2 = rsef.INDESTRUCTABLE_List(inds_list)
return rsef.SV_Card(reg_list, inds_list2, val_list, nil, flag, con, reset_list, desc_list, lim_list) return rsef.SV_Card(reg_list, inds_list2, val_list, nil, flag, con, reset_list, desc_list, lim_list)
end end
--Field Val Effect: Cannot destroed --Field Val Effect: Cannot destroed
function rsef.FV_INDESTRUCTABLE(reg_list, inds_list, val_list, tg, tg_range_list, con, reset_list, flag, desc_list) function rsef.FV_INDESTRUCTABLE(reg_list, inds_list, val_list, tg, tg_range_list, con, reset_list, flag, desc_list)
local inds_list2 = rsef.INDESTRUCTABLE_List(inds_list) local inds_list2 = rsef.INDESTRUCTABLE_List(inds_list)
return rsef.FV_Card(reg_list, inds_list2, val_list, tg, tg_range_list, flag, nil, con, reset_list, desc_list, lim_list) return rsef.FV_Card(reg_list, inds_list2, val_list, tg, tg_range_list, flag, nil, con, reset_list, desc_list, lim_list)
end end
--Single Val Effect: Immue effects --Single Val Effect: Immue effects
function rsef.SV_IMMUNE_EFFECT(reg_list, val, con, reset_list, flag, desc_list) function rsef.SV_IMMUNE_EFFECT(reg_list, val, con, reset_list, flag, desc_list)
return rsef.SV_Card(reg_list, "im", val, flag, nil, con, reset_list, desc_list) return rsef.SV_Card(reg_list, "im", val, flag, nil, con, reset_list, desc_list)
end end
--Field Val Effect: Immue effects --Field Val Effect: Immue effects
function rsef.FV_IMMUNE_EFFECT(reg_list, val, tg, tg_range_list, con, reset_list, flag, desc_list) function rsef.FV_IMMUNE_EFFECT(reg_list, val, tg, tg_range_list, con, reset_list, flag, desc_list)
return rsef.FV_Card(reg_list, "im", val, tg, tg_range_list, flag, nil, con, reset_list, desc_list) return rsef.FV_Card(reg_list, "im", val, tg, tg_range_list, flag, nil, con, reset_list, desc_list)
end end
--Single Val Effect: Directly set ATK & DEF --Single Val Effect: Directly set ATK & DEF
function rsef.SV_SET(reg_list, set_list, val_list, con, reset_list, flag, desc_list) function rsef.SV_SET(reg_list, set_list, val_list, con, reset_list, flag, desc_list)
return rsef.SV_Card(reg_list, set_list, val_list, flag, nil, con, reset_list, desc_list) return rsef.SV_Card(reg_list, set_list, val_list, flag, nil, con, reset_list, desc_list)
end end
--Single Val Effect: Directly set other card attribute, except ATK & DEF --Single Val Effect: Directly set other card attribute, except ATK & DEF
function rsef.SV_CHANGE(reg_list, change_list, val_list, con, reset_list, flag, desc_list) function rsef.SV_CHANGE(reg_list, change_list, val_list, con, reset_list, flag, desc_list)
return rsef.SV_Card(reg_list, change_list, val_list, flag, nil, con, reset_list, desc_list) return rsef.SV_Card(reg_list, change_list, val_list, flag, nil, con, reset_list, desc_list)
end end
--Field Val Effect: Directly set other card attribute, except ATK & DEF --Field Val Effect: Directly set other card attribute, except ATK & DEF
function rsef.FV_CHANGE(reg_list, change_list, val_list, tg, tg_range_list, con, reset_list, flag, desc_list) function rsef.FV_CHANGE(reg_list, change_list, val_list, tg, tg_range_list, con, reset_list, flag, desc_list)
return rsef.FV_Card(reg_list, change_list, val_list, tg, tg_range_list, flag, nil, con, reset_list, desc_list) return rsef.FV_Card(reg_list, change_list, val_list, tg, tg_range_list, flag, nil, con, reset_list, desc_list)
end end
--Single Val Effect: Update attribute --Single Val Effect: Update attribute
function rsef.SV_UPDATE(reg_list, up_list, val_list, con, reset_list, flag, desc_list) function rsef.SV_UPDATE(reg_list, up_list, val_list, con, reset_list, flag, desc_list)
local str_list = Scl.UniformSclParamaFormat(up_list) local str_list = Scl.UniformSclParamaFormat(up_list)
local str = "" local str = ""
for idx, string in pairs(str_list) do for idx, string in pairs(str_list) do
if idx > 1 then if idx > 1 then
str = str .. "," str = str .. ","
end end
str = str .. string .. "+" str = str .. string .. "+"
end end
return rsef.SV_Card(reg_list, str, val_list, flag, nil, con, reset_list, desc_list) return rsef.SV_Card(reg_list, str, val_list, flag, nil, con, reset_list, desc_list)
end end
--Field Val Effect: Updata some card attributes --Field Val Effect: Updata some card attributes
function rsef.FV_UPDATE(reg_list, up_list, val_list, tg, tg_range_list, con, reset_list, flag, desc_list) function rsef.FV_UPDATE(reg_list, up_list, val_list, tg, tg_range_list, con, reset_list, flag, desc_list)
local str_list = Scl.UniformSclParamaFormat(up_list) local str_list = Scl.UniformSclParamaFormat(up_list)
local str = "" local str = ""
for idx, string in pairs(str_list) do for idx, string in pairs(str_list) do
if idx > 1 then if idx > 1 then
str = str .. "," str = str .. ","
end end
str = str .. string .. "+" str = str .. string .. "+"
end end
return rsef.FV_Card(reg_list, str, val_list, tg, tg_range_list, flag, nil, con, reset_list, desc_list) return rsef.FV_Card(reg_list, str, val_list, tg, tg_range_list, flag, nil, con, reset_list, desc_list)
end end
--Single Val Effect: Add attribute --Single Val Effect: Add attribute
function rsef.SV_ADD(reg_list, add_list, val_list, con, reset_list, flag, desc_list) function rsef.SV_ADD(reg_list, add_list, val_list, con, reset_list, flag, desc_list)
return rsef.SV_UPDATE(reg_list, add_list, val_list, flag, nil, con, reset_list, desc_list) return rsef.SV_UPDATE(reg_list, add_list, val_list, flag, nil, con, reset_list, desc_list)
end end
--Field Val Effect: Directly set other card attribute, except ATK & DEF --Field Val Effect: Directly set other card attribute, except ATK & DEF
function rsef.FV_ADD(reg_list, add_list, val_list, tg, tg_range_list, con, reset_list, flag, desc_list) function rsef.FV_ADD(reg_list, add_list, val_list, tg, tg_range_list, con, reset_list, flag, desc_list)
return rsef.FV_UPDATE(reg_list, add_list, val_list, tg, tg_range_list, flag, nil, con, reset_list, desc_list) return rsef.FV_UPDATE(reg_list, add_list, val_list, tg, tg_range_list, flag, nil, con, reset_list, desc_list)
end end
--Single Val Effect: Material lim_ --Single Val Effect: Material lim_
function rsef.SV_CANNOT_BE_MATERIAL(reg_list, mat_list, val_list, con, reset_list, flag, desc_list) function rsef.SV_CANNOT_BE_MATERIAL(reg_list, mat_list, val_list, con, reset_list, flag, desc_list)
local flag2 = rsef.GetRegisterProperty(nil, flag) local flag2 = rsef.GetRegisterProperty(nil, flag)
flag2 = flag2 | (EFFECT_FLAG_CANNOT_DISABLE + EFFECT_FLAG_UNCOPYABLE) flag2 = flag2 | (EFFECT_FLAG_CANNOT_DISABLE + EFFECT_FLAG_UNCOPYABLE)
local str_list = Scl.UniformSclParamaFormat(mat_list) local str_list = Scl.UniformSclParamaFormat(mat_list)
local str_list2 = { } local str_list2 = { }
local string2 local string2
for _, string in pairs(str_list) do for _, string in pairs(str_list) do
string2 = string.sub(string,1,1) string2 = string.sub(string,1,1)
table.insert(str_list2, string2.."mat~") table.insert(str_list2, string2.."mat~")
end end
return rsef.SV_Card(reg_list, str_list2, val_list, flag2, nil, con, reset_list, desc_list) return rsef.SV_Card(reg_list, str_list2, val_list, flag2, nil, con, reset_list, desc_list)
end end
--Single Val Effect: Cannot be battle or card effect target --Single Val Effect: Cannot be battle or card effect target
function rsef.SV_CANNOT_BE_TARGET(reg_list, tg_list, val_list, con, reset_list, flag, desc_list) function rsef.SV_CANNOT_BE_TARGET(reg_list, tg_list, val_list, con, reset_list, flag, desc_list)
local tg_list2 = string.gsub(tg_list, "battle", "tgb~") local tg_list2 = string.gsub(tg_list, "battle", "tgb~")
tg_list2 = string.gsub(tg_list2, "effect", "tge~") tg_list2 = string.gsub(tg_list2, "effect", "tge~")
return rsef.SV_Card(reg_list, tg_list2, val_list, flag, nil, con, reset_list, desc_list) return rsef.SV_Card(reg_list, tg_list2, val_list, flag, nil, con, reset_list, desc_list)
end end
--Field Val Effect: Cannot be battle or card effect target --Field Val Effect: Cannot be battle or card effect target
function rsef.FV_CANNOT_BE_TARGET(reg_list, tg_list, val_list, tg, tg_range_list, con, reset_list, flag, desc_list) function rsef.FV_CANNOT_BE_TARGET(reg_list, tg_list, val_list, tg, tg_range_list, con, reset_list, flag, desc_list)
local tg_list2 = string.gsub(tg_list, "battle", "tgb~") local tg_list2 = string.gsub(tg_list, "battle", "tgb~")
tg_list2 = string.gsub(tg_list2, "effect", "tge~") tg_list2 = string.gsub(tg_list2, "effect", "tge~")
return rsef.FV_Card(reg_list, tg_list2, val_list, tg, tg_range_list, flag, nil, con, reset_list, desc_list) return rsef.FV_Card(reg_list, tg_list2, val_list, tg, tg_range_list, flag, nil, con, reset_list, desc_list)
end end
--Cannot disable --Cannot disable
function rsef.CANNOT_DISABLE_List(dis_list) function rsef.CANNOT_DISABLE_List(dis_list)
local compare_list = { ["dise"] = "dise~", ["dis"] = "dis~", ["act"] = "neg~", ["sum"] = "dsum~", ["sp"] = "dsp~", ["fp"] = "dfp", ["neg"] = "neg~" } local compare_list = { ["dise"] = "dise~", ["dis"] = "dis~", ["act"] = "neg~", ["sum"] = "dsum~", ["sp"] = "dsp~", ["fp"] = "dfp", ["neg"] = "neg~" }
local dis_list2 = Scl.SplitString(dis_list,",") local dis_list2 = Scl.SplitString(dis_list,",")
local dis_list3 = "" local dis_list3 = ""
for _, str in pairs(dis_list2) do for _, str in pairs(dis_list2) do
dis_list3 = dis_list3 .. compare_list[str] .. "," dis_list3 = dis_list3 .. compare_list[str] .. ","
end end
dis_list3 = string.sub(dis_list3, 1, -2) dis_list3 = string.sub(dis_list3, 1, -2)
return dis_list3 return dis_list3
end end
--Single Val Effect: Cannot disable --Single Val Effect: Cannot disable
function rsef.SV_CANNOT_DISABLE(reg_list, dis_list, val_list, con, reset_list, flag, desc_list, range) function rsef.SV_CANNOT_DISABLE(reg_list, dis_list, val_list, con, reset_list, flag, desc_list, range)
local dis_list2 = rsef.CANNOT_DISABLE_List(dis_list) local dis_list2 = rsef.CANNOT_DISABLE_List(dis_list)
return rsef.SV_Card(reg_list, dis_list2, val_list, flag, range, con, reset_list, desc_list) return rsef.SV_Card(reg_list, dis_list2, val_list, flag, range, con, reset_list, desc_list)
end end
function rsef.SV_CANNOT_DISABLE_val(e, ct) function rsef.SV_CANNOT_DISABLE_val(e, ct)
local te = Duel.GetChainInfo(ct, CHAININFO_TRIGGERING_EFFECT) local te = Duel.GetChainInfo(ct, CHAININFO_TRIGGERING_EFFECT)
return te:GetHandler() == e:GetHandler() return te:GetHandler() == e:GetHandler()
end end
--Field Val Effect: Cannot Disable --Field Val Effect: Cannot Disable
function rsef.FV_CANNOT_DISABLE(reg_list, dis_list, val_list, tg, tg_range_list, con, reset_list, flag, desc_list) function rsef.FV_CANNOT_DISABLE(reg_list, dis_list, val_list, tg, tg_range_list, con, reset_list, flag, desc_list)
local dis_list2 = rsef.CANNOT_DISABLE_List(dis_list) local dis_list2 = rsef.CANNOT_DISABLE_List(dis_list)
return rsef.FV_Card(reg_list, dis_list2, val_list, tg, tg_range_list, flag, nil, con, reset_list, desc_list) return rsef.FV_Card(reg_list, dis_list2, val_list, tg, tg_range_list, flag, nil, con, reset_list, desc_list)
end end
--Limit List --Limit List
function rsef.LIMIT_List(lim_list) function rsef.LIMIT_List(lim_list)
local str_list = Scl.UniformSclParamaFormat(lim_list) local str_list = Scl.UniformSclParamaFormat(lim_list)
local str_list2 = { } local str_list2 = { }
for _, string in pairs(str_list) do for _, string in pairs(str_list) do
if string ~= "dis" and string ~= "distm" and string ~= "dise" if string ~= "dis" and string ~= "distm" and string ~= "dise"
and string ~= "sbp" and string ~= "sm1" and string ~= "sm2" and string ~= "sbp" and string ~= "sm1" and string ~= "sm2"
and string ~= "sdp" and string ~= "ssp" then and string ~= "sdp" and string ~= "ssp" then
string = string.."~" string = string.."~"
end end
string = string.gsub(string, "datk~", "atkd~") string = string.gsub(string, "datk~", "atkd~")
table.insert(str_list2, string) table.insert(str_list2, string)
end end
return str_list2 return str_list2
end end
--Single Val Effect: Other Limit --Single Val Effect: Other Limit
function rsef.SV_LIMIT(reg_list, lim_list, val_list, con, reset_list, flag, desc_list) function rsef.SV_LIMIT(reg_list, lim_list, val_list, con, reset_list, flag, desc_list)
local str_list2 = rsef.LIMIT_List(lim_list) local str_list2 = rsef.LIMIT_List(lim_list)
return rsef.SV_Card(reg_list, str_list2, val_list, flag, nil, con, reset_list, desc_list) return rsef.SV_Card(reg_list, str_list2, val_list, flag, nil, con, reset_list, desc_list)
end end
--Field Val Effect: Other Limit --Field Val Effect: Other Limit
function rsef.FV_LIMIT(reg_list, lim_list, val_list, tg, tg_range_list, con, reset_list, flag, desc_list) function rsef.FV_LIMIT(reg_list, lim_list, val_list, tg, tg_range_list, con, reset_list, flag, desc_list)
local str_list2 = rsef.LIMIT_List(lim_list) local str_list2 = rsef.LIMIT_List(lim_list)
return rsef.FV_Card(reg_list, str_list2, val_list, tg, tg_range_list, flag, nil, con, reset_list, desc_list) return rsef.FV_Card(reg_list, str_list2, val_list, tg, tg_range_list, flag, nil, con, reset_list, desc_list)
end end
--Field Val Effect: Other Limit (affect Player) --Field Val Effect: Other Limit (affect Player)
function rsef.FV_LIMIT_PLAYER(reg_list, lim_list, val_list, tg, tg_range_list, con, reset_list, flag, desc_list) function rsef.FV_LIMIT_PLAYER(reg_list, lim_list, val_list, tg, tg_range_list, con, reset_list, flag, desc_list)
local str_list2 = rsef.LIMIT_List(lim_list) local str_list2 = rsef.LIMIT_List(lim_list)
return rsef.FV_Player(reg_list, str_list2, val_list, tg, tg_range_list, flag, nil, con, reset_list, desc_list) return rsef.FV_Player(reg_list, str_list2, val_list, tg, tg_range_list, flag, nil, con, reset_list, desc_list)
end end
--Leave field list --Leave field list
function rsef.REDIRECT_LIST(leave_list) function rsef.REDIRECT_LIST(leave_list)
local str_list = Scl.UniformSclParamaFormat(leave_list) local str_list = Scl.UniformSclParamaFormat(leave_list)
local str_list2 = { } local str_list2 = { }
for _, string in pairs(str_list) do for _, string in pairs(str_list) do
if string == "leave" then if string == "leave" then
table.insert(str_list2, "rlf") table.insert(str_list2, "rlf")
else else
table.insert(str_list2, "r"..string) table.insert(str_list2, "r"..string)
end end
end end
return str_list2 return str_list2
end end
--Single Val Effect: Leave field redirect --Single Val Effect: Leave field redirect
function rsef.SV_REDIRECT(reg_list, leave_list, val_list, con, reset_list, flag, desc_list) function rsef.SV_REDIRECT(reg_list, leave_list, val_list, con, reset_list, flag, desc_list)
local str_list2 = rsef.REDIRECT_LIST(leave_list) local str_list2 = rsef.REDIRECT_LIST(leave_list)
return rsef.SV_Card(reg_list, str_list2, val_list, flag, nil, con, reset_list, desc_list) return rsef.SV_Card(reg_list, str_list2, val_list, flag, nil, con, reset_list, desc_list)
end end
--Field Val Effect: Leave field redirect --Field Val Effect: Leave field redirect
function rsef.FV_REDIRECT(reg_list, leave_list, val_list, tg, tg_range_list, con, reset_list, flag, desc_list) function rsef.FV_REDIRECT(reg_list, leave_list, val_list, tg, tg_range_list, con, reset_list, flag, desc_list)
local str_list2 = rsef.REDIRECT_LIST(leave_list) local str_list2 = rsef.REDIRECT_LIST(leave_list)
local flag2 = rsef.GetRegisterProperty(nil, flag) | (EFFECT_FLAG_IGNORE_IMMUNE + EFFECT_FLAG_SET_AVAILABLE) local flag2 = rsef.GetRegisterProperty(nil, flag) | (EFFECT_FLAG_IGNORE_IMMUNE + EFFECT_FLAG_SET_AVAILABLE)
if tg_range_list and (tg_range_list[1] == 0xff and tg_range_list[2] == 0xff) then if tg_range_list and (tg_range_list[1] == 0xff and tg_range_list[2] == 0xff) then
flag2 = flag2 | EFFECT_FLAG_IGNORE_RANGE flag2 = flag2 | EFFECT_FLAG_IGNORE_RANGE
end end
return rsef.FV_Card(reg_list, str_list2, val_list, tg, tg_range_list, flag2, nil, con, reset_list, desc_list) return rsef.FV_Card(reg_list, str_list2, val_list, tg, tg_range_list, flag2, nil, con, reset_list, desc_list)
end end
--Single Val Effect: Activate Trap / Quick Spell immediately --Single Val Effect: Activate Trap / Quick Spell immediately
function rsef.SV_ACTIVATE_IMMEDIATELY(reg_list, act_list, con, reset_list, flag, desc_list) function rsef.SV_ACTIVATE_IMMEDIATELY(reg_list, act_list, con, reset_list, flag, desc_list)
local act_list2 local act_list2
local reg_owner, reg_handler = Scl.GetRegisterInfo(reg_list) local reg_owner, reg_handler = Scl.GetRegisterInfo(reg_list)
if reg_handler:IsComplexType(TYPE_QUICKPLAY + TYPE_SPELL) then if reg_handler:IsComplexType(TYPE_QUICKPLAY + TYPE_SPELL) then
act_list2 = string.gsub(act_list, "hand", "qah") act_list2 = string.gsub(act_list, "hand", "qah")
act_list2 = string.gsub(act_list2, "set", "qas") act_list2 = string.gsub(act_list2, "set", "qas")
elseif reg_handler:IsComplexType(TYPE_TRAP) then elseif reg_handler:IsComplexType(TYPE_TRAP) then
act_list2 = string.gsub(act_list, "hand", "tah") act_list2 = string.gsub(act_list, "hand", "tah")
act_list2 = string.gsub(act_list2, "set", "tas") act_list2 = string.gsub(act_list2, "set", "tas")
end end
return rsef.SV_Card(reg_list, act_list2, 1, flag, 0xff, con, reset_list, desc_list) return rsef.SV_Card(reg_list, act_list2, 1, flag, 0xff, con, reset_list, desc_list)
end end
--cost: tribute self --cost: tribute self
function rscost.releaseself(check_mzone, check_exzone) function rscost.releaseself(check_mzone, check_exzone)
return function(e, tp, eg, ep, ev, re, r, rp, chk) return function(e, tp, eg, ep, ev, re, r, rp, chk)
local c = e:GetHandler() local c = e:GetHandler()
if chk == 0 then return c:IsReleasable() and (not check_mzone or Duel.GetMZoneCount(tp, c, tp) > 0) and (not check_exzone or Duel.GetLocationCountFromEx(tp, tp, c, exmzone) > 0) end if chk == 0 then return c:IsReleasable() and (not check_mzone or Duel.GetMZoneCount(tp, c, tp) > 0) and (not check_exzone or Duel.GetLocationCountFromEx(tp, tp, c, exmzone) > 0) end
Duel.Release(c, REASON_COST) Duel.Release(c, REASON_COST)
end end
end end
rsof.Table_List = Scl.IsArrayContains_Single rsof.Table_List = Scl.IsArrayContains_Single
\ No newline at end of file
...@@ -13,6 +13,7 @@ function c95101141.initial_effect(c) ...@@ -13,6 +13,7 @@ function c95101141.initial_effect(c)
e1:SetType(EFFECT_TYPE_ACTIVATE) e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_SUMMON_SUCCESS) e1:SetCode(EVENT_SUMMON_SUCCESS)
e1:SetCountLimit(1,95101141+EFFECT_COUNT_CODE_OATH) e1:SetCountLimit(1,95101141+EFFECT_COUNT_CODE_OATH)
e1:SetCondition(c95101141.condition)
e1:SetTarget(c95101141.target) e1:SetTarget(c95101141.target)
e1:SetOperation(c95101141.activate) e1:SetOperation(c95101141.activate)
c:RegisterEffect(e1) c:RegisterEffect(e1)
...@@ -23,6 +24,9 @@ end ...@@ -23,6 +24,9 @@ end
function c95101141.handcon(e) function c95101141.handcon(e)
return Duel.IsExistingMatchingCard(Card.IsSummonLocation,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil,LOCATION_EXTRA) return Duel.IsExistingMatchingCard(Card.IsSummonLocation,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil,LOCATION_EXTRA)
end end
function c95101141.thcon(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(Card.IsSummonPlayer,1,nil,1-tp)
end
function c95101141.thfilter(c,chk) function c95101141.thfilter(c,chk)
return c:IsSetCard(0xbbe) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() and (chk==0 or aux.NecroValleyFilter()(c)) return c:IsSetCard(0xbbe) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() and (chk==0 or aux.NecroValleyFilter()(c))
end end
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment