Commit f9f85990 authored by 聖園ミカ's avatar 聖園ミカ 🐟

hop

parent 0a6847d9
Pipeline #31340 passed with stage
in 46 minutes and 31 seconds
No preview for this file type
--This is real scl's old library, it is out of support.
--I have try my best to transferred meaning of the old scripts to the new scripts.
--New scripts is in my new library, c10100000.lua, its much more easy-reading and easy-using than this f*ck old library.
--If a card scripted by using this old library is need be fixed bugs or changed effects, I will use the new library to rescript that card, instead of continuing to use this old library.
--There are still many bugs that I haven't found, so if you find any, its welcome to call my QQ/VX 852415212, or email me: 15161685390@163.com, PLZ note sth. about YGO while you add me, otherwise I will reject your friend request.
local Version_Number = "2022.11.02"
Duel.LoadScript("c10100000.lua")
if rsv then return end
local s = {}
rsv = { } --"Base Function"
rscf = { } --"Card Function"
rsgf = { } --"Group Function"
rsef = { } --"Effect Function"
rszsf = { } --"Zone Sequence Function"
rsof = { } --"Other Function"
rssf = { } --"Summon Function"
rscode = { } --"Code Function"
rsval = { } --"Value Function"
rscon = { } --"Condition Function"
rscost = { } --"Cost Function"
rstg = { } --"Target Function"
rsop = { } --"Operation Function"
rscate = { } --"Category Function"
rsflag = { } --"Property Function"
rsrst = { } --"Reset Function"
rshint = { } --"Hint Function"
rsloc = { } --"Location Function"
rsrst.ep = RESET_EP_SCL
rsrst.sp = RESET_SP_SCL
rsrst.bp = RESET_BP_SCL
rsrst.std = RESETS_SCL
rsrst.std_dis = RESETS_DISABLE_SCL
rsrst.std_ntf = RESETS_WITHOUT_TO_FIELD_SCL
rsrst.std_ep = RESETS_EP_SCL
rsrst.ret = RESETS_REDIRECT_SCL
rscode.Attach_Effect = EFFECT_ADDITIONAL_EFFECT_SCL
rscode.Phase_Leave_Flag = FLAG_PHASE_OPERATE_SCL
rscode.Extra_Synchro_Material = EFFECT_EXTRA_SYNCHRO_MATERIAL_SCL
rscode.Extra_Xyz_Material = EFFECT_EXTRA_XYZ_MATERIAL_SCL
rscode.Utility_Xyz_Material = EFFECT_UTILITY_XYZ_MATERIAL_SCL
rscode.Previous_Set_Code = FLAG_PREVIOUS_XYZ_MATERIAL_SCL
rscode.Pre_Complete_Proc = EFFECT_COMPLETE_SUMMON_PROC_SCL
rscode.Set = EVENT_SET_SCL
rsloc.hd = LOCATION_HAND+LOCATION_DECK
rsloc.hm = LOCATION_HAND+LOCATION_MZONE
rsloc.ho = LOCATION_HAND+LOCATION_ONFIELD
rsloc.hg = LOCATION_HAND+LOCATION_GRAVE
rsloc.dg = LOCATION_DECK+LOCATION_GRAVE
rsloc.gr = LOCATION_GRAVE+LOCATION_REMOVED
rsloc.dgr = LOCATION_DECK+LOCATION_GRAVE+LOCATION_REMOVED
rsloc.hdg = LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE
rsloc.de = LOCATION_DECK+LOCATION_EXTRA
rsloc.mg = LOCATION_MZONE+LOCATION_GRAVE
rsloc.og = LOCATION_ONFIELD+LOCATION_GRAVE
rsloc.hmg = LOCATION_HAND+LOCATION_MZONE+LOCATION_GRAVE
rsloc.hog = LOCATION_HAND+LOCATION_ONFIELD+LOCATION_GRAVE
rsloc.all = 0xff
s.sum_list = {
["sp"] = "SpecialSummon", ["adv"] = "TributeSummon", ["rit"] = "RitualSummon"
, ["fus"] = "FusionSummon", ["syn"] = "SynchroSummon", ["xyz"] = "XyzSummon"
, ["link"] = "LinkSummon", ["pen"] = "PendulumSummon"
}
s.flag_list = {
["tg"] = "Target", ["ptg"] = "PlayerTarget", ["de"] = "Delay", ["dsp"] = "DamageStep"
, ["dcal"] = "DamageCalculation", ["ii"] = "IgnoreImmune", ["sa"] = "SetAvailable", ["ir"] = "IgnoreZone"
, ["sr"] = "BuffZone", ["bs"] = "BothSide", ["uc"] = "Uncopyable"
, ["ch"] = "ClientHint", ["lz"] = "LimitActivateZone", ["atg"] = "AbsoluteTarget"
, ["sp"] = "SummonParama", ["ep"] = "EventPlayer", ["oa"] = "Oath" , ["ntr"] = "NoTurnReset"
, ["neg~"] = "!NegateActivation"
, ["cn"] = "!NegateEffect", ["dise~"] = "!NegateEffect2"
, ["cd"] = "!NegateEffect" , ["dis~"] = "!NegateEffect"
}
s.ctgy_list = {
["des"] = "Destroy"
, ["rdes"] = "DestroyReplace"
, ["res"] = "Tribute"
, ["rm"] = "Banish"
, ["rmd"] = "BanishFacedown"
, ["se"] = "Search"
, ["th"] = "Add2Hand"
, ["rth"] = "Return2Hand"
, ["td"] = "ShuffleIn2Deck"
, ["tdt"] = "ShuffleIn2DeckTop"
, ["tdb"] = "ShuffleIn2DeckBottom"
, ["ptdt"] = "PlaceOnDeckTop"
, ["ptdb"] = "PlaceOnDeckBottom"
, ["te"] = "Return2Extra"
, ["tde"] = "ShuffleIn2Deck/ExtraAsCost"
, ["pte"] = "Add2ExtraFaceup"
, ["tg"] = "Send2GY"
, ["rtg"] = "Return2GY"
, ["dtg"] = "Discard2GY"
, ["dish"] = "Discard"
, ["dh"] = "Discard"
, ["dishf"] = "DiscardWithFilter"
, ["dhf"] = "DiscardWithFilter"
, ["disd"] = "SendDeckTop2GY"
, ["dd"] = "SendDeckTop2GY"
, ["dr"] = "Draw"
, ["dam"] = "Damage"
, ["rec"] = "GainLP"
, ["sum"] = "NormalSummon"
, ["tk"] = "Token"
, ["sp"] = "SpecialSummon"
, ["cp"] = "ChangePosition"
, ["pos"] = "ChangePosition"
, ["upa"] = "Change2AttackPosition"
, ["upd"] = "Change2FaceupDefensePosition"
, ["dpd"] = "Change2FacedownDefensePosition"
, ["posd"] = "Change2DefensePosition"
, ["ctrl"] = "ChangeControl"
, ["con"] = "ChangeControl"
, ["sctrl"] = "SwitchControl"
, ["dis"] = "NegateEffect"
, ["diss"] = "NegateSummon"
, ["neg"] = "NegateActivation"
, ["eq"] = "Equip"
, ["atk"] = "ChangeATK"
, ["def"] = "ChangeDEF"
, ["ct"] = "PlaceCounter"
, ["pct"] = "PlaceCounter"
, ["rmct"] = "RemoveCounter"
, ["coin"] = "TossCoin"
, ["dice"] = "TossDice"
, ["an"] = "AnnounceCard"
, ["lv"] = "ChangLevel"
, ["fus"] = "FusionSummon"
, ["ga"] = "GYAction"
, ["gsp"] = "SpecialSummonFromGY"
, ["lg"] = "LeaveGY"
, ["cf"] = "Look"
, ["rv"] = "Reveal"
, ["rvep"] = "RevealUntilEP"
, ["tf"] = "PlaceOnField"
, ["act"] = "ActivateCard"
, ["rf"] = "Return2Field"
, ["rtf"] = "Return2Field"
, ["ae"] = "ApplyEffect"
, ["set"] = "SetSpell/Trap"
, ["sset"] = "SetSpell/Trap"
, ["xmat"] = "AttachXyzMaterial"
, ["axmat"] = "AttachXyzMaterial"
, ["rxmat"] = "DetachXyzMaterial"
, ["rmxmat"] = "DetachXyzMaterial"
, ["ms"] = "MoveZone"
, ["dum"] = "Dummy"
, ["self"] = "Self"
, ["oppo"] = "Opponent"
}
s.buff_code_list = {
["atk"] = "=ATK",
["def"] = "=DEF",
["batk"] = "=BaseATK",
["bdef"] = "=BaseDEF",
["fatk"] = "=FinalATK",
["fdef"] = "=FinalDEF",
["atkf"] = "=FinalATK",
["deff"] = "=FinalDEF",
["lv"] = "=Level",
["rk"] = "=Rank",
["ls"] = "=LeftScale",
["rs"] = "=RightScale",
["code"] = "=Name",
["att"] = "=Attribute",
["race"] = "=Race",
["type"] = "=Type",
["fatt"] = "=FusionAttribute",
["datk"] = "=BattleATK",
["ddef"] = "=BattleDEF",
["atk+"] = "+ATK",
["def+"] = "+DEF",
["lv+"] = "+Level",
["rk+"] = "+Rank",
["ls+"] = "+LeftScale",
["rs+"] = "+RightScale",
["code+"] = "+Name",
["att+"] = "+Attribute",
["race+"] = "+Race",
["set+"] = "+Series",
["type+"] = "+Type",
["fatt+"] = "+FusionAttribute",
["fcode+"] = "+FusionName",
["fset+"] = "+FusionSeries",
["latt+"] = "+LinkAttribute",
["lrace+"] = "+LinkRace",
["lcode+"] = "+LinkName",
["lset+"] = "+LinkSeries",
["type-"] = "-Type",
["race-"] = "-Race",
["att-"] = "-Attribute",
["indb"] = "!BeDestroyedByBattle",
["inde"] = "!BeDestroyedByEffects",
["indct"] = "!BeDestroyedCountPerTurn",
["ind"] = "!BeDestroyed",
["im"] = "UnaffectedByEffects",
["fmat~"] = "!BeUsedAsFusionMaterial",
["fus~"] = "!BeUsedAsFusionMaterial",
["fsmat~"] = "!BeUsedAsMaterial4FusionSummon",
["smat~"] = "!BeUsedAsSynchroMaterial",
["ssmat~"] = "!BeUsedAsMaterial4SynchroSummon",
["xmat~"] = "!BeUsedAsXyzMaterial",
["xyz~"] = "!BeUsedAsXyzMaterial",
["xsmat~"] = "!BeUsedAsMaterial4XyzSummon",
["lmat~"] = "!BeUsedAsLinkMaterial",
["link~"] = "!BeUsedAsLinkMaterial",
["lsmat~"] = "!BeUsedAsMaterial4LinkSummon",
["tgb~"] = "!BeBattleTarget",
["tge~"] = "!BeEffectTarget",
["dis"] = "NegateEffect",
["dise"] = "NegateActivatedEffect",
["tri~"] = "!Activated",
["atk~"] = "!Attack",
["atkan~"] = "!AttackAnnounce",
["atkd~"] = "!AttackDirectly",
["ress~"] = "!BeTributed4TributeSummon",
["resns~"] = "!BeTributedExcept4TributeSummon",
["td~"] = "!Return2Deck",
["th~"] = "!Add2Hand",
["cost~"] = "!BeUsedAsCost",
["rm~"] = "!Banish",
["ctrl~"] = "!SwitchControl",
["distm"] = "NegateTrapMonster",
["pos~"] = "!ChangePosition",
["pose~"] = "!ChangePositionByEffect",
["cp~"] = "!ChangePosition",
["cpe~"] = "!ChangePositionByEffect",
["act~"] = "!Activate",
["sum~"] = "!NormalSummon",
["sp~"] = "!SpecialSummon",
["dr~"] = "!Draw",
["tg~"] = "!Send2GY",
["res~"] = "!Tribute",
["sset~"] = "!SetSpell&Trap",
["mset~"] = "!NormalSet",
["dh~"] = "!Discard",
["dd~"] = "!SendDeckTop2GY",
["fp~"] = "!FilpSummon",
["tgc~"] = "!BeSent2GYAsCost",
["sbp"] = "SkipBP",
["sm1"] = "SkipM1",
["sm2"] = "SkipM2",
["sdp"] = "SkipDP",
["ssp"] = "SkipSP",
["rtg"] = "Instead2GY",
["rtd"] = "Instead2Deck",
["rth"] = "Instead2Hand",
["rlf"] = "InsteadLeaveField",
["rlve"] = "InsteadLeaveField",
["leave"] = "InsteadLeaveField",
["qah"] = "ActivateQuickPlaySpellFromHand",
["qas"] = "ActivateQuickPlaySpellInSetTurn",
["tah"] = "ActivateTrapFromHand",
["tas"] = "ActivateTrapInSetTurn",
["atkex"] = "+AttackCount",
["atkexm"] = "+AttackMonsterCount",
["atka"] = "AttackAll",
["pce"] = "Pierce",
["atkd"] = "AttackDirectly",
["atkpd"] = "AttackInDefensePosition",
["dis~"] = "!NegateEffect",
["dsum~"] = "!NegateNormalSummon",
["dsp~"] = "!NegateSpecialSummon",
["dfp~"] = "!NegateFlipSummon",
["rdam"] = "OpponentTakeDamageInstead",
["rdamb"] = "OpponentTakeBattleDamageInstead",
["dise~"] = "!NegateActivatedEffect",
["neg~"] = "!NegateActivation",
["mat"] = "SetMaterial",
["ormat"] = "XyzMaterial4ExtraRitualTribute",
["grmat"] = "ExtraRitualTribute",
["fmat"] = "ExtraFusionMaterial"
}
--Old functions
rsef.CreatEvent = Scl.RaiseGlobalEvent
rsef.CreatEvent_Set = Scl.RaiseGlobalSetEvent
rsef.SetChainLimit= Scl.SetChainLimit
s.clone_list = {
["code"] = "Code", ["desc"] = "Description", ["flag"] = "Property", ["cate"] = "Category",
["reset"] = "Reset", ["type"] = "Type", ["con"] = "Condition", ["tg"] = "Target", ["cost"] = "Cost",
["op"] = "Operation", ["value"] = "Value", ["loc"] = "Zone", ["tgrng"] = "TargetRange"
}
function rsef.RegisterClone(...)
local new_arr = { }
for _, elm in pairs({ ... }) do
if type(elm) == "string" then
table.insert(new_arr, s.clone_list[elm])
else
table.insert(new_arr, elm)
end
end
return Scl.CloneEffect(table.unpack(new_arr))
end
rsef.RegisterOPTurn = Scl.CloneEffectAsQucikEffect
rsef.QO_OPPONENT_TURN = Scl.CloneEffectAsQucikEffect
rsef.RegisterSolve = Scl.RegisterSolvePart
Effect.RegisterSolve = Scl.RegisterSolvePart
function s.get_default_range(reg_obj)
local reg_range
local reg_owner, reg_handler = Scl.GetRegisterInfo(reg_obj)
if aux.GetValueType(reg_handler) ~= "Card" then return nil end
--(TYPE_PENDULUM , LOCATION_PZONE must manual input)
local type_list = { TYPE_MONSTER, TYPE_FIELD, TYPE_SPELL + TYPE_TRAP }
local reg_obj = { LOCATION_MZONE, LOCATION_FZONE, LOCATION_SZONE }
for idx, card_type in pairs(type_list) do
if reg_handler:IsType(card_type) then
reg_range = reg_obj[idx]
break
end
end
--after begain duel
--if Duel.GetTurnCount() > 0 then reg_range = reg_handler:GetLocation() end
return reg_range
end
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 ctgy2
if ctgy then
ctgy2 = ""
if type(ctgy) == "string" then
local arr = Scl.SplitString(ctgy)
for idx, str in pairs(arr) do
if idx > 1 then
ctgy2 = ctgy2 .. ","
end
ctgy2 = ctgy2 .. s.ctgy_list[str]
end
else
ctgy2 = ctgy
end
end
local flag2
if flag then
flag2 = ""
if type(flag) == "string" then
local arr = Scl.SplitString(flag)
for idx, str in pairs(arr) do
if idx > 1 then
flag2 = flag2 .. ","
end
flag2 = flag2 .. s.flag_list[str]
end
else
flag2 = flag
end
end
local buff_code2
if buff_code then
buff_code2 = ""
if type(buff_code) == "string" then
local arr = Scl.SplitString(buff_code)
for idx, str in pairs(arr) do
if idx > 1 then
buff_code2 = buff_code2 .. ","
end
buff_code2 = buff_code2 .. s.buff_code_list[str]
end
elseif type(buff_code) == "table" then
for idx, buff_str in pairs(buff_code) do
if idx > 1 then
buff_code2 = buff_code2 .. ","
end
--buff_code2 = buff_code2 .. buff_str
buff_code2 = buff_code2 .. s.buff_code_list[buff_str]
end
else
buff_code2 = buff_code
end
end
return desc_obj2, ctgy2, flag2, buff_code2
end
function s.switch_old_count_limit(lim_obj)
if lim_obj then
local lim_ct, lim_code = 0, 0
if type(lim_obj) == "table" then
if #lim_obj == 1 then
if lim_obj[1] <= 100 then
lim_ct = lim_obj[1]
else
lim_ct = 1
lim_code = lim_obj[1]
end
elseif #lim_obj == 2 then
lim_ct = lim_obj[1]
local val = lim_obj[2]
if (type(val) == "number" and (val == 3 or val == 0x1)) or
(type(val) == "string" and val == "s") then
lim_code = EFFECT_COUNT_CODE_SINGLE
else
lim_code = lim_obj[2]
end
elseif #lim_obj == 3 then
lim_ct = lim_obj[1]
lim_code = lim_obj[2] or 0
local val = lim_obj[3]
if (type(val) == "number" and val == 1) or
(type(val) == "string" and val == "o") then
lim_code = lim_code + EFFECT_COUNT_CODE_OATH
elseif (type(val) == "number" and val == 1) or
(type(val) == "string" and val == "d") then
lim_code = lim_code + EFFECT_COUNT_CODE_DUEL
elseif (type(val) == "number" and val == 3) or
(type(val) == "string" and val == "s") then
lim_code = lim_code + EFFECT_COUNT_CODE_SINGLE
else
lim_code = lim_code + val
end
end
else
if lim_ct <= 100 then
lim_ct = lim_obj
else
lim_ct = 1
lim_code = lim_obj
end
end
if lim_code then
return { lim_ct, lim_code }
else
return lim_ct
end
else
return nil
end
end
function rsef.GetRegisterCategory(reg, ctgy)
local _, ctgy2 = s.switch_old_string(0, ctgy)
return Scl.GetNumFormatCategory(ctgy2)
end
function rsef.GetRegisterProperty(reg, flag)
local _, _, flag2 = s.switch_old_string(0, 0, flag)
return Scl.GetNumFormatProperty(flag2)
end
function rsef.SV_ActivateDirectly_Special(reg_obj, act_loc, con, rst_obj, desc_obj, timing_list)
return Scl.CreateSingleBuffCondition(reg_obj, "ActivateCardFromAnyZone", act_loc, 0xff, con, rst_obj, desc_obj)
end
function rsef.SV_CannotDisable_NoEffect()
return Scl.CreateSingleBuffCondition(reg_obj, "!NegateEffect,!NegateActivatedEffect", 1)
end
function rsef.SV_Card(reg_obj, att_obj, val_obj, flag, range, con, rst_obj, desc_obj, lim_obj, affect_self)
local _, _, flag2, att_obj2 = s.switch_old_string(0, 0, flag, att_obj)
local flag3 = Scl.GetNumFormatProperty(flag2)
local lim_obj2 = s.switch_old_count_limit(lim_obj)
--case special summon buff
local owner, handler = Scl.GetRegisterInfo(reg_obj)
if handler:IsStatus(STATUS_SPSUMMON_STEP) then
range = LOCATION_MZONE
end
local res = flag3 & EFFECT_FLAG_UNCOPYABLE ~= 0
if not range then
if res then
range = 0xff
else
range = s.get_default_range(reg_obj)
end
end
if res then
return Scl.CreateSingleBuffCondition(reg_obj, att_obj2, val_obj, range, con, rst_obj, desc_obj2, lim_obj2, flag2)
else
return Scl.CreateSingleBuffEffect(reg_obj, att_obj2, val_obj, range, con, rst_obj, desc_obj2, lim_obj2, flag2)
end
end
function rsef.EQ_Card(reg_obj, att_obj, val_obj, flag, con, rst_obj, desc_obj, lim_obj, affect_self)
local lim_obj2 = s.switch_old_count_limit(lim_obj)
local _, _, flag2, att_obj2 = s.switch_old_string(0, 0, flag, att_obj)
return Scl.CreateEquipBuffEffect(reg_obj, att_obj2, val_obj, con, rst_obj, desc_obj, lim_obj2, flag2)
end
function rsef.FV_Card(reg_obj, att_obj, val_obj, tg, tgrng_obj, flag, range, con, rst_obj, desc_obj, lim_obj)
if not range and not rst_obj and aux.GetValueType(reg_obj) == "Card" then
range = s.get_default_range(reg_obj)
end
local _, _, flag2, att_obj2 = s.switch_old_string(0, 0, flag, att_obj)
local lim_obj2 = s.switch_old_count_limit(lim_obj)
local list = Scl.SplitString(att_obj2)
if Scl.Effect_Buff_Code_List[list[1]] then
return Scl.CreateEffectBuffEffect(reg_obj, att_obj2, val_obj, range, con, rst_obj, desc_obj, lim_obj, flag)
else
return Scl.CreateFieldBuffEffect(reg_obj, att_obj2, val_obj, tg, tgrng_obj, range, con, rst_obj, desc_obj, lim_obj2, flag2)
end
end
function rsef.FV_Player(reg_obj, att_obj, val_obj, tg, tgrng_obj, flag, range, con, rst_obj, desc_obj, lim_obj)
if not range and not rst_obj and aux.GetValueType(reg_obj) == "Card" then
range = s.get_default_range(reg_obj)
end
local _, _, flag2, att_obj2 = s.switch_old_string(0, 0, flag, att_obj)
local lim_obj2 = s.switch_old_count_limit(lim_obj)
return Scl.CreatePlayerBuffEffect(reg_obj, att_obj2, val_obj, tg, tgrng_obj, range, con, rst_obj, desc_obj, lim_obj2, flag2)
end
function rsef.FV_ExtraMaterial(reg_obj, mat, val_obj, tg, tgrng_obj, con, rst_obj, flag, desc_obj, lim_obj, range)
local att
if mat == "xyz" then
att = "ExtraXyzMaterial"
elseif mat == "link" then
att = "ExtraLinkMaterial"
end
local _, _, flag2 = s.switch_old_string(0, 0, flag)
local lim_obj2 = s.switch_old_count_limit(lim_obj)
return Scl.CreateFieldBuffEffect(reg_obj, att, val_obj, tg, tgrng_obj, 0xff, con, rst_obj, desc_obj, lim_obj2, flag2)
end
function rsef.FV_ExtraMaterial_Self(reg_obj, mat, val_obj, tg, tgrng_obj, con, rst_obj, flag, desc_obj, lim_obj)
local att
if mat == "xyz" then
att = "ExtraXyzMaterial"
elseif mat == "link" then
att = "ExtraLinkMaterial"
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 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)
end
function rsef.FV_UTILITY_XYZ_MATERIAL(reg_obj, val_obj, tg, tg_range_list, con, rst_obj, flag, desc_obj, lim_obj, range)
local _, _, flag2 = s.switch_old_string(0, 0, flag)
local lim_obj2 = s.switch_old_count_limit(lim_obj)
return Scl.CreateFieldBuffEffect(reg_obj, "UtilityXyzMaterial", val_obj, tg, tg_range_list, 0xff, con, rst_obj, desc_obj, lim_obj2, flag2)
end
function rsef.A(reg_obj, code, desc_obj, lim_obj, ctgy, flag, con, cost, tg, op, tmg_obj, rst_obj)
local desc_obj2, ctgy2, flag2 = s.switch_old_string(desc_obj, ctgy, flag)
local lim_obj2 = s.switch_old_count_limit(lim_obj)
return Scl.CreateActivateEffect(reg_obj, code, desc_obj2, lim_obj2, ctgy2, flag2, con, cost, tg, op, tmg_obj, rst_obj)
end
function rsef.A_NegateEffect(reg_obj, op_str, lim_obj, con, cost, ex_ctgy, ex_flag, ex_tg, ex_op, desc_obj, rst_obj)
local desc_obj2, ex_ctgy2, ex_flag2 = s.switch_old_string(desc_obj, ex_ctgy, ex_flag)
local op_str2 = s.ctgy_list[op_str]
local lim_obj2 = s.switch_old_count_limit(lim_obj)
return Scl.CreateActivateEffect_NegateEffect(reg_obj, op_str2, lim_obj2, con, cost, ex_ctgy2, ex_flag2, ex_tg, ex_op, desc_obj2, rst_obj)
end
function rsef.A_NegateActivation(reg_obj, op_str, lim_obj, con, cost, ex_ctgy, ex_flag, ex_tg, ex_op, desc_obj, rst_obj)
local desc_obj2, ex_ctgy2, ex_flag2 = s.switch_old_string(desc_obj, ex_ctgy, ex_flag)
local op_str2 = s.ctgy_list[op_str]
local lim_obj2 = s.switch_old_count_limit(lim_obj)
return Scl.CreateActivateEffect_NegateActivation(reg_obj, op_str2, lim_obj2, con, cost, ex_ctgy2, ex_flag2, ex_tg, ex_op, desc_obj2, rst_obj)
end
rsef.A_Equip = Scl.CreateActivateEffect_Equip
function rsef.STO(reg_obj, code, 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 lim_obj2 = s.switch_old_count_limit(lim_obj)
return Scl.CreateSingleTriggerOptionalEffect(reg_obj, code, desc_obj2, lim_obj2, ctgy2, flag2, con, cost, tg, op, rst_obj)
end
function rsef.STF(reg_obj, code, 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 lim_obj2 = s.switch_old_count_limit(lim_obj)
return Scl.CreateSingleTriggerMandatoryEffect(reg_obj, code, desc_obj2, lim_obj2, ctgy2, flag2, con, cost, tg, op, rst_obj)
end
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 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)
end
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 lim_obj2 = s.switch_old_count_limit(lim_obj)
return Scl.CreateFlipMandatoryEffect(reg_obj, desc_obj2, lim_obj2, ctgy2, flag2, con, cost, tg, op, rst_obj)
end
function rsef.FTO(reg_obj, code, desc_obj, lim_obj, ctgy, flag, rng, con, cost, tg, op, rst_obj)
local desc_obj2, ctgy2, flag2 = s.switch_old_string(desc_obj, ctgy, flag)
local lim_obj2 = s.switch_old_count_limit(lim_obj)
return Scl.CreateFieldTriggerOptionalEffect(reg_obj, code, desc_obj2, lim_obj2, ctgy2, flag2, rng, con, cost, tg, op, rst_obj)
end
function rsef.FTF(reg_obj, code, desc_obj, lim_obj, ctgy, flag, rng, con, cost, tg, op, rst_obj)
local desc_obj2, ctgy2, flag2 = s.switch_old_string(desc_obj, ctgy, flag)
local lim_obj2 = s.switch_old_count_limit(lim_obj)
return Scl.CreateFieldTriggerMandatoryEffect(reg_obj, code, desc_obj2, lim_obj2, ctgy2, flag2, rng, con, cost, tg, op, rst_obj)
end
function rsef.I(reg_obj, desc_obj, lim_obj, ctgy, flag, rng, con, cost, tg, op, rst_obj)
local desc_obj2, ctgy2, flag2 = s.switch_old_string(desc_obj, ctgy, flag)
local lim_obj2 = s.switch_old_count_limit(lim_obj)
return Scl.CreateIgnitionEffect(reg_obj, desc_obj2, lim_obj2, ctgy2, flag2, rng, con, cost, tg, op, rst_obj)
end
function rsef.QO(reg_obj, code, desc_obj, lim_obj, ctgy, flag, rng, con, cost, tg, op, tmg_obj, rst_obj)
local desc_obj2, ctgy2, flag2 = s.switch_old_string(desc_obj, ctgy, flag)
local lim_obj2 = s.switch_old_count_limit(lim_obj)
return Scl.CreateQuickOptionalEffect(reg_obj, code, desc_obj2, lim_obj2, ctgy2, flag2, rng, con, cost, tg, op, tmg_obj, rst_obj)
end
function rsef.QO_NegateEffect(reg_obj, op_str, lim_obj, rng, con, cost, ex_ctgy, ex_flag, ex_tg, ex_op, desc_obj, rst_obj)
local desc_obj2, ex_ctgy2, ex_flag2 = s.switch_old_string(desc_obj, ex_ctgy, ex_flag)
local op_str2 = not op_str and "Dummy" or s.ctgy_list[op_str]
local lim_obj2 = s.switch_old_count_limit(lim_obj)
return Scl.CreateQuickOptionalEffect_NegateEffect(reg_obj, op_str2, lim_obj2, rng, con, cost, ex_ctgy2, ex_flag2, ex_tg, ex_op, desc_obj2, rst_obj)
end
function rsef.QO_NegateActivation(reg_obj, op_str, lim_obj, rng, con, cost, ex_ctgy, ex_flag, ex_tg, ex_op, desc_obj, rst_obj)
local desc_obj2, ex_ctgy2, ex_flag2 = s.switch_old_string(desc_obj, ex_ctgy, ex_flag)
local op_str2 = not op_str and "Dummy" or s.ctgy_list[op_str]
local lim_obj2 = s.switch_old_count_limit(lim_obj)
return Scl.CreateQuickOptionalEffect_NegateActivation(reg_obj, op_str2, lim_obj2, rng, con, cost, ex_ctgy2, ex_flag2, ex_tg, ex_op, desc_obj2, rst_obj)
end
function rsef.QF(reg_obj, code, desc_obj, lim_obj, ctgy, flag, rng, con, cost, tg, op, tmg_obj, rst_obj)
local desc_obj2, ctgy2, flag2 = s.switch_old_string(desc_obj, ctgy, flag)
local lim_obj2 = s.switch_old_count_limit(lim_obj)
return Scl.CreateQuickMandatoryEffect(reg_obj, code, desc_obj2, lim_obj2, ctgy2, flag2, rng, con, cost, tg, op, tmg_obj, rst_obj)
end
function rsef.FC(reg_obj, code, desc_obj, lim_obj, flag, rng, con, op, rst_obj)
local _, _, flag2 = s.switch_old_string(0, 0, flag)
local lim_obj2 = s.switch_old_count_limit(lim_obj)
return Scl.CreateFieldTriggerContinousEffect(reg_obj, code, desc_obj, lim_obj2, flag2, rng, con, op, rst_obj)
end
function rsef.FC_DestroyReplace(reg_obj, lim_obj, range, repfilter, tg, op, con, flag, rst_obj)
local _, _, flag2 = s.switch_old_string(0, 0, flag)
local lim_obj2 = s.switch_old_count_limit(lim_obj)
return Scl.CreateFieldTriggerContinousEffect_DestroyReplace(reg_obj, lim_obj2, range, repfilter, tg, op, con, false, flag2, rst_obj)
end
function rsef.FC_PhaseOpearte(reg_obj, op_obj, times, whos, phase, ex_con, fun_obj)
local _, fun_obj2 = s.switch_old_string(0, fun_obj)
return Scl.CreateFieldTriggerContinousEffect_PhaseOpearte(reg_obj, op_obj, fun_obj2, times, whos, phase, ex_con)
end
rsef.FC_Global = Scl.SetGlobalFieldTriggerEffect
function rsef.FC_Easy(reg_obj, code, flag, range, con, op, rst_obj)
return rsef.FC(reg_obj, code, nil, nil, flag, range, con, op, rst_obj)
end
function rsef.SC(reg_obj, code, desc_obj, lim_obj, flag, con, op, rst_obj)
local _, _, flag2 = s.switch_old_string(0, 0, flag)
local lim_obj2 = s.switch_old_count_limit(lim_obj)
return Scl.CreateSingleTriggerContinousEffect(reg_obj, code, desc_obj, lim_obj2, flag2, con, op, rst_obj)
end
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)
end
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 rng2 = s.get_default_range(reg_obj)
local lim_obj2 = s.switch_old_count_limit(lim_obj)
return Scl.CreateSingleTriggerContinousEffect_DestroyReplace(reg_obj, lim_obj2, rng2, repfilter, tg, op, con, rst_obj, flag2)
end
rssf.CheckBlueEyesSpiritDragon = Scl.IsAffectedByBlueEyesSpiritDragon
function rssf.SpecialSummon(sum_obj, sum_typ, sum_pl, zone_pl, ignore_con, ignore_revie, pos, zone, card_fun, group_fun)
local e = Scl.GetCurrentEffectInfo()
local sg = Scl.Mix2Group(sum_obj)
if Scl.Operate_Check == 0 then
return sg:CheckSubGroup(s.special_summon_check, #sg, #sg, e, sum_typ, sum_pl, zone_pl, ignore_con, ignore_revie, pos, zone)
end
local g = Group.CreateGroup()
for sum_card in aux.Next(sg) do
if rssf.SpecialSummonStep(sum_card, sum_typ, sum_pl, zone_pl, ignore_con, ignore_revie, pos, zone, card_fun) then
g:AddCard(sum_card)
end
end
Scl.SpecialSummonComplete()
return #g, g, g:GetFirst()
end
function rssf.SpecialSummonStep(sum_card, sum_typ, sum_pl, zone_pl, ignore_con, ignore_revie, pos, zone, card_fun)
local res, sc = Scl.SpecialSummonStep(sum_card, sum_typ, sum_pl, zone_pl, ignore_con, ignore_revie, pos, zone)
local e = Scl.GetCurrentEffectInfo()
if res and sc then
if type(card_fun) == "function" then
card_fun(sc, e, e:GetHandlerPlayer())
elseif type(card_fun) == "table" then
Scl.Global_Zone = "MonsterZone"
rscf.QuickBuff({ e:GetHandler(), sc, true }, table.unpack(card_fun))
Scl.Global_Zone = nil
end
end
return res, sc
end
function rssf.SpecialSummonEither(sum_card, sum_eff, sum_typ, sum_pl, loc_pl, ignore_con, ignore_revie, pos, sum_zone)
return Scl.SpecialSummon2EitherFieldStep(sum_card, sum_typ, sum_pl, ignore_con, ignore_revie, pos, sum_zone)
end
rsval.spconfe = scl.value_special_summon_from_extra("SpecialSummon")
rsval.spconbe = scl.value_special_summon_by_card_effect
function rsval.indbae(str1, str2)
if not str1 and not str2 then
str1 = "Battle"
str2 = "Effect"
end
if str1 and str1 == "battle" then
str1 = "Battle"
elseif str1 and str1 == "effect" then
str1 = "Effect"
end
if str2 and str2 == "battle" then
str2 = "Battle"
elseif str2 and str2 == "effect" then
str2 = "Effect"
end
return function(...)
return scl.value_reason(0, str1, str2 )(...)
end
end
function rsval.indct(str1, str2)
if not str1 and not str2 then
str1 = "Battle"
str2 = "Effect"
end
if str1 and str1 == "battle" then
str1 = "Battle"
elseif str1 and str1 == "effect" then
str1 = "Effect"
end
if str2 and str2 == "battle" then
str2 = "Battle"
elseif str2 and str2 == "effect" then
str2 = "Effect"
end
return function(...)
return scl.value_indestructable_count(str1, str2)(...)
end
end
rsval.imoe = scl.value_unaffected_by_opponents_card_effects
rsval.imes = scl.value_unaffected_by_other_card_effects
rsval.imntges = scl.value_unaffected_by_other_untarget_effects
rsval.imntgoe = scl.value_unaffected_by_opponents_untarget_effects
rsval.fusslimit = scl.value_cannot_be_used_as_material_for_a_fusion_summon
rstg.imntg = scl.target_untarget_status
rscf.AddTokenList = Scl.AddTokenList
rstg.token = scl.target_special_summon_token
rssf.CheckTokenSummonable = Scl.IsCanSpecialSummonToken
rssf.SpecialSummonToken = Scl.SpecialSummonToken
function rstg.neg(dn_str, ex_tg)
return function(e, tp, eg, ep, ev, re, r, rp, chk, chkc)
dn_str = dn_str or "dum"
local dn_str2 = s.ctgy_list[dn_str]
local c = e:GetHandler()
local rc = re:GetHandler()
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 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 ctgy_list = type(op_cate) == "number" and {op_cate} or op_cate
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)()
if res then
for ctgy in pairs(ctgy_list) do
Duel.SetOperationInfo(0, ctgy, eg, 1, 0, 0)
end
end
end
ex_tg(e, tp, eg, ep, ev, re, r, rp, 1)
end
end
function rsop.neg(dn_str, ex_op)
return function(...)
local dn_str2 = dn_str or "dum"
return scl.negate_activation_or_effect_op("NegateActivation", s.ctgy_list[dn_str2], ex_op)(...)
end
end
function rsop.dis(dn_str, ex_op)
return function(...)
local dn_str2 = dn_str or "dum"
return scl.negate_activation_or_effect_op("NegateEffect", s.ctgy_list[dn_str2], ex_op)(...)
end
end
function s.get_effect_array(checkfun, endfun, list_typ, a1, a2, a3, ...)
local arr = { }
if type(a1) == "table" and (not a2 or (type(a2) == "table" )) and (not a3 or type(a3) == "table") then
arr = { a1, a2, a3, ... }
else
arr = { { a1, a2, a3, ... } }
end
local cache_arr = Scl.CloneArray(arr)
--boom nil
for idx, arr2 in pairs(arr) do
if type(arr2[1]) == "string" then
if not arr2[3] and arr2[4] then
cache_arr[idx][3] = "dum"
end
else
if not arr2[2] and arr2[3] then
cache_arr[idx][2] = "dum"
end
end
end
--insert list type
for idx, arr2 in pairs(arr) do
if type(arr2[1]) ~= "string" then
table.insert(cache_arr[idx], 1, list_typ)
else
if arr2[1] == "cost" then
cache_arr[idx][1] = "Cost"
elseif arr2[1] == "tg" then
cache_arr[idx][1] = "Target"
elseif arr2[1] == "opc" then
cache_arr[idx][1] = "~Target"
end
end
end
if checkfun then
table.insert(cache_arr, 1, { "ExtraCheck", checkfun })
end
if endfun then
table.insert(cache_arr,{ "ExtraOperation", s.end_fun(endfun) })
end
local cache_arr2 = Scl.CloneArray(cache_arr)
--switch string
for idx, arr2 in pairs(cache_arr) do
if arr2[3] then
local v1 = arr2[3]
if type(v1) == "string" then
cache_arr2[idx][3] = s.ctgy_list[v1]
elseif type(v1) == "table" then
cache_arr2[idx][3][1] = s.ctgy_list[v1[1]]
end
end
end
--"dh,dish,dhf,dishf"
for idx, arr2 in pairs(cache_arr) do
local v0, v1, v2 = arr2[1], arr2[2], arr2[3]
if v2 == "dh" or v2 == "dish" or v2 == "dhf" or v2 == "dishf" then
if type(v1) == "number" and v1 == 0 then
cache_arr2[idx][2] = Card.IsDiscardable
cache_arr2[idx][3] = "DiscardWithFilter"
elseif type(v1) == "number" and v1 < 0 then
if v0 == "Cost" then
cache_arr2[idx][1] = "PlayerCost"
elseif v0 == "~Target" then
cache_arr2[idx][1] = "PlayerTarget"
end
cache_arr2[idx][2] = cache_arr2[idx][3]
cache_arr2[idx][3] = 0
cache_arr2[idx][4] = -v1
elseif type(v1) == "number" and v1 > 0 then
if v0 == "Cost" then
cache_arr2[idx][1] = "PlayerCost"
elseif v0 == "~Target" then
cache_arr2[idx][1] = "PlayerTarget"
end
cache_arr2[idx][2] = cache_arr2[idx][3]
cache_arr2[idx][3] = v1
elseif type(v1) ~= "number" then
cache_arr2[idx][3] = "DiscardWithFilter"
end
end
end
--"dd,disd,dr,rec,dam"
for idx, arr2 in pairs(cache_arr) do
local v0, v1, v2 = arr2[1], arr2[2], arr2[3]
if v2 == "dd" or v2 == "disd" or v2 == "dr" or v2 == "rec" or v2 == "dam" then
if type(v1) == "number" and v1 < 0 then
if v0 == "Cost" then
cache_arr2[idx][1] = "PlayerCost"
elseif v0 == "~Target" then
cache_arr2[idx][1] = "PlayerTarget"
end
cache_arr2[idx][2] = cache_arr2[idx][3]
cache_arr2[idx][3] = 0
cache_arr2[idx][4] = -v1
elseif type(v1) == "number" and v1 > 0 then
if v0 == "Cost" then
cache_arr2[idx][1] = "PlayerCost"
elseif v0 == "~Target" then
cache_arr2[idx][1] = "PlayerTarget"
end
cache_arr2[idx][2] = cache_arr2[idx][3]
cache_arr2[idx][3] = v1
end
end
end
--switch filter_obj and category_obj(20230422)
for _, arr in pairs(cache_arr2) do
local list_typ = arr[1]
if list_typ == "Cost" or list_typ == "Target" or list_typ == "~Target" then
local filter_obj = arr[2]
local ctgy_obj = arr[3]
arr[2] = ctgy_obj
arr[3] = filter_obj
end
end
return cache_arr2
end
function s.end_fun(endfun)
return function(g1, g2, ...)
return endfun(g1, ...)
end
end
function rstg.target0(checkfun, endfun, ...)
local effect_arr = s.get_effect_array(checkfun, endfun, "Target", ...)
return scl.list_format_cost_or_target_or_operation(effect_arr)
end
function rstg.target(...)
local effect_arr = s.get_effect_array(nil, nil, "Target", ...)
return scl.list_format_cost_or_target_or_operation(effect_arr)
end
function rstg.target2(endfun, ...)
local effect_arr = s.get_effect_array(nil, endfun, "Target", ...)
return scl.list_format_cost_or_target_or_operation(effect_arr)
end
function rstg.target3(checkfun, ...)
local effect_arr = s.get_effect_array(checkfun, nil, "Target", ...)
return scl.list_format_cost_or_target_or_operation(effect_arr)
end
function rsop.target0(checkfun, endfun, ...)
local effect_arr = s.get_effect_array(checkfun, endfun, "~Target", ...)
return scl.list_format_cost_or_target_or_operation(effect_arr)
end
function rsop.target(...)
local effect_arr = s.get_effect_array(nil, nil, "~Target", ...)
return scl.list_format_cost_or_target_or_operation(effect_arr)
end
function rsop.target2(endfun, ...)
local effect_arr = s.get_effect_array(nil, endfun, "~Target", ...)
return scl.list_format_cost_or_target_or_operation(effect_arr)
end
function rsop.target3(checkfun, ...)
local effect_arr = s.get_effect_array(checkfun, nil, "~Target", ...)
return scl.list_format_cost_or_target_or_operation(effect_arr)
end
function rscost.cost0(checkfun, endfun, ...)
local effect_arr = s.get_effect_array(checkfun, endfun, "Cost", ...)
return scl.list_format_cost_or_target_or_operation(effect_arr)
end
function rscost.cost(...)
local effect_arr = s.get_effect_array(nil, nil, "Cost", ...)
return scl.list_format_cost_or_target_or_operation(effect_arr)
end
function rscost.cost2(endfun, ...)
local effect_arr = s.get_effect_array(nil, endfun, "Cost", ...)
return scl.list_format_cost_or_target_or_operation(effect_arr)
end
function rscost.cost3(checkfun, ...)
local effect_arr = s.get_effect_array(checkfun, nil, "Cost", ...)
return scl.list_format_cost_or_target_or_operation(effect_arr)
end
function rsop.cost(...)
local effect_arr = s.get_effect_array(checkfun, nil, "Operation", ...)
return scl.list_format_cost_or_target_or_operation(effect_arr)
end
rsop.list = function(...)
return {"~Target", ...}
end
rstg.list = function(...)
return {"Target", ...}
end
rscost.list = function(...)
return {"Cost", ...}
end
rscost.rmct = scl.cost_remove_counter
rscost.rmct2 = scl.cost_remove_counter_from_field
rscost.rmxmat = scl.cost_detach_xyz_material
rscost.setlab = scl.cost_set_copy_status
rscost.paylp = scl.cost_pay_lp
rscost.paylp2 = scl.cost_pay_lp_in_multiples
rscost.chnlim = scl.cost_set_once_per_chain_limit
rscon.turns = scl.cond_check_tp(0)
rscon.turno = scl.cond_check_tp(1)
rscon.phmp = scl.cond_check_phase("M1,M2", 2)
rscon.phbp = scl.cond_check_phase("BP", 2)
rscon.prepup = scl.cond_check_position("+",true)
function rstg.chnlim(sp, op)
return function(g, e, tp)
Duel.SetChainLimit(rsval.chainlimit(sp, op, g))
end
end
function rsval.chainlimit(sp, op, g)
return function(e, rp, tp)
if type(sp) == "nil" and type(op) == "nil" then
sp = "s,t,m"
op = "s,t,m"
end
if sp and rp == tp and rstg.chainlimit_check(sp, g, e, rp, tp)
then return false
end
if op and rp ~= tp and rstg.chainlimit_check(op, g, e, rp, tp)
then return false
end
return true
end
end
function rstg.chainlimit_check(p_val, g, e, rp, tp)
local c = e:GetHandler()
if type(p_val) == "string" then
return rsef.Effect_Type_Check(p_val, e)
elseif type(p_val) == "function" then
return not p_val(e, rp, tp, g)
end
end
function rscon.sumtyps(typ)
return function(e, tp)
return scl.cond_check_summon_type(s.sum_list[typ], false)(e, tp)
end
end
function rscon.sumtypf(typ)
return function(e, tp, eg)
return scl.cond_check_summon_type(s.sum_list[typ], true)(e, tp, eg)
end
end
s.effect_type_list = {
["s"] = "Spell", ["t"] = "Trap", ["a"] = "Activate", ["m"] = "Monster",
["sa"] = "SpellActivate", ["ta"] = "TrapActivate"
}
function rscon.dis(dn_filter, pl_fun)
if type(dn_filter) == "string" then
local new_str = s.effect_type_list[dn_filter]
return scl.negate_activation_or_effect_con("NegateEffect" ,{new_str, pl_fun })
else
local f = function(e, tp, ev, re, rp, tg, loc, seq, cp)
return dn_filter(e, tp, re, rp, tg, loc, seq, atp)
end
return scl.negate_activation_or_effect_con("NegateEffect", { f, pl_fun })
end
end
function rscon.neg(dn_filter, pl_fun)
if type(dn_filter) == "string" then
local new_str = s.effect_type_list[dn_filter]
return scl.negate_activation_or_effect_con("NegateActivation" ,{new_str, pl_fun })
else
local f = function(e, tp, ev, re, rp, tg, loc, seq, cp)
return dn_filter(e, tp, re, rp, tg, loc, seq, atp)
end
return scl.negate_activation_or_effect_con("NegateActivation", { f, pl_fun })
end
end
function rscon.excard(...)
local arr = { ... }
return function(...)
return scl.cond_check_cards(false, table.unpack(arr))(...)
end
end
function rscon.excard2(...)
local arr = { ... }
return function(...)
return scl.cond_check_cards(true, table.unpack(arr))(...)
end
end
function rscon.sumtolz(link_filter, sum_filter)
return function(e, tp, eg, ep, ev, re, r, rp)
local c = e:GetHandler()
local zone = 0
local link_group = Group.CreateGroup()
if rsof.Check_Boolean(link_filter) then
link_group = rsgf.Mix2(c)
else
link_group = Duel.GetMatchingGroup(link_filter, tp, LOCATION_MZONE, LOCATION_MZONE, nil, e, tp, eg, ep, ev, re, rp)
end
for tc in aux.Next(link_group) do
zone = zone | tc:GetLinkedZone(tp)
end
return eg:IsExists(rscon.sumtolz_filter, 1, nil, zone, sum_filter, e, tp, eg, ep, ev, re, rp)
end
end
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
local seq = c:GetSequence()
if c:IsLocation(LOCATION_MZONE) then
if c:IsControler(1 - tp) then seq = seq + 16 end
else
seq = c:GetPreviousSequence()
if c:GetPreviousControler() == 1 - tp then seq = seq + 16 end
end
return bit.extract(zone, seq) ~= 0
end
function rsop.SelectExPara(a1, ...)
return Scl.SetExtraSelectAndOperateParama(s.ctgy_list[a1], ...)
end
function rsop.SelectCards(a1, ...)
return Scl.SelectCards(s.ctgy_list[a1], ...)
end
function rsop.OperateCards(a1, ...)
local list = { ... }
return function(...)
return Scl.SelectAndOperateCards(s.ctgy_list[a1], table.unpack(list))(...)
end
end
function rsgf.SelectCards(a1, ...)
return Scl.SelectCardsFromGroup(s.ctgy_list[a1], ...)
end
function rsgf.OperateCards(a1, ...)
local list = { ... }
return function(...)
return Scl.SelectAndOperateCardsFromGroup(s.ctgy_list[a1], table.unpack(list))(...)
end
end
function rsop.Equip(e, equip_card, equip_target, keep_face_up, equip_oppo_side, equip_quick_buff)
local tp = e:GetHandlerPlayer()
if equip_quick_buff then
local arr = s.switch_old_buff_list(equip_quick_buff)
Scl.AddEquipBuff(nil, table.unpack(arr))
end
local ct = Scl.Equip(equip_card, equip_target, equip_oppo_side and 1 - tp or tp, keep_face_up)
return ct > 0
end
rsop.GetOperatedCorrectlyCount = Scl.GetCorrectlyOperatedCount
rsop.CheckOperateCorrectly = Scl.IsCorrectlyOperated
function rsop.ToDeckDraw(dp, dct, is_break, check_count)
local res, ct, g = rsop.CheckOperateCorrectly(rsloc.de, check_count)
if not res then return 0 end
if g:IsExists(Card.IsLocation, 1, nil, LOCATION_DECK) then
Duel.ShuffleDeck(dp)
end
if is_break then
Duel.BreakEffect()
end
return Duel.Draw(dp, dct, REASON_EFFECT)
end
rsop.SendtoHand = Scl.Send2Hand
function rsop.MoveToField_Activate(tc, movep, targetp, zone, pos, enable, zone)
return Scl.Activate2Field(tc, actp)
end
function rsop.DisableCards(card_obj, neg_eff, force, reset)
return Scl.NegateCardEffects(card_obj, force, reset)
end
function rsop.Overlay(e, xyzc, obj, set_sum_mat, ex_over)
return Scl.AttachAsXyzMaterial(obj, xyzc, set_sum_mat, ex_over)
end
rszsf.GetMZoneCount = Scl.GetMZoneCount4Summoning
rszsf.GetMZoneCombineForFirstMonster = Scl.GetMZoneCombine4SummoningFirstMonster
rszsf.GetSZoneCount = Scl.GetSZoneCount
function rszsf.GetSurroundingZone(c, p, truezone, contain_self)
return Scl.GetSurroundingZone(c, "MonsterZone", p, contain_self), Scl.GetSurroundingZone(c, "Spell&TrapZone", p, contain_self), Scl.GetSurroundingZone(c, "OnField", p, contain_self)
end
rsgf.dnpcheck = Scl.IsDifferentControler
rsgf.GetSurroundingGroup = Scl.GetSurroundingGroup
function rsgf.GetSurroundingGroup2(seq, loc, cp, contains)
local zone = aux.SequenceToGlobal(cp, loc, seq)
return Scl.GetSurroundingGroup(zone, contains)
end
rsgf.GetAdjacentGroup = Scl.GetAdjacentGroup
function rsgf.GetAdjacentGroup2(seq, loc, cp, contains)
local zone = aux.SequenceToGlobal(cp, loc, seq)
return Scl.GetAdjacentGroup(zone, contains)
end
function rsgf.GetTargetGroup(...)
local g,_ = Scl.GetTargetsReleate2Chain(...)
return g
end
rsgf.Mix = Scl.MixIn2Group
rsgf.Mix2 = Scl.Mix2Group
function rscf.DefineCard(code, inside_series_str)
local cm, m = Scl.SetID(code, inside_series_str)
return m, cm
end
function rscf.DefineSet(setmeta, seriesstring, type_int)
local prefixlist1 = { "", "Fus", "Link", "Pre", "Ori" }
local prefixlist1_fun = { "", "Fusion", "Link", "Previous", "Original" }
local prefixlist2 = { "", "M", "S", "T", "ST" }
local prefixlist2_fun = { nil, TYPE_MONSTER, TYPE_SPELL, TYPE_TRAP, TYPE_SPELL + TYPE_TRAP }
local suffixlist1 = { "", "_th", "_tg", "_td", "_rm", "_sp1", "_sp2" }
local suffixlist1_fun = { nil, Card.IsAbleToHand, Card.IsAbleToGrave, Card.IsAbleToDeck, Card.IsAbleToRemove, rscf.spfilter(), rscf.spfilter2() }
type_int = type_int or ""
for idx1, prefix1 in pairs(prefixlist1) do
for idx2, prefix2 in pairs(prefixlist2) 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)
end
end
end
end
function rscf.DefineSet_Fun(prefix1, prefix2, suffix1, seriesstring)
return function(c, ...)
return rscf["Check"..prefix1.."SetCard"](c, seriesstring) and (not prefix2 or c:IsType(prefix2))
and (not suffix1 or suffix1(c, ...))
end
end
function s.get_quick_buff_new_arr(...)
local arr = { ... }
local new_arr = { }
for idx, elm in pairs(arr) do
if type(elm) == "string" then
if elm == "reset" or elm == "rst" then
table.insert(new_arr, "Reset")
table.insert(new_arr, arr[idx + 1])
else
local str_arr = Scl.SplitString(elm)
for _, elm2 in pairs(str_arr) do
table.insert(new_arr, s.buff_code_list[elm2])
if idx ~= #arr and type(arr[idx + 1]) ~= "string" then
table.insert(new_arr, arr[idx + 1])
else
table.insert(new_arr, 1)
end
end
end
end
end
return new_arr
end
function rscf.QuickBuff(reg_obj, ...)
local new_arr = s.get_quick_buff_new_arr(...)
if aux.GetValueType(reg_obj) == "Card" or (type(reg_obj) == "table" and reg_obj[1] == reg_obj[2]) then
return Scl.AddSingleBuff2Self(reg_obj, table.unpack(new_arr))
else
return Scl.AddSingleBuff(reg_obj, table.unpack(new_arr))
end
end
function rscf.QuickBuff_ND(reg_obj, ...)
local new_arr = s.get_quick_buff_new_arr(...)
return Scl.AddSingleBuff(reg_obj, table.unpack(new_arr))
end
function rscf.GetSelf(e)
local c1, c2 = Scl.GetActivateCard()
return c2
end
function rscf.GetFaceUpSelf(e)
local c1, c2 = Scl.GetActivateCard(true)
return c2
end
function rscf.AddSpecialSummonProcdure(reg_obj, zone, con, tg, op, desc_obj, lim_obj, val, rst_obj)
local lim_obj2 = s.switch_old_count_limit(lim_obj)
return Scl.AddSpecialSummonProcedure(reg_obj, zone, con, tg, op, desc_obj, lim_obj2, val, nil, nil, nil, rst_obj)
end
rscf.SetSummonCondition = Scl.SetSummonCondition
rscf.CheckSetCard = Scl.IsSeries
Card.CheckSetCard = Scl.IsSeries
rscf.CheckFusionSetCard = Scl.IsFusionSeries
Card.CheckFusionSetCard = Scl.IsFusionSeries
rscf.CheckLinkSetCard = Scl.IsLinkSeries
Card.CheckLinkSetCard = Scl.IsLinkSeries
rscf.CheckOriginalSetCard = Scl.IsOriginalSeries
Card.CheckOriginalSetCard = Scl.IsOriginalSeries
rscf.CheckPreviousSetCard = Scl.IsPreviousSeries
Card.CheckPreviousSetCard = Scl.IsPreviousSeries
rssf.AddSynchroProcedureSpecial = Scl.AddSynchroProcedure
rscf.AddXyzProcedureSpecial = Scl.AddlXyzProcedure
rscf.AddLinkProcedureSpecial = Scl.AddlLinkProcedure
rscf.IsSurrounding = Scl.IsSurrounding
rscf.IsPreviousSurrounding = Scl.IsPreviouslySurrounding
function rscf.GetTargetCard(...)
local _, tc = Scl.GetTargetsReleate2Chain(...)
return tc
end
rscf.EnableDarkSynchroAttribute = Scl.EnableDarkSynchroAttribute
rscf.EnableDarkTunerAttribute = Scl.EnableDarkTunerAttribute
rscf.IsDarkSynchro = Scl.IsDarkSynchro
rscf.IsDarkTuner = Scl.IsDarkTuner
rscf.DarkTuner = Scl.DarkTuner
function rscf.fufilter(f, ...)
local ext_paramms = { ... }
return function(target)
return f(target, table.unpack(ext_paramms)) and target:IsFaceup()
end
end
function rscf.spfilter(f1, ...)
local list = { ... }
return function(c, e, tp, ...)
return Scl.IsCanBeSpecialSummonedNormaly(c, e, tp) and (not f1 or f1(c, table.unpack(list)))
end
end
function rscf.spfilter2(f1, ...)
local list = { ... }
return function(c, e, tp, ...)
return Scl.IsCanBeSpecialSummonedNormaly2(c, e, tp) and (not f1 or f1(c, table.unpack(list)))
end
end
rscf.RemovePosCheck = Scl.FaceupOrNotBeBanished
Card.RemovePosCheck = Scl.FaceupOrNotBeBanished
rscf.FieldPosCheck = Scl.FaceupOrNotOnField
Card.FieldPosCheck = Scl.FaceupOrNotOnField
function rscf.rdesfilter(f1, ...)
local list = { ... }
return function(c, e, tp, ...)
return Scl.IsDestructableForReplace(c) and (not f1 or f1(c, table.unpack(list)))
end
end
function rscf.IsComplexType(c, type1, type2, ...)
if type(type2) == "boolean" then
return Scl.IsCardType(c, type1, ...)
else
return Scl.IsCardType(c, 0, type1, type2, ...)
end
end
Card.IsComplexType = rscf.IsComplexType
function rscf.IsPreviousComplexType(c, type1, type2, ...)
if type(type2) == "boolean" then
return Scl.IsPreviousType(c, type1, ...)
else
return Scl.IsPreviousType(c, 0, type1, type2, ...)
end
end
Card.IsPreviousComplexType = rscf.IsPreviousComplexType
function rscf.IsOriginalComplexType(c, type1, type2, ...)
if type(type2) == "boolean" then
return Scl.IsOriginalType(c, type1, ...)
else
return Scl.IsOriginalType(c, 0, type1, type2, ...)
end
end
Card.IsOriginalComplexType = rscf.IsOriginalComplexType
function rscf.IsComplexReason(c, re1, re2, ...)
if type(re2) == "boolean" then
return Scl.IsReason(c, re1, ...)
else
return Scl.IsReason(c, 0, re1, re2, ...)
end
end
Card.IsComplexReason = rscf.IsComplexReason
function rshint.Select(p, hint_obj)
if type(hint_obj) == "string" then
hint_obj = s.ctgy_list[hint_obj]
end
return Scl.HintSelect(p, hint_obj)
end
rshint.Card = Scl.HintCard
function rshint.SelectYesNo(v1, v2, ...)
local new_hint = v2
if type(v2) == "string" then
new_hint = s.ctgy_list[v2]
end
return Scl.SelectYesNo(v1, new_hint, ...)
end
function rshint.SelectOption(p, ...)
local new_arr = { }
for idx, elm in pairs({ ... }) do
if type(elm) == "string" then
table.insert(new_arr, s.ctgy_list[elm])
else
table.insert(new_arr, elm)
end
end
return Scl.SelectOption(p, table.unpack(new_arr))
end
rsreset = rsrst
rsrst.est = rsrst.std
rsrst.est_d = rsrst.std_dis
rsrst.pend = rsrst.ep
rsrst.est_pend = rsrst.std_ep
rsrst.ered = rsrst.ret
rszsf.GetUseAbleMZoneCount = function(c, p1, leave_val, p2, zone)
return rszsf.GetMZoneCount(p1, leave_val, p2, c, zone)
end
rszsf.GetUseAblePZoneCount = rszsf.GetPZoneCount
rscf.FilterFaceUp = rscf.fufilter
rscf.GetRelationThisCard = rscf.GetFaceUpSelf
rsval.imntg1 = rsval.imntges
rsval.imntg2 = rsval.imntgoe
--//
rscost.reglabel = rscost.setlab
rscost.rmxyz = rscost.rmxmat
rscost.lpcost = rscost.paylp
rscost.lpcost2 = rscost.paylp2
rscost.regflag = rscost.chnlim
rscost.regflag2 = function(flag_code)
return function(...)
return rscost.chnlim(flag_code, true)(...)
end
end
--//
rscon.sumtype = rscon.sumtyps
rscon.sumtypes = rscon.sumtyps
rscon.bsdcheck = rssf.CheckBlueEyesSpiritDragon
--//
rstg.chainlimit = rstg.chnlim
--//
rsop.SelectYesNo = rshint.SelectYesNo
rsop.SelectOption = rshint.SelectOption
rsop.eqop = rsop.Equip
function rsop.SelectOC(would_string, break_able, select_string)
return Scl.SetExtraSelectAndOperateParama(not would_string or s.ctgy_list[wolud_string], break_able, select_string)
end
rsop.CheckOperateSuccess = rsop.CheckOperateCorrectly
rsef.SV = rsef.SV_Card
rsef.SV_UTILITY_XYZ_MATERIAL = rsef.SV_UtilityXyzMaterial
rsef.SV_ACTIVATE_SPECIAL = rsef.SV_ActivateDirectly_Special
rsef.SV_CANNOT_DISABLE_S = rsef.SV_CannotDisable_NoEffect
rsef.SV_EXTRA_MATERIAL = rsef.SV_ExtraMaterial
rsef.FV = rsef.FV_Player --- only 33700938 33700940 call this function, and all of them call this function to register a player buff, so don't need to define rsef.FV_Card.
rsef.FV_EXTRA_MATERIAL = rsef.FV_ExtraMaterial
rsef.FV_EXTRA_MATERIAL_SELF = rsef.FV_ExtraMaterial_Self
rsef.ACT_EQUIP = rsef.A_Equip
rsef.STO_FLIP = rsef.STO_Flip
rsef.STF_FLIP = rsef.STF_Flip
rsef.FC_PHASELEAVE = rsef.FC_PhaseLeave
rsef.FC_PhaseLeave = function(reg_list, leave_val, times, whos, phase, leaveway, val_reset_list, ex_con)
return rsef.FC_PhaseOpearte(reg_list, leave_val, times, whos, phase, nil, leaveway, val_reset_list)
end
rsef.ACT = rsef.A
rscon.negcon = function(dn_filter, pl_fun)
return function(...)
local dn_list = { [0] = "All", [1] = "Avtivate,Monster", [2] = "Monster", [3] = "Activate", [4] = "Spell,Trap" }
if type(dn_filter) == "number" then
dn_filter = dn_list[dn_filter]
end
local dn_filter2 = dn_filter
if type(dn_filter) == "function" then
dn_filter2 = function(e, tp, ev, re, rp, tg, loc, seq, cp)
return dn_filter(e, tp, re, rp, tg)
end
end
if pl_fun then pl_fun = pl_fun and 1 or 0 end
return scl.negate_activation_or_effect_con("NegateActivation", dn_filter2, pl_fun)(...)
end
end
rscon.discon = function(dn_filter, pl_fun)
return function(...)
local dn_list = { [0] = "All", [1] = "Avtivate,Monster", [2] = "Monster", [3] = "Activate", [4] = "Spell,Trap" }
if type(dn_filter) == "number" then
dn_filter = dn_list[dn_filter]
end
local dn_filter2 = dn_filter
if type(dn_filter) == "function" then
dn_filter2 = function(e, tp, ev, re, rp, tg, loc, seq, cp)
return dn_filter(e, tp, re, rp, tg)
end
end
if pl_fun then pl_fun = pl_fun and 1 or 0 end
return scl.negate_activation_or_effect_con("NegateEffect", dn_filter2, pl_fun)(...)
end
end
rsef.QO_NEGATE = function(reg_list, dn_type, lim_list, dn_str, range, con, cost, desc_list, cate, flag, reset_list)
if dn_type == "neg" then
return rsef.QO_NegateActivation(reg_list, dn_str, lim_list, range, con, cost, cate, flag, nil, nil, desc_list, reset_list)
elseif dn_type == "dis" then
return rsef.QO_NegateEffect(reg_list, dn_str, lim_list, range, con, cost, cate, flag, nil, nil, desc_list, reset_list)
end
end
rstg.negtg = rstg.neg
rstg.distg = rstg.neg
rsop.negop = rsop.neg
rsop.disop = rsop.dis
--//
rscf.SetSpecialSummonProduce = function(reg_list,range,con,op,desc_list,lim_list,reset_list)
return rscf.AddSpecialSummonProcdure(reg_list,range,con,nil,op,desc_list,lim_list,nil,reset_list)
end
--//
rsop.SelectSolve = function(sel_hint, sp, filter, tp, loc_self, loc_oppo, minct, maxct, except_obj, solve_list, ...)
solve_list = type(solve_list) == "table" and solve_list or { solve_list }
local para1 = solve_list[1]
if #solve_list == 0 then return
rsop.SelectCards(sel_hint, sp, filter, tp, loc_self, loc_oppo, minct, maxct, except_obj, ...)
elseif para1 and type(para1) == "function" then
local g = rsop.SelectCards(sel_hint, sp, filter, tp, loc_self, loc_oppo, minct, maxct, except_obj, ...)
if #g <= 0 then
return 0, g
end
local para_list = { }
local total_list = Scl.MixArrays(solve_list, { ... })
for idx, val in pairs(total_list) do
if idx > 1 then
table.insert(para_list, val)
end
end
return para1(g, table.unpack(para_list))
else
return rsop.SelectOperate(sel_hint, sp, filter, tp, loc_self, loc_oppo, minct, maxct, except_obj, solve_list, ...)
end
end
rsgf.SelectSolve = function(g, sel_hint, sp, filter, minct, maxct, except_obj, solve_list, ...)
solve_list = type(solve_list) == "table" and solve_list or { solve_list }
local para1 = solve_list[1]
if #solve_list == 0 then return
rsgf.SelectCards(sel_hint, g, sp, filter, minct, maxct, except_obj, ...)
elseif para1 and type(para1) == "function" then
local g = rsgf.SelectCards(sel_hint, g, sp, filter, minct, maxct, except_obj, ...)
if #g <= 0 then
return 0, g
end
local para_list = { }
local total_list = rsof.Table_Mix(solve_list, { ... })
for idx, val in pairs(total_list) do
if idx > 1 then
table.insert(para_list, val)
end
end
return para1(g, table.unpack(para_list))
else
return rsgf.SelectOperate(sel_hint, g, sp, filter, minct, maxct, except_obj, solve_list, ...)
end
end
local selectfun_list = {
["ToHand"] = "th", ["ToGrave"] = "tg", ["Release"] = "res", ["ToDeck"] = "td", ["Destroy"] = "des", ["Remove"] = "rm",
["SpecialSummon"] = "sp", ["MoveToField"] = "tf", ["MoveToField_Activate"] = "act", ["SSet"] = "sset"
}
for str_idx, str_val in pairs(selectfun_list) do
rsop["Select"..str_idx] = function(sp, filter, tp, loc_self, loc_oppo, minct, maxct, except_obj, solve_parama, ...)
return rsop.SelectOperate(str_val, sp, filter, tp, loc_self, loc_oppo, minct, maxct, except_obj, solve_parama or {}, ...)
end
rsgf["Select"..str_idx] = function(g, sp, filter, minct, maxct, except_obj, solve_parama, ...)
return rsgf.SelectOperate(str_val, g, sp, filter, minct, maxct, except_obj, solve_parama or {}, ...)
end
end
--//
--Function: Select and solve
function rsop.SelectOperate(sel_hint, sp, filter, tp, loc_self, loc_oppo, minct, maxct, except_obj, solve_arr, ...)
return rsop.OperateCards(sel_hint, sp, filter, tp, loc_self, loc_oppo, minct, maxct, except_obj, ...)(table.unpack(solve_arr))
end
function rsgf.SelectOperate(sel_hint, g, sp, filter, minct, maxct, except_obj, solve_arr, ...)
return rsgf.OperateCards(sel_hint, g, sp, filter, minct, maxct, except_obj, ...)(table.unpack(solve_arr))
end
function rsef.INDESTRUCTABLE_List(inds_list)
local inds_list2 = string.gsub(inds_list, "battle", "indb")
inds_list2 = string.gsub(inds_list2, "effect", "inde")
inds_list2 = string.gsub(inds_list2, "ct", "indct")
inds_list2 = string.gsub(inds_list2, "all", "ind")
return inds_list2
end
--Single Val Effect: Cannot destroed
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)
return rsef.SV_Card(reg_list, inds_list2, val_list, nil, flag, con, reset_list, desc_list, lim_list)
end
--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)
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)
end
--Single Val Effect: Immue effects
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)
end
--Field Val Effect: Immue effects
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)
end
--Single Val Effect: Directly set ATK & DEF
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)
end
--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)
return rsef.SV_Card(reg_list, change_list, val_list, flag, nil, con, reset_list, desc_list)
end
--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)
return rsef.FV_Card(reg_list, change_list, val_list, tg, tg_range_list, flag, nil, con, reset_list, desc_list)
end
--Single Val Effect: Update attribute
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 = ""
for idx, string in pairs(str_list) do
if idx > 1 then
str = str .. ","
end
str = str .. string .. "+"
end
return rsef.SV_Card(reg_list, str, val_list, flag, nil, con, reset_list, desc_list)
end
--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)
local str_list = Scl.UniformSclParamaFormat(up_list)
local str = ""
for idx, string in pairs(str_list) do
if idx > 1 then
str = str .. ","
end
str = str .. string .. "+"
end
return rsef.FV_Card(reg_list, str, val_list, tg, tg_range_list, flag, nil, con, reset_list, desc_list)
end
--Single Val Effect: Add attribute
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)
end
--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)
return rsef.FV_UPDATE(reg_list, add_list, val_list, tg, tg_range_list, flag, nil, con, reset_list, desc_list)
end
--Single Val Effect: Material lim_
function rsef.SV_CANNOT_BE_MATERIAL(reg_list, mat_list, val_list, con, reset_list, flag, desc_list)
local flag2 = rsef.GetRegisterProperty(nil, flag)
flag2 = flag2 | (EFFECT_FLAG_CANNOT_DISABLE + EFFECT_FLAG_UNCOPYABLE)
local str_list = Scl.UniformSclParamaFormat(mat_list)
local str_list2 = { }
local string2
for _, string in pairs(str_list) do
string2 = string.sub(string,1,1)
table.insert(str_list2, string2.."mat~")
end
return rsef.SV_Card(reg_list, str_list2, val_list, flag2, nil, con, reset_list, desc_list)
end
--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)
local tg_list2 = string.gsub(tg_list, "battle", "tgb~")
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)
end
--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)
local tg_list2 = string.gsub(tg_list, "battle", "tgb~")
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)
end
--Cannot disable
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 dis_list2 = Scl.SplitString(dis_list,",")
local dis_list3 = ""
for _, str in pairs(dis_list2) do
dis_list3 = dis_list3 .. compare_list[str] .. ","
end
dis_list3 = string.sub(dis_list3, 1, -2)
return dis_list3
end
--Single Val Effect: Cannot disable
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)
return rsef.SV_Card(reg_list, dis_list2, val_list, flag, range, con, reset_list, desc_list)
end
function rsef.SV_CANNOT_DISABLE_val(e, ct)
local te = Duel.GetChainInfo(ct, CHAININFO_TRIGGERING_EFFECT)
return te:GetHandler() == e:GetHandler()
end
--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)
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)
end
--Limit List
function rsef.LIMIT_List(lim_list)
local str_list = Scl.UniformSclParamaFormat(lim_list)
local str_list2 = { }
for _, string in pairs(str_list) do
if string ~= "dis" and string ~= "distm" and string ~= "dise"
and string ~= "sbp" and string ~= "sm1" and string ~= "sm2"
and string ~= "sdp" and string ~= "ssp" then
string = string.."~"
end
string = string.gsub(string, "datk~", "atkd~")
table.insert(str_list2, string)
end
return str_list2
end
--Single Val Effect: Other Limit
function rsef.SV_LIMIT(reg_list, lim_list, val_list, con, reset_list, flag, desc_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)
end
--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)
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)
end
--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)
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)
end
--Leave field list
function rsef.REDIRECT_LIST(leave_list)
local str_list = Scl.UniformSclParamaFormat(leave_list)
local str_list2 = { }
for _, string in pairs(str_list) do
if string == "leave" then
table.insert(str_list2, "rlf")
else
table.insert(str_list2, "r"..string)
end
end
return str_list2
end
--Single Val Effect: Leave field redirect
function rsef.SV_REDIRECT(reg_list, leave_list, val_list, con, reset_list, flag, desc_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)
end
--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)
local str_list2 = rsef.REDIRECT_LIST(leave_list)
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
flag2 = flag2 | EFFECT_FLAG_IGNORE_RANGE
end
return rsef.FV_Card(reg_list, str_list2, val_list, tg, tg_range_list, flag2, nil, con, reset_list, desc_list)
end
--Single Val Effect: Activate Trap / Quick Spell immediately
function rsef.SV_ACTIVATE_IMMEDIATELY(reg_list, act_list, con, reset_list, flag, desc_list)
local act_list2
local reg_owner, reg_handler = Scl.GetRegisterInfo(reg_list)
if reg_handler:IsComplexType(TYPE_QUICKPLAY + TYPE_SPELL) then
act_list2 = string.gsub(act_list, "hand", "qah")
act_list2 = string.gsub(act_list2, "set", "qas")
elseif reg_handler:IsComplexType(TYPE_TRAP) then
act_list2 = string.gsub(act_list, "hand", "tah")
act_list2 = string.gsub(act_list2, "set", "tas")
end
return rsef.SV_Card(reg_list, act_list2, 1, flag, 0xff, con, reset_list, desc_list)
end
--cost: tribute self
function rscost.releaseself(check_mzone, check_exzone)
return function(e, tp, eg, ep, ev, re, r, rp, chk)
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
Duel.Release(c, REASON_COST)
end
end
rsof.Table_List = Scl.IsArrayContains_Single
\ No newline at end of file
--Real Scl Version - Variable
local Version_Number = 20210618
local m = 10199990
local vm = 10199991
if rsv then return end
rsv = { } --"Base Function"
rscf = { } --"Card Function"
rsgf = { } --"Group Function"
rsef = { } --"Effect Function"
rszsf = { } --"Zone Sequence Function"
rsof = { } --"Other Function"
rssf = { } --"Summon Function"
rscode = { } --"Code Function"
rsval = { } --"Value Function"
rscon = { } --"Condition Function"
rscost = { } --"Cost Function"
rstg = { } --"Target Function"
rsop = { } --"Operation Function"
rscate = { } --"Category Function"
rsflag = { } --"Property Function"
rsrst = { } --"Reset Function"
rshint = { } --"Hint Function"
rsloc = { } --"Location Function"
rsdv = "Divide_Variable"
rsnv = "Nil_Variable"
--Info Variable
rsval.valinfo = { } --"Value for inside series, inside type etc."
rscost.costinfo = { } --"Cost information, for record cost value"
rsop.opinfo = { } --"Operation information, for record something"
rsef.relationinfo = { } --"Field,Pendulum,Continous leave field"
rstg.targetlist = { } --"Target group list, for rstg.GetTargetAttribute"
rscf.proc_record = { }
rstg.tk_list = { }
rscf.fieldinfo = { }
rsef.attach_before_arr = { } --"record attach effects, for 10170008 to repeat"
rsef.attach_after_arr = { }
rsef.attach_base_arr = { }
rsef.effet_no_register = false
rsop.chk = 1 --"rsop Check"
rsop.chk_e = nil
rsop.chk_p = 0
rscf.synchro_material_action = { } --"Custom syn material's action"
rscf.xyz_material_action = { } --"Custom xyz material's action"
rscf.link_material_action = { } --"Custom link material's action"
rssf.synchro_material_group_check = nil -- "For material check syn proc"
--mt.rs_synchro_parameter = { } --"Record Synchro procedure materials"
--mt.rs_xyz_parameter = { } --"Record Xyz procedure materials"
--mt.rs_link_parameter = { } --"Record Link procedure materials"
--mt.rs_synchro_procudure = nil --"Record Synchro procedure"
--mt.rs_xyz_procudure = nil --"Record Xyz procedure"
--mt.rs_link_procudure = nil --"Record Link procedure"
rscf.Previous_Set_Code_List = { } --"For Built-in Previous Set Code"
--mt.rs_synchro_level --"No level synchro monster's level"
--mt.rs_ritual_level --"No level ritual monster's level"
rsef.FC_Global_List = { } --"For rsef.GlobalEffects"
--Reset Variable
rsrst.ep = RESET_PHASE + PHASE_END
rsrst.sp = RESET_PHASE + PHASE_STANDBY
rsrst.bp = RESET_PHASE + PHASE_BATTLE
rsrst.std = RESET_EVENT + RESETS_STANDARD
rsrst.std_dis = RESET_EVENT + RESETS_STANDARD+RESET_DISABLE
rsrst.std_ntf = rsrst.std - RESET_TOFIELD
rsrst.std_ep = rsrst.std + rsrst.ep
rsrst.ret = RESET_EVENT + RESETS_REDIRECT
--Code Variable
rscode.Attach_Effect = m + 100 --"Attach Effect"
rscode.Attach_Effect_2 = m + 101
rscode.Phase_Leave_Flag = m + 200 --"Summon Flag for SummonBuff"
rscode.Extra_Synchro_Material = m + 300 --"Extra Synchro Material"
rscode.Extra_Xyz_Material = m + 301 --"Extra Xyz Material"
rscode.Utility_Xyz_Material = m + 400 --"Utility Xyz Material"
rscode.Previous_Set_Code = m + 500 --"Previous Set Code"
rscode.Synchro_Material = m + 600 --"Record synchro proceudre target"
rscode.Pre_Complete_Proc = m + 700 --"Previous c:CompleteProcedure"
rscode.Special_Procedure = m + 900
rscode.Summon_Count_Limit = m + 201 --"for rsop.SetSpecialSummonCount"
rscode.Set = m + 800 --"EVENT_SET"
--Hint Message Variable
rshint.nohint = false
rshint.nohint_sel = false
rshint.ce = aux.Stringid(23912837,1) --"choose 1 effect"
rshint.spproc = aux.Stringid(m,4) --"SS by self produce"
rshint.rstcp = aux.Stringid(43387895,1) --"reset copy effect"
rshint.epleave = aux.Stringid(m,3) --"end phase leave field buff"
rshint.stgct = aux.Stringid(83531441,2) --"select send to the GY number"
rshint.sdrct = aux.Stringid(m,5) --"select draw number"
rshint.darktuner = aux.Stringid(m,14) --"treat as dark tuner"
rshint.darksynchro = aux.Stringid(m,15) --"treat as dark synchro"
rshint.scl_exproc = aux.Stringid(m,12) -- "special extra monster spsummon proc"
rshint.attach_card = aux.Stringid(m, 8)
rshint.attach_effect = aux.Stringid(m, 9)
rshint.copy = aux.Stringid(m, 10)
--Effect type Variable
rsef.type_list = {
["s"] = { TYPE_SPELL }, ["t"] = { TYPE_TRAP }, ["m"] = { TYPE_MONSTER }
,["a"] = { nil, EFFECT_TYPE_ACTIVATE }
,["ta"] = { TYPE_TRAP, EFFECT_TYPE_ACTIVATE }, ["sa"] = { TYPE_SPELL, EFFECT_TYPE_ACTIVATE }
}
--Property Variable
rsflag.list = {
["tg"] = EFFECT_FLAG_CARD_TARGET, ["ptg"] = EFFECT_FLAG_PLAYER_TARGET, ["de"] = EFFECT_FLAG_DELAY, ["dsp"] = EFFECT_FLAG_DAMAGE_STEP
, ["dcal"] = EFFECT_FLAG_DAMAGE_CAL, ["ii"] = EFFECT_FLAG_IGNORE_IMMUNE, ["sa"] = EFFECT_FLAG_SET_AVAILABLE, ["ir"] = EFFECT_FLAG_IGNORE_RANGE
, ["sr"] = EFFECT_FLAG_SINGLE_RANGE, ["bs"] = EFFECT_FLAG_BOTH_SIDE, ["uc"] = EFFECT_FLAG_UNCOPYABLE
, ["ch"] = EFFECT_FLAG_CLIENT_HINT, ["lz"] = EFFECT_FLAG_LIMIT_ZONE, ["atg"] = EFFECT_FLAG_ABSOLUTE_TARGET
, ["sp"] = EFFECT_FLAG_SPSUM_PARAM, ["ep"] = EFFECT_FLAG_EVENT_PLAYER, ["oa"] = EFFECT_FLAG_OATH , ["ntr"] = EFFECT_FLAG_NO_TURN_RESET
, ["neg~"] = EFFECT_FLAG_CANNOT_INACTIVATE
, ["cn"] = EFFECT_FLAG_CANNOT_NEGATE, ["dise~"] = EFFECT_FLAG_CANNOT_NEGATE
, ["cd"] = EFFECT_FLAG_CANNOT_DISABLE , ["dis~"] = EFFECT_FLAG_CANNOT_DISABLE
}
--Category Variable
-- [str] = { description, category, select_hint, effect_hint, would_hint, operation(fun, total_parama_len, parama1, ...) }
--operation for rsop.operationcard(selected_group, reason, e, tp, eg, ep, ev, re, r, rp)
rsof.reason_fun = { }
function rsof.ExR(exr)
local f = function(r)
return r | exr
end
rsof.reason_fun[f] = true
return f
end
function rsof.Get_Cate_Hint_Op_List()
local sg = "solve_parama"
local tp = "activate_player"
local r = "reason"
local e = "activate_effect"
rscate.cate_selhint_list = {
["des"] = { "Destroy", CATEGORY_DESTROY, HINTMSG_DESTROY, { 1571945,0 }, { 20590515,2 }, { rsop.Destroy, 3, sg, r } }
, ["rdes"] = { "Destroy Replace", CATEGORY_DESTROY, HINTMSG_DESTROY, { 1571945,0 }, { 20590515,2 }, { rsop.Destroy, 3, sg, rsof.ExR(REASON_REPLACE) } }
, ["res"] = { "Release", CATEGORY_RELEASE, HINTMSG_RELEASE, { 33779875,0 }, nil, { rsop.Release, 2, sg, r } }
, ["rm"] = { "Remove Face-Up", CATEGORY_REMOVE, HINTMSG_REMOVE, { 612115,0 }, { 93191801,2 }, { rsop.Remove, 3, sg, POS_FACEUP, r } }
, ["rmd"] = { "Remove Face-Down", CATEGORY_REMOVE, HINTMSG_REMOVE, { 612115,0 }, { 93191801,2 }, { rsop.Remove, 3, sg, POS_FACEDOWN, r } }
, ["se"] = { "Search", CATEGORY_SEARCH, 0, { 135598,0 } }
, ["th"] = { "Add to Hand", CATEGORY_TOHAND, HINTMSG_ATOHAND, { 1249315,0 }, { 26118970,1 }, { rsop.SendtoHand, 4, sg, nil, r } }
, ["rth"] = { "Return to Hand", CATEGORY_TOHAND, HINTMSG_RTOHAND, { 13890468,0 }, { 9464441,2 }, { rsop.SendtoHand, 4, sg, nil, r } }
, ["td"] = { "Send to Deck", CATEGORY_TODECK, HINTMSG_TODECK, { 4779823,1 }, { m,6 }, { rsop.SendtoDeck, 4, sg, nil, 2, r} }
, ["tdt"] = { "Send to Deck-Top", CATEGORY_TODECK, HINTMSG_TODECK, { 55705473,1 }, { m,6 }, { rsop.SendtoDeck, 4, sg, nil, 2, r} }
, ["tdb"] = { "Send to Deck-Bottom", CATEGORY_TODECK, HINTMSG_TODECK, { 55705473,2 }, { m,6 }, { rsop.SendtoDeck, 4, sg, nil, 0, r} }
, ["ptdt"] = { "Place to Deck-Top", 0, { 45593826,3 }, { 15521027,3 } }
, ["ptdb"] = { "Place to Deck-Bottom",0, 0, { 15521027,4 } }
, ["te"] = { "Send to Extra", CATEGORY_TOEXTRA, HINTMSG_TODECK, { 4779823,1 }, { m,6 }, { rsop.SendtoExtra, 4, sg, nil, 2, r} }
, ["tde"] = { "Send to Main or Extra", CATEGORY_TODECK, HINTMSG_TODECK, { 4779823,1 }, { m,6 }, { rsop.SendtoMAndE, 4, sg, nil, 2, r} }
, ["pte"] = { "Pendulum to Extra", CATEGORY_TOEXTRA, { 24094258,3 }, { 18210764,0 }, nil, { rsop.SendtoExtraP, 3, sg, nil, r} }
, ["tg"] = { "Send to Grave", CATEGORY_TOGRAVE, HINTMSG_TOGRAVE, { 1050186,0 }, { 62834295,2 }, { rsop.SendtoGrave, 2, sg, r} }
, ["rtg"] = { "Return to Grave", CATEGORY_TOGRAVE, { 48976825,0 }, { 28039390,1 }, 0, { rsop.SendtoGrave, 2, sg, rsof.ExR(REASON_RETURN)} }
, ["dtg"] = { "Discard to Grave", CATEGORY_HANDES + CATEGORY_TOGRAVE, HINTMSG_DISCARD, { 18407024,0 }, { 43332022,1 }, { rsop.SendtoGrave, 2, sg, rsof.ExR(REASON_DISCARD)} }
, ["dish"] = { "Discard Hand", CATEGORY_HANDES, HINTMSG_DISCARD, { 18407024,0 }, { 43332022,1 }, { rsop.SendtoGrave, 2, sg, rsof.ExR(REASON_DISCARD)} }
, ["dh"] = { "Discard Hand", CATEGORY_HANDES, HINTMSG_DISCARD, { 18407024,0 }, { 43332022,1 }, { rsop.SendtoGrave, 2, sg, rsof.ExR(REASON_DISCARD)} }
, ["dishf"] = { "Discard Hand Function", CATEGORY_HANDES, HINTMSG_DISCARD, { 18407024,0 }, { 43332022,1 }, { rsop.SendtoGrave, 2, sg, rsof.ExR(REASON_DISCARD)} }
, ["dhf"] = { "Discard Hand Function", CATEGORY_HANDES, HINTMSG_DISCARD, { 18407024,0 }, { 43332022,1 }, { rsop.SendtoGrave, 2, sg, rsof.ExR(REASON_DISCARD)} }
, ["disd"] = { "Discard Deck", CATEGORY_DECKDES, 0, { 13995824,0 }, nil, { rsop.DiscardDeck_Special, 2, sg, r } }
, ["dd"] = { "Discard Deck", CATEGORY_DECKDES, 0, { 13995824,0 }, nil, { rsop.DiscardDeck_Special, 2, sg, r } }
, ["dr"] = { "Draw", CATEGORY_DRAW, 0, { 4732017,0 }, { 3679218,1 } }
, ["dam"] = { "Damage", CATEGORY_DAMAGE, 0, { 3775068,0 }, { 12541409,1 } }
, ["rec"] = { "Recovery", CATEGORY_RECOVER, 0, { 16259549,0 }, { 54527349,0 } }
, ["sum"] = { "Normal Summon", CATEGORY_SUMMON, HINTMSG_SUMMON, { 65247798,0 }, { 41139112,0 } }
, ["tk"] = { "Token", CATEGORY_TOKEN, 0, { 9929398,0 }, { 2625939,0 } }
, ["sp"] = { "Special Summon", CATEGORY_SPECIAL_SUMMON, HINTMSG_SPSUMMON, { 74892653,2 }, { 17535764,1 }, { rssf.SpecialSummon, 10, sg, 0, tp, tp, false, false, POS_FACEUP } }
, ["cp"] = { "Change Position", CATEGORY_POSITION, HINTMSG_POSCHANGE, { 3648368,0 }, { m,2 }, { rsop.ChangePosition, 7, sg } }
, ["pos"] = { "Change Position", CATEGORY_POSITION, HINTMSG_POSCHANGE, { 3648368,0 }, { m,2 }, { rsop.ChangePosition, 7, sg } }
, ["upa"] = { "Change to POS_FACEUP_ATTACK", CATEGORY_POSITION, HINTMSG_POSCHANGE, { 359563,0 }, { m,2 }, { rsop.ChangePosition, 7, sg, POS_FACEUP_ATTACK } }
, ["upd"] = { "Change to POS_FACEUP_DEFENSE", CATEGORY_POSITION, HINTMSG_POSCHANGE, { 52158283,1 }, { m,2 }, { rsop.ChangePosition, 7, sg, POS_FACEUP_DEFENSE } }
, ["dpd"] = { "Change to POS_FACEDOWN_DEFENSE", CATEGORY_POSITION, HINTMSG_SET, { 359563,0 }, { m,2 }, { rsop.ChangePosition, 7, sg, POS_FACEDOWN_DEFENSE } }
, ["posd"] = { "Change to POS_DEFENSE", CATEGORY_POSITION, HINTMSG_SET, { 359563,0 }, { m,2 }, { rsop.ChangePosition, 7, sg, POS_DEFENSE } }
, ["ctrl"] = { "Get Control", CATEGORY_CONTROL, HINTMSG_CONTROL, { 4941482,0 }, nil, { rsop.GetControl, 5, sg, tp, 0, 0, 0xff } }
, ["sctrl"] = { "Switch Control", CATEGORY_CONTROL, HINTMSG_CONTROL, { 36331074,0 } }
, ["dis"] = { "Disable Effect", CATEGORY_DISABLE, HINTMSG_DISABLE, { 39185163,1 }, { 25166510,2 }, { rsop.DisableCards, 4, sg, e, false, rsrst.std } }
, ["diss"] = { "Disable Summon", CATEGORY_DISABLE_SUMMON, 0, { m,1 } }
, ["neg"] = { "Negate Activation", CATEGORY_NEGATE, 0, { 19502505,1 } }
, ["eq"] = { "Equip", CATEGORY_EQUIP, HINTMSG_EQUIP, { 68184115,0 }, { 35100834,0 } }
, ["atk"] = { "Change Attack", CATEGORY_ATKCHANGE, HINTMSG_FACEUP, { 7194917,0 } }
, ["def"] = { "Change Defense", CATEGORY_DEFCHANGE, HINTMSG_FACEUP, { 7194917,0 } }
, ["ct"] = { "Counter", CATEGORY_COUNTER, HINTMSG_COUNTER, { 3070049,0 } }
, ["pct"] = { "Place Counter", CATEGORY_COUNTER, HINTMSG_COUNTER, { 3070049,0 } }
, ["rct"] = { "Remove Counter", CATEGORY_COUNTER, HINTMSG_COUNTER, { 67234805,0 } }
, ["rmct"] = { "Remove Counter", CATEGORY_COUNTER, HINTMSG_COUNTER, { 67234805,0 } }
, ["coin"] = { "Toss Coin", CATEGORY_COIN, 0, { 17032740,1 } }
, ["dice"] = { "Toss Dice",CATEGORY_DICE, 0, { 42421606,0 } }
, ["an"] = { "Announce Card", CATEGORY_ANNOUNCE, 0 }
, ["lv"] = { "Change Level", 0, HINTMSG_FACEUP, { 9583383,0 } }
, ["fus"] = { "Fusion Summon", CATEGORY_FUSION_SUMMON, 0, { 7241272,1 } }
, ["ga"] = { "Grave Action", CATEGORY_GRAVE_ACTION, 0 }
, ["gsp"] = { "Grave Special Summon", CATEGORY_GRAVE_SPSUMMON, 0 }
, ["lg"] = { "Leave Grave", CATEGORY_LEAVE_GRAVE, 0 }
, ["cf"] = { "Confirm (can show public)", 0, HINTMSG_CONFIRM, {51351302, 0}, nil, { rsop.ConfirmCards, 1, sg } }
, ["rv"] = { "Reveal, (cannot show public)", 0, HINTMSG_CONFIRM, {51351302, 0}, nil, { rsop.RevealCards, 2, sg } }
, ["rvep"] = { "Reveal until End-Phase", 0, HINTMSG_CONFIRM, {51351302, 0}, nil, { rsop.RevealCards, 2, sg, rsrst.std_ep } }
, ["tf"] = { "Move to Field", 0, HINTMSG_TOFIELD, { m,7 }, nil, { rsop.MoveToField, 7, sg, tp } }
, ["act"] = { "Activate", 0, HINTMSG_RESOLVEEFFECT, { m,0 }, nil, { rsop.MoveToField_Activate, 7, sg, tp } }
, ["rf"] = { "Return to Field", 0, { 80335817,0 }, nil, nil, { rsop.ReturnToField, 3, sg } }
, ["rtf"] = { "Return to Field", 0, { 80335817,0 }, nil, nil, { rsop.ReturnToField, 3, sg } }
, ["ae"] = { "Apply 1 Effect from Many", 0, HINTMSG_RESOLVEEFFECT, { 9560338,0 } }
, ["set"] = { "SSet", 0, HINTMSG_SET, { 2521011,0 }, { 30741503,1 } }
, ["sset"] = { "SSet", 0, HINTMSG_SET, { 2521011,0 }, { 30741503,1 }, { rsop.SSet, 4, sg, tp, tp }}
, ["xmat"] = { "Attach Xyz Material", 0, HINTMSG_XMATERIAL, { 55285840,0 } }
, ["axmat"] = { "Attach Xyz Material", 0, HINTMSG_XMATERIAL, { 55285840,0 } }
, ["rxmat"] = { "Remove Xyz Material", 0, HINTMSG_REMOVEXYZ, { 55285840,1 } }
, ["rmxmat"] = { "Remove Xyz Material", 0, HINTMSG_REMOVEXYZ, { 55285840,1 } }
, ["ms"] = { "Move Sequence", 0, { m,3 }, { 25163979,1 } }
, ["dum"] = { "Dummy Operate", 0, HINTMSG_OPERATECARD, 0, 0, { rsop.DummyOperate, 1, sg } }
, ["self"] = { "Select Your Card(s)", 0, HINTMSG_OPERATECARD, 0, 0, { rsop.DummyOperate, 1, sg } }
, ["oppo"] = { "Select Your Card(s)", 0, HINTMSG_OPERATECARD, 0, 0, { rsop.DummyOperate, 1, sg } }
}
--Switch Hint Format
local hint = 0
for str, val in pairs(rscate.cate_selhint_list) do
for idx = 3, 5 do
if val[idx] then
hint = rshint.SwitchHintFormat(nil, val[idx])
val[idx] = hint
end
end
end
end
--Card Type Variable
rscf.typelist = { TYPE_MONSTER,TYPE_NORMAL,TYPE_EFFECT,TYPE_DUAL,TYPE_UNION,TYPE_TOON,TYPE_TUNER,TYPE_RITUAL,TYPE_FUSION,TYPE_SYNCHRO,TYPE_XYZ,TYPE_LINK,TYPE_TOKEN,TYPE_PENDULUM,TYPE_SPSUMMON,TYPE_FLIP,TYPE_SPIRIT,
TYPE_SPELL,TYPE_EQUIP,TYPE_FIELD,TYPE_CONTINUOUS,TYPE_QUICKPLAY,
TYPE_TRAP,TYPE_COUNTER,TYPE_TRAPMONSTER }
rscf.extype = TYPE_FUSION+TYPE_SYNCHRO+TYPE_XYZ+TYPE_LINK
rscf.extype_r = rscf.extype + TYPE_RITUAL
rscf.extype_p = rscf.extype + TYPE_PENDULUM
rscf.extype_rp = rscf.extype + TYPE_RITUAL + TYPE_PENDULUM
rscf.exlist = { TYPE_FUSION,TYPE_SYNCHRO,TYPE_XYZ,TYPE_LINK }
rscf.exlist_r = { TYPE_FUSION,TYPE_SYNCHRO,TYPE_XYZ,TYPE_LINK,TYPE_RITUAL }
rscf.exlist_p = { TYPE_FUSION,TYPE_SYNCHRO,TYPE_XYZ,TYPE_LINK,TYPE_PENDULUM }
rscf.exlist_rp = { TYPE_FUSION,TYPE_SYNCHRO,TYPE_XYZ,TYPE_LINK,TYPE_PENDULUM,TYPE_RITUAL }
rscf.sum_list = {
["sp"] = { SUMMON_TYPE_SPECIAL }, ["adv"] = { SUMMON_TYPE_ADVANCE }, ["rit"] = { SUMMON_TYPE_RITUAL, TYPE_RITUAL }
, ["fus"] = { SUMMON_TYPE_FUSION, TYPE_FUSION }, ["syn"] = { SUMMON_TYPE_SYNCHRO, TYPE_SYNCHRO }, ["xyz"] = { SUMMON_TYPE_XYZ, TYPE_XYZ }
, ["link"] = { SUMMON_TYPE_LINK, TYPE_LINK }, ["pen"] = { SUMMON_TYPE_PENDULUM }, ["sps"] = { SUMMON_TYPE_SPECIAL + SUMMON_VALUE_SELF }
, ["dual"] = { SUMMON_TYPE_DUAL }, ["flip"] = { SUMMON_TYPE_FLIP }, ["sum"] = { SUMMON_TYPE_NORMAL }
}
--Location Variable
rsloc.hd = LOCATION_HAND+LOCATION_DECK
rsloc.hm = LOCATION_HAND+LOCATION_MZONE
rsloc.ho = LOCATION_HAND+LOCATION_ONFIELD
rsloc.hg = LOCATION_HAND+LOCATION_GRAVE
rsloc.dg = LOCATION_DECK+LOCATION_GRAVE
rsloc.gr = LOCATION_GRAVE+LOCATION_REMOVED
rsloc.dgr = LOCATION_DECK+LOCATION_GRAVE+LOCATION_REMOVED
rsloc.hdg = LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE
rsloc.de = LOCATION_DECK+LOCATION_EXTRA
rsloc.mg = LOCATION_MZONE+LOCATION_GRAVE
rsloc.og = LOCATION_ONFIELD+LOCATION_GRAVE
rsloc.hmg = LOCATION_HAND+LOCATION_MZONE+LOCATION_GRAVE
rsloc.hog = LOCATION_HAND+LOCATION_ONFIELD+LOCATION_GRAVE
rsloc.all = 0xff
function rsef.Get_Value_Effect_Attribute_List()
--[string] = { eff_code, eff_hint, eff_val, eff_ctlimit, extra_flag_for_singel, extra_flag_for_field, extra_reset }
local code_list = {
["atk"] = { EFFECT_SET_ATTACK }, ["def"] = { EFFECT_SET_DEFENSE }
, ["batk"] = { EFFECT_SET_BASE_ATTACK }, ["bdef"] = { EFFECT_SET_BASE_DEFENSE }
, ["fatk"] = { EFFECT_SET_ATTACK_FINAL }, ["fdef"] = { EFFECT_SET_DEFENSE_FINAL }
, ["atkf"] = { EFFECT_SET_ATTACK_FINAL }, ["deff"] = { EFFECT_SET_DEFENSE_FINAL }
, ["lv"] = { EFFECT_CHANGE_LEVEL }, ["rk"] = { EFFECT_CHANGE_RANK }, ["ls"] = { EFFECT_CHANGE_LSCALE }
, ["rs"] = { EFFECT_CHANGE_RSCALE }, ["code"] = { EFFECT_CHANGE_CODE }, ["att"] = { EFFECT_CHANGE_ATTRIBUTE }
, ["race"] = { EFFECT_CHANGE_RACE }, ["type"] = { EFFECT_CHANGE_TYPE }, ["fatt"] = { EFFECT_CHANGE_FUSION_ATTRIBUTE }
, ["datk"] = { EFFECT_SET_BATTLE_ATTACK }, ["ddef"] = { EFFECT_SET_BATTLE_DEFENSE }
, ["atk+"] = { EFFECT_UPDATE_ATTACK }, ["def+"] = { EFFECT_UPDATE_DEFENSE }, ["lv+"] = { EFFECT_UPDATE_LEVEL }
, ["rk+"] = { EFFECT_UPDATE_RANK }, ["ls+"] = { EFFECT_UPDATE_LSCALE }, ["rs+"] = { EFFECT_UPDATE_RSCALE }
, ["code+"] = { EFFECT_ADD_CODE }, ["att+"] = { EFFECT_ADD_ATTRIBUTE }, ["race+"] = { EFFECT_ADD_RACE }
, ["set+"] = { EFFECT_ADD_SETCODE }, ["type+"] = { EFFECT_ADD_TYPE }, ["fatt+"] = { EFFECT_ADD_FUSION_ATTRIBUTE }
, ["fcode+"] = { EFFECT_ADD_FUSION_CODE }, ["fset+"] = { EFFECT_ADD_FUSION_SETCODE }, ["latt+"] = { EFFECT_ADD_LINK_ATTRIBUTE }
, ["lrace+"] = { EFFECT_ADD_LINK_RACE }, ["lcode+"] = { EFFECT_ADD_LINK_CODE }, ["lset+"] = { EFFECT_ADD_LINK_SETCODE }
, ["type-"] = { EFFECT_REMOVE_TYPE }, ["race-"] = { EFFECT_REMOVE_RACE }, ["att-"] = { EFFECT_REMOVE_ATTRIBUTE }
, ["indb"] = { EFFECT_INDESTRUCTABLE_BATTLE }, ["inde"] = { EFFECT_INDESTRUCTABLE_EFFECT }
, ["indct"] = { EFFECT_INDESTRUCTABLE_COUNT, nil, rsval.indct, nil, 1 }, ["ind"] = { EFFECT_INDESTRUCTABLE }
, ["im"] = { EFFECT_IMMUNE_EFFECT, rsval.imes }
, ["fmat~"] = { EFFECT_CANNOT_BE_FUSION_MATERIAL }, ["fsmat~"] = { EFFECT_CANNOT_BE_FUSION_MATERIAL, rsval.fusslimit }
, ["smat~"] = { EFFECT_CANNOT_BE_SYNCHRO_MATERIAL }, ["ssmat~"] = { EFFECT_CANNOT_BE_SYNCHRO_MATERIAL }
, ["xmat~"] = { EFFECT_CANNOT_BE_XYZ_MATERIAL }, ["xsmat~"] = { EFFECT_CANNOT_BE_XYZ_MATERIAL }
, ["lmat~"] = { EFFECT_CANNOT_BE_LINK_MATERIAL }, ["lsmat~"] = { EFFECT_CANNOT_BE_LINK_MATERIAL }
, ["tgb~"] = { EFFECT_CANNOT_BE_BATTLE_TARGET, aux.imval1, nil, nil, EFFECT_FLAG_IGNORE_IMMUNE }
, ["tge~"] = { EFFECT_CANNOT_BE_EFFECT_TARGET, 1, nil, nil, EFFECT_FLAG_IGNORE_IMMUNE }
, ["dis"] = { EFFECT_DISABLE }, ["dise"] = { EFFECT_DISABLE_EFFECT }, ["tri~"] = { EFFECT_CANNOT_TRIGGER }
, ["atk~"] = { EFFECT_CANNOT_ATTACK }, ["atkan~"] = { EFFECT_CANNOT_ATTACK_ANNOUNCE }, ["atkd~"] = { EFFECT_CANNOT_DIRECT_ATTACK }
, ["ress~"] = { EFFECT_UNRELEASABLE_SUM }, ["resns~"] = { EFFECT_UNRELEASABLE_NONSUM }, ["td~"] = { EFFECT_CANNOT_TO_DECK }
, ["th~"] = { EFFECT_CANNOT_TO_HAND }, ["cost~"] = { EFFECT_CANNOT_USE_AS_COST }
, ["rm~"] = { EFFECT_CANNOT_REMOVE }, ["ctrl~"] = { EFFECT_CANNOT_CHANGE_CONTROL }
, ["distm"] = { EFFECT_DISABLE_TRAPMONSTER }
, ["pos~"] = { EFFECT_CANNOT_CHANGE_POSITION, nil, nil, EFFECT_FLAG_SET_AVAILABLE }
, ["pose~"] = { EFFECT_CANNOT_CHANGE_POS_E, nil, nil, EFFECT_FLAG_SET_AVAILABLE }
, ["cp~"] = { EFFECT_CANNOT_CHANGE_POSITION, nil, nil, EFFECT_FLAG_SET_AVAILABLE }
, ["cpe~"] = { EFFECT_CANNOT_CHANGE_POSITION, nil, nil, EFFECT_FLAG_SET_AVAILABLE }
, ["act~"] = { EFFECT_CANNOT_ACTIVATE }, ["sum~"] = { EFFECT_CANNOT_SUMMON }, ["sp~"] = { EFFECT_CANNOT_SPECIAL_SUMMON }
, ["dr~"] = { EFFECT_CANNOT_DRAW }, ["tg~"] = { EFFECT_CANNOT_TO_GRAVE }, ["res~"] = { EFFECT_CANNOT_RELEASE }
, ["sset~"] = { EFFECT_CANNOT_SSET }, ["mset~"] = { EFFECT_CANNOT_MSET }, ["dh~"] = { EFFECT_CANNOT_DISCARD_HAND }
, ["dd~"] = { EFFECT_CANNOT_DISCARD_DECK }, ["fp~"] = { EFFECT_CANNOT_FLIP_SUMMON }, ["tgc~"] = { EFFECT_CANNOT_TO_GRAVE_AS_COST }
, ["sbp"] = { EFFECT_SKIP_BP }, ["sm1"] = { EFFECT_SKIP_M1 }, ["sm2"] = { EFFECT_SKIP_M2 }
, ["sdp"] = { EFFECT_SKIP_DP }, ["ssp"] = { EFFECT_SKIP_SP }
, ["rtg"] = { EFFECT_TO_GRAVE_REDIRECT, LOCATION_REMOVED, nil, EFFECT_FLAG_CANNOT_DISABLE, EFFECT_FLAG_IGNORE_IMMUNE + EFFECT_FLAG_SET_AVAILABLE, RESETS_REDIRECT }
, ["rtd"] = { EFFECT_TO_DECK_REDIRECT, LOCATION_REMOVED, nil, EFFECT_FLAG_CANNOT_DISABLE, EFFECT_FLAG_IGNORE_IMMUNE + EFFECT_FLAG_SET_AVAILABLE, RESETS_REDIRECT }
, ["rth"] = { EFFECT_TO_HAND_REDIRECT, LOCATION_REMOVED, nil, EFFECT_FLAG_CANNOT_DISABLE, EFFECT_FLAG_IGNORE_IMMUNE + EFFECT_FLAG_SET_AVAILABLE, RESETS_REDIRECT }
, ["rlf"] = { EFFECT_LEAVE_FIELD_REDIRECT, LOCATION_REMOVED, nil, EFFECT_FLAG_CANNOT_DISABLE, EFFECT_FLAG_IGNORE_IMMUNE + EFFECT_FLAG_SET_AVAILABLE, RESETS_REDIRECT }
, ["rlve"] = { EFFECT_LEAVE_FIELD_REDIRECT, LOCATION_REMOVED, nil, EFFECT_FLAG_CANNOT_DISABLE, EFFECT_FLAG_IGNORE_IMMUNE + EFFECT_FLAG_SET_AVAILABLE, RESETS_REDIRECT }
, ["leave"] = { EFFECT_LEAVE_FIELD_REDIRECT, LOCATION_REMOVED, nil, EFFECT_FLAG_CANNOT_DISABLE, EFFECT_FLAG_IGNORE_IMMUNE + EFFECT_FLAG_SET_AVAILABLE, RESETS_REDIRECT }
, ["qah"] = { EFFECT_QP_ACT_IN_NTPHAND }, ["qas"] = { EFFECT_QP_ACT_IN_SET_TURN,1, nil, EFFECT_FLAG_SET_AVAILABLE, EFFECT_FLAG_SET_AVAILABLE }
, ["tah"] = { EFFECT_TRAP_ACT_IN_HAND }, ["tas"] = { EFFECT_TRAP_ACT_IN_SET_TURN, 1, nil, EFFECT_FLAG_SET_AVAILABLE, EFFECT_FLAG_SET_AVAILABLE }
, ["atkex"] = { EFFECT_EXTRA_ATTACK }, ["atkexm"] = { EFFECT_EXTRA_ATTACK_MONSTER }, ["atka"] = { EFFECT_ATTACK_ALL }
, ["pce"] = { EFFECT_PIERCE }, ["atkd"] = { EFFECT_DIRECT_ATTACK }
, ["atkpd"] = { EFFECT_DEFENSE_ATTACK }
, ["dis~"] = { EFFECT_CANNOT_DISABLE, 1, nil, EFFECT_FLAG_CANNOT_DISABLE }
, ["dsum~"] = { EFFECT_CANNOT_DISABLE_SUMMON, 1, nil, EFFECT_FLAG_CANNOT_DISABLE + EFFECT_FLAG_UNCOPYABLE, EFFECT_FLAG_SET_AVAILABLE }
, ["dsp~"] = { EFFECT_CANNOT_DISABLE_SPSUMMON, 1, nil, EFFECT_FLAG_CANNOT_DISABLE + EFFECT_FLAG_UNCOPYABLE, EFFECT_FLAG_SET_AVAILABLE }
, ["dfp~"] = { EFFECT_CANNOT_DISABLE_FLIP_SUMMON, 1, nil, EFFECT_FLAG_CANNOT_DISABLE + EFFECT_FLAG_UNCOPYABLE, EFFECT_FLAG_SET_AVAILABLE }
, ["rdam"] = { EFFECT_REFLECT_DAMAGE, 1 }
, ["rdamb"] = { EFFECT_REFLECT_BATTLE_DAMAGE, 1 }
, ["dise~"] = { EFFECT_CANNOT_DISEFFECT }
, ["neg~"] = { EFFECT_CANNOT_INACTIVATE }
, ["mat"] = { EFFECT_MATERIAL_CHECK, 1, nil, nil, EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_RANGE }
, ["ormat"] = { EFFECT_OVERLAY_RITUAL_MATERIAL, 1 } , ["grmat"] = { EFFECT_EXTRA_RITUAL_MATERIAL, 1 }
, ["fmat"] = { EFFECT_EXTRA_FUSION_MATERIAL, 1 }
}
local affect_self_list = { "atk", "def", "atkf", "deff", "batk", "bdef"
, "lv", "rk", "ls", "rs", "code", "att", "race", "type", "fatt"
, "im", "indb", "inde", "indct", "ind", "tgb~", "tge~"
, "fcode", "fset", "latt", "lrace", "lcode", "lset"
, "ormat", "grmat", "fmat"
}
local affect_self_list2 = { }
for _, str in pairs(affect_self_list) do
table.insert(affect_self_list2, str)
table.insert(affect_self_list2, str.."+")
table.insert(affect_self_list2, str.."-")
end
return code_list, affect_self_list
end
rsef.value_code_list, rsef.value_affect_self_srt_list = rsef.Get_Value_Effect_Attribute_List()
--Escape Old Functions
function rsof.Escape_Old_Functions()
--//
rsreset = rsrst
rsrst.est = rsrst.std
rsrst.est_d = rsrst.std_dis
rsrst.pend = rsrst.ep
rsrst.est_pend = rsrst.std_ep
rsrst.ered = rsrst.ret
--// rszsf.get
rszsf.GetUseAbleMZoneCount = function(c, p1, leave_val, p2, zone)
return rszsf.GetMZoneCount(p1, leave_val, p2, c, zone)
end
rszsf.GetUseAblePZoneCount = rszsf.GetPZoneCount
--//
rscf.FilterFaceUp = rscf.fufilter
--//
rscf.GetRelationThisCard = rscf.GetFaceUpSelf
--//
rsval.imntg1 = rsval.imntges
rsval.imntg2 = rsval.imntgoe
--//
rscost.reglabel = rscost.setlab
rscost.rmxyz = rscost.rmxmat
rscost.lpcost = rscost.paylp
rscost.lpcost2 = rscost.paylp2
rscost.regflag = rscost.chnlim
rscost.regflag2 = function(flag_code)
return function(...)
return rscost.chnlim(flag_code, true)(...)
end
end
--//
rscon.sumtype = rscon.sumtyps
rscon.sumtypes = rscon.sumtyps
rscon.bsdcheck = rssf.CheckBlueEyesSpiritDragon
--//
rstg.chainlimit = rstg.chnlim
--//
rsop.SelectYesNo = rshint.SelectYesNo
rsop.SelectOption = rshint.SelectOption
rsop.AnnounceNumber = rshint.AnnounceNumber
rsop.eqop = rsop.Equip
rsop.SelectOC = rsop.SelectExPara
rsop.CheckOperateSuccess = rsop.CheckOperateCorrectly
rsef.SV_UTILITY_XYZ_MATERIAL = rsef.SV_UtilityXyzMaterial
rsef.SV_ACTIVATE_SPECIAL = rsef.SV_ActivateDirectly_Special
rsef.SV_CANNOT_DISABLE_S = rsef.SV_CannotDisable_NoEffect
rsef.SV_EXTRA_MATERIAL = rsef.SV_ExtraMaterial
rsef.FV_EXTRA_MATERIAL = rsef.FV_ExtraMaterial
rsef.FV_EXTRA_MATERIAL_SELF = rsef.FV_ExtraMaterial_Self
rsef.ACT_EQUIP = rsef.A_Equip
rsef.STO_FLIP = rsef.STO_Flip
rsef.STF_FLIP = rsef.STF_Flip
rsef.FC_PHASELEAVE = rsef.FC_PhaseLeave
rsef.FC_PhaseLeave = function(reg_list, leave_val, times, whos, phase, leaveway, val_reset_list, ex_con)
return rsef.FC_PhaseOpearte(reg_list, leave_val, times, whos, phase, nil, leaveway, val_reset_list)
end
rsef.ACT = rsef.A
--//
--some card use old SummonBuff's phase leave field parterment, must fix them in their luas
rssf.SummonBuff = function(attlist,isdis,isdistig,selfleave,phaseleave)
local bufflist = { }
if attlist then
for index,par in pairs(attlist) do
if par then
if index ==1 then att ="fatk" end
if index ==2 then att ="fdef" end
if index ==3 then att ="lv" end
table.insert(bufflist,att)
table.insert(bufflist,par)
end
end
end
if isdis then
table.insert(bufflist,"dis,dise")
table.insert(bufflist,true)
end
if isdistig then
table.insert(bufflist,"tri~")
table.insert(bufflist,true)
end
if selfleave then
table.insert(bufflist,"rlf")
table.insert(bufflist,selfleave)
end
return bufflist
end
rsop.list = function(...)
return {"opc", ...}
end
rstg.list = function(...)
return {"tg", ...}
end
rscon.negcon = function(dn_filter, pl_fun)
return function(...)
local dn_list = { [0] = "s,t,m", [1] = "a,m", [2] = "m", [3] = "a", [4] = "s,t" }
if type(dn_filter) == "number" then
dn_filter = dn_list[dn_filter]
end
if pl_fun then pl_fun = pl_fun and 1 or 0 end
return rscon.disneg("neg", dn_filter, pl_fun)(...)
end
end
rscon.discon = function(dn_filter, pl_fun)
return function(...)
local dn_list = { [0] = "s,t,m", [1] = "a,m", [2] = "m", [3] = "a", [4] = "s,t" }
if type(dn_filter) == "number" then
dn_filter = dn_list[dn_filter]
end
if pl_fun then pl_fun = pl_fun and 1 or 0 end
return rscon.disneg("dis", dn_filter, pl_fun)(...)
end
end
rsef.QO_NEGATE = function(reg_list, dn_type, lim_list, dn_str, range, con, cost, desc_list, cate, flag, reset_list)
return rsef.QO_Negate(reg_list, dn_type, dn_str, lim_list, range, con, cost, cate, flag, nil, nil, desc_list, reset_list)
end
rstg.negtg = rstg.neg
rstg.distg = rstg.dis
rsop.negop = rsop.neg
rsop.negop = rsop.dis
--//
rscf.SetSpecialSummonProduce = function(reg_list,range,con,op,desc_list,lim_list,reset_list)
return rscf.AddSpecialSummonProcdure(reg_list,range,con,nil,op,desc_list,lim_list,nil,reset_list)
end
--//
rsop.SelectSolve = function(sel_hint, sp, filter, tp, loc_self, loc_oppo, minct, maxct, except_obj, solve_list, ...)
solve_list = type(solve_list) == "table" and solve_list or { solve_list }
local para1 = solve_list[1]
if #solve_list == 0 then return
rsop.SelectCards(sel_hint, sp, filter, tp, loc_self, loc_oppo, minct, maxct, except_obj, ...)
elseif para1 and type(para1) == "function" then
local g = rsop.SelectCards(sel_hint, sp, filter, tp, loc_self, loc_oppo, minct, maxct, except_obj, ...)
local para_list = { }
local total_list = rsof.Table_Mix(solve_list, { ... })
for idx, val in pairs(total_list) do
if idx > 1 then
table.insert(para_list, val)
end
end
return para1(g, table.unpack(para_list))
else
return rsop.SelectOperate(sel_hint, sp, filter, tp, loc_self, loc_oppo, minct, maxct, except_obj, solve_list, ...)
end
end
rsgf.SelectSolve = function(g, sel_hint, sp, filter, minct, maxct, except_obj, solve_list, ...)
solve_list = type(solve_list) == "table" and solve_list or { solve_list }
local para1 = solve_list[1]
if #solve_list == 0 then return
rsgf.SelectCards(sel_hint, g, sp, filter, minct, maxct, except_obj, ...)
elseif para1 and type(para1) == "function" then
local g = rsgf.SelectCards(sel_hint, g, sp, filter, minct, maxct, except_obj, ...)
local para_list = { }
local total_list = rsof.Table_Mix(solve_list, { ... })
for idx, val in pairs(total_list) do
if idx > 1 then
table.insert(para_list, val)
end
end
return para1(g, table.unpack(para_list))
else
return rsgf.SelectOperate(sel_hint, g, sp, filter, minct, maxct, except_obj, solve_list, ...)
end
end
local selectfun_list = {
["ToHand"] = "th", ["ToGrave"] = "tg", ["Release"] = "res", ["ToDeck"] = "td", ["Destroy"] = "des", ["Remove"] = "rm",
["SpecialSummon"] = "sp", ["MoveToField"] = "tf", ["MoveToField_Activate"] = "act", ["SSet"] = "sset"
}
for str_idx, str_val in pairs(selectfun_list) do
rsop["Select"..str_idx] = function(sp, filter, tp, loc_self, loc_oppo, minct, maxct, except_obj, solve_parama, ...)
return rsop.SelectOperate(str_val, sp, filter, tp, loc_self, loc_oppo, minct, maxct, except_obj, solve_parama, ...)
end
rsgf["Select"..str_idx] = function(g, sp, filter, minct, maxct, except_obj, solve_parama, ...)
return rsgf.SelectOperate(str_val, g, sp, filter, minct, maxct, except_obj, solve_parama, ...)
end
end
--//
--Function: Select and solve
function rsop.SelectOperate(sel_hint, sp, filter, tp, loc_self, loc_oppo, minct, maxct, except_obj, solve_arr, ...)
return rsop.OperateCards(sel_hint, sp, filter, tp, loc_self, loc_oppo, minct, maxct, except_obj, ...)(table.unpack(solve_arr))
end
function rsgf.SelectOperate(sel_hint, g, sp, filter, minct, maxct, except_obj, solve_arr, ...)
return rsgf.OperateCards(sel_hint, g, sp, filter, minct, maxct, except_obj, ...)(table.unpack(solve_arr))
end
--//
end
-- Old functions # effects
-- Cannot destroed
function rsef.INDESTRUCTABLE_List(inds_list)
local inds_list2 = string.gsub(inds_list, "battle", "indb")
inds_list2 = string.gsub(inds_list2, "effect", "inde")
inds_list2 = string.gsub(inds_list2, "ct", "indct")
inds_list2 = string.gsub(inds_list2, "all", "ind")
return inds_list2
end
--Single Val Effect: Cannot destroed
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)
return rsef.SV_Card(reg_list, inds_list2, val_list, nil, flag, con, reset_list, desc_list, lim_list)
end
--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)
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)
end
--Single Val Effect: Immue effects
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)
end
--Field Val Effect: Immue effects
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)
end
--Single Val Effect: Directly set ATK & DEF
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)
end
--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)
return rsef.SV_Card(reg_list, change_list, val_list, flag, nil, con, reset_list, desc_list)
end
--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)
return rsef.FV_Card(reg_list, change_list, val_list, tg, tg_range_list, flag, nil, con, reset_list, desc_list)
end
--Single Val Effect: Update attribute
function rsef.SV_UPDATE(reg_list, up_list, val_list, con, reset_list, flag, desc_list)
local str_list = rsof.String_Number_To_Table(up_list)
local str_list2 = { }
for _, string in pairs(str_list) do
table.insert(str_list2, string.."+")
end
return rsef.SV_Card(reg_list, str_list2, val_list, flag, nil, con, reset_list, desc_list)
end
--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)
local str_list = rsof.String_Number_To_Table(up_list)
local str_list2 = { }
for _, string in pairs(str_list) do
table.insert(str_list2, string.."+")
end
return rsef.FV_Card(reg_list, str_list2, val_list, tg, tg_range_list, flag, nil, con, reset_list, desc_list)
end
--Single Val Effect: Add attribute
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)
end
--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)
return rsef.FV_UPDATE(reg_list, add_list, val_list, tg, tg_range_list, flag, nil, con, reset_list, desc_list)
end
--Single Val Effect: Material lim_
function rsef.SV_CANNOT_BE_MATERIAL(reg_list, mat_list, val_list, con, reset_list, flag, desc_list)
local flag2 = rsef.GetRegisterProperty(flag)
flag2 = flag2 | (EFFECT_FLAG_CANNOT_DISABLE + EFFECT_FLAG_UNCOPYABLE)
local str_list = rsof.String_Number_To_Table(mat_list)
local str_list2 = { }
local string2
for _, string in pairs(str_list) do
string2 = string.sub(string,1,1)
table.insert(str_list2, string2.."mat~")
end
return rsef.SV_Card(reg_list, str_list2, val_list, flag2, nil, con, reset_list, desc_list)
end
--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)
local tg_list2 = string.gsub(tg_list, "battle", "tgb~")
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)
end
--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)
local tg_list2 = string.gsub(tg_list, "battle", "tgb~")
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)
end
--Cannot disable
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 dis_list2 = rsof.String_Split(dis_list,",")
local dis_list3 = ""
for _, str in pairs(dis_list2) do
dis_list3 = dis_list3 .. compare_list[str] .. ","
end
dis_list3 = string.sub(dis_list3, 1, -2)
return dis_list3
end
--Single Val Effect: Cannot disable
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)
return rsef.SV_Card(reg_list, dis_list2, val_list, flag, range, con, reset_list, desc_list)
end
function rsef.SV_CANNOT_DISABLE_val(e, ct)
local te = Duel.GetChainInfo(ct, CHAININFO_TRIGGERING_EFFECT)
return te:GetHandler() == e:GetHandler()
end
--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)
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)
end
--Limit List
function rsef.LIMIT_List(lim_list)
local str_list = rsof.String_Number_To_Table(lim_list)
local str_list2 = { }
for _, string in pairs(str_list) do
if string ~= "dis" and string ~= "distm" and string ~= "dise"
and string ~= "sbp" and string ~= "sm1" and string ~= "sm2"
and string ~= "sdp" and string ~= "ssp" then
string = string.."~"
end
string = string.gsub(string, "datk~", "atkd~")
table.insert(str_list2, string)
end
return str_list2
end
--Single Val Effect: Other Limit
function rsef.SV_LIMIT(reg_list, lim_list, val_list, con, reset_list, flag, desc_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)
end
--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)
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)
end
--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)
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)
end
--Leave field list
function rsef.REDIRECT_LIST(leave_list)
local str_list = rsof.String_Number_To_Table(leave_list)
local str_list2 = { }
for _, string in pairs(str_list) do
if string == "leave" then
table.insert(str_list2, "rlf")
else
table.insert(str_list2, "r"..string)
end
end
return str_list2
end
--Single Val Effect: Leave field redirect
function rsef.SV_REDIRECT(reg_list, leave_list, val_list, con, reset_list, flag, desc_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)
end
--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)
local str_list2 = rsef.REDIRECT_LIST(leave_list)
local flag2 = rsef.GetRegisterProperty(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
flag2 = flag2 | EFFECT_FLAG_IGNORE_RANGE
end
return rsef.FV_Card(reg_list, str_list2, val_list, tg, tg_range_list, flag2, nil, con, reset_list, desc_list)
end
--Single Val Effect: Activate Trap / Quick Spell immediately
function rsef.SV_ACTIVATE_IMMEDIATELY(reg_list, act_list, con, reset_list, flag, desc_list)
local act_list2
local reg_owner, reg_handler = rsef.GetRegisterCard(reg_list)
if reg_handler:IsComplexType(TYPE_QUICKPLAY + TYPE_SPELL) then
act_list2 = string.gsub(act_list, "hand", "qah")
act_list2 = string.gsub(act_list2, "set", "qas")
elseif reg_handler:IsComplexType(TYPE_TRAP) then
act_list2 = string.gsub(act_list, "hand", "tah")
act_list2 = string.gsub(act_list2, "set", "tas")
end
return rsef.SV_Card(reg_list, act_list2, flag, nil, con, reset_list, desc_list)
end
--cost: tribute self
function rscost.releaseself(check_mzone, check_exzone)
return function(e, tp, eg, ep, ev, re, r, rp, chk)
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
Duel.Release(c, REASON_COST)
end
end
\ No newline at end of file
--Record Author
local am=10199992
local Version_Number=20200323
#Scl 852415212
local rsdka = Dakyria
local rsdio = Diablo
local rsnr = Night_Raven
local rsul = Utoland
local rsem = Eridiument
local rsxb = XB
local rsos = Oracle_Smith
local rssp = Stellar_Pearl
//local rsgd = Ghostdom_Dragon
local rsed = Epic_Dragon
local rsdh = Devil_Hunter
local rsds = Dark_Souls
local rsca = Corona
#Gale 1472676207
local rsve = Voison
local rsneov= Neons
local tfrsv = T.Fairies
local rsss = Star_Spirit
#ChiJiang 626386490
local rsnm = Nightmare
local rslf = Little_Fox
local rccv = Thermonuclear
local rsfn = Fake_News
local rsfw = Furry_Warrior
#XiaoMi 643865567
local rssg = Sex_Gun
local rsps = Pseudo_Soul
local rsdcc = Dragon_Chess_Corps
local rspq = Phantom_Quantum
local rssk = Shinkansen
local rsan = Arknights
local rseee = EEE
local rshr = Harmonic_Rhythm
local rsik = Infernal_Knight
local rsvw = Virus_Wrom
local rsia = Indolent_Angel
local rsso = Simulated_Organism
local rstr = True_Ritual
local rssww = Sheng_Wo_Wang
local rslx = Lian_Xin
#NianBao 583322404
local rslap = Lapin
local rskh = Karehana
#XiaoDaoHeng 1614895649
local rslrd = Life_DeathRound_Dance
#Huang 1184387005
local rsts = Trinity_Sword
#Luoxing 1151483512
local rsdt = Dark_Tale
local rsod = Order
local rsyzt = YanZeTown
#YunZeZhun 1587361112
local rsphh = Phantom_Thieves_Of_Hearts
local rsgc = Guard_City
#ZhenDong
local rsfv = Fgo/Assassin
#JingJing 1772438857
local rsba = Blue_Angel
#Akashic 3204027606
local rszg = Zogu
local rsgs = Gran_Sphere
local rsoc = Oligocene_Civilization
local rsgol = Giant_of_Light
local rssb = Space_Beasts
local rsufo = UFO_Saucer_Monster
#HeiBai 1172777968
local rstm = Toaru_Majutsu_no_Index
#2558566212
local rsgod = God
#02 1164477469
local rsva = VR_Aqua
//local = Tian_Zhi
local rswk = White_Moon_Knight
local rsisr = Israel
#ReiKai 2404873791
local rsch = Churck
#XueXiao 3234454893
local rsmd = Mrs_Dice
local rsxjm = XueJiMo
#HuangWu 1103516856
local rsdc = Dragon_Caller
#BoJue 1025644096
local rsad = Ancient_Dragon
local rsfwh = Flame_Witch
#ZhenLiXiYaZhiChongHuoMo 3129411731
local rsmmd = Mo_Jie_Di_Di
#Nayouduo 2847299505
local rsjy = Jie_Yu
#UR_WeiDu 897879904
local rsyj = Yu_Jian
#Scl - Special Mode 852415212
local rssm = Special_Mode
local rssmb = Special_Mode_Change_Base_Function
local rssmt = Special_Mode_Turbo_Duel
local rssma = Special_Mode_Action_Duel
local rssms = Special_Mode_Skill_Duel
local rssmi = Special_Mode_Infinite_Duel
local rssmf = Special_Mode_Fast_Duel
local rssmm = Special_Mode_Multiple_Duel
local rssmu = Special_Mode_Universal_Duel
--Set Code
#Scl
--local = 0x1330
local Alchement_Bio = 0x3330
local Chaos_Alchemy = 0x5330
local Azure-Wing_Mercenary = 0x6330
local Oracleoath = 0x9330
local Zrouf_Mantra = 0xa330
local Autumntale = 0xc330
--local = 0x1331
local Night_Raven = 0x3331
local Rainsoon = 0x5331
local Monsoonangel = 0x6331
local Dakyria = 0x9331
local Diablo = 0xa331
local Pure_Wing = 0xc331
--local = 0x1332
local Little_Fight = 0x3332
local Spellbinder = 0x5332
local Soulgem = 0x6332
local Eridiument = 0x9332
local Comic_Clown = 0xa332
local Gorkha = 0xc332
--local = 0x1333
local T.T.Hunter = 0x3333
local Treagon = 0x5333
local Treasure_Trove = 0x6333
local Epic_Dragon = 0x9333
local Stellar_Pearl = 0xa333
local Utoland = 0xc333
--local = 0x1334
local = 0x3334
local Summerlover = 0x5334
local Quasi_Beast = 0x6334
local Bite_Teech = 0x9334
local = 0xa334
local = 0xc334
--local = 0x1335
local Oraclesmith = 0x3335
local DevilHunter = 0x5335
local DevilSlayer = 0x6335
local DMC = 0x9335
local Ashenone = 0xa335
local Cinderlord = 0xc335
--local = 0x1336
local = 0x3336
local = 0x5336
local Fantastory = 0x6336
local = 0x9336
local Quantum_Driver = 0xa336
local = 0xc336
local Ghostdom_Dragon = 0x337
local Ghosaom_Dragon_King = 0x1337
--local = 0x1338
local Ectopialord = 0x3338
local Freedom_Fighter= 0x5338
local Zombieraser = 0x6338
local Sweet_Baby = 0x9338
local = 0xa338
local = 0xc338
local S.W. = 0x339
local S.W.C.C = 0x1339
local XB = 0x340
local XB_Z = 0x1340
local Action_Card = 0x3341
local Multiple_Deck = 0x5341
local Skill_Card = 0x6341
--黑月塔主·索托芙亚·塔维尔
local m=18700093
local cm=_G["c"..m]
xpcall(function() require("expansions/script/1") end,function() require("script/1") end)
function cm.initial_effect(c)
c:EnableReviveLimit()
aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsSetCard,0x822),aux.FilterBoolFunction(Card.IsFusionType,TYPE_EFFECT),true)
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(cm.spcon)
e1:SetOperation(cm.spop)
c:RegisterEffect(e1)
local e2=Effect.CreateEffect(c)
e2:SetDescription(aux.Stringid(m,0))
e2:SetType(EFFECT_TYPE_IGNITION)
e2:SetRange(LOCATION_MZONE)
e2:SetCountLimit(1,m)
e2:SetCondition(cm.spcon2)
e2:SetTarget(cm.ptg)
e2:SetOperation(cm.pop)
c:RegisterEffect(e2)
local e3=Effect.CreateEffect(c)
e3:SetDescription(aux.Stringid(m,1))
e3:SetCategory(CATEGORY_REMOVE+CATEGORY_DRAW)
e3:SetType(EFFECT_TYPE_QUICK_O)
e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP)
e3:SetCode(EVENT_FREE_CHAIN)
e3:SetRange(LOCATION_MZONE)
e3:SetHintTiming(TIMING_DAMAGE_STEP+TIMING_END_PHASE)
e3:SetCountLimit(1,m+1)
e3:SetCondition(cm.spcon3)
e3:SetTarget(cm.thtg)
e3:SetOperation(cm.thop)
c:RegisterEffect(e3)
end
function cm.svfilter(c)
return c:IsSetCard(0x822) and c:IsAbleToGrave()
end
function cm.spcon(e,c)
if c==nil then return true end
local tp=c:GetControler()
return Duel.IsExistingMatchingCard(cm.svfilter,tp,LOCATION_ONFIELD+LOCATION_HAND,0,2,nil)
end
function cm.spop(e,tp,eg,ep,ev,re,r,rp,c)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g=Duel.SelectMatchingCard(tp,cm.svfilter,tp,LOCATION_HAND+LOCATION_ONFIELD,0,2,2,nil)
Duel.SendtoGrave(g,REASON_COST)
end
function cm.cfilter(c)
return c:IsFaceup() and c:IsCode(18700091)
end
function cm.spcon2(e,tp,eg,ep,ev,re,r,rp)
return not Duel.IsEnvironment(18700091,tp,LOCATION_FZONE)
end
function cm.pfilter(c,tp)
return c:IsCode(18700091)
and not c:IsForbidden() and c:CheckUniqueOnField(tp)
end
function cm.ptg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(cm.pfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil,tp) end
end
function cm.pop(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD)
local tc=Duel.SelectMatchingCard(tp,cm.pfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,tp):GetFirst()
if tc then
local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5)
if fc then
Duel.SendtoGrave(fc,REASON_RULE)
Duel.BreakEffect()
end
Duel.MoveToField(tc,tp,tp,LOCATION_FZONE,POS_FACEUP,true)
end
end
function cm.spcon3(e,tp,eg,ep,ev,re,r,rp)
return Duel.IsEnvironment(18700091,tp,LOCATION_FZONE)
end
function cm.cfilter(c,tp)
return c:IsLocation(LOCATION_GRAVE) and c:IsSetCard(0x822)
end
function cm.thtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsPlayerCanDraw(tp,2) and Duel.IsExistingMatchingCard(cm.cfilter,tp,LOCATION_GRAVE,0,1,nil) end
Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,tp,LOCATION_GRAVE)
Duel.SetTargetPlayer(tp)
Duel.SetTargetParam(1)
Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1)
end
function cm.thop(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local g=Duel.SelectMatchingCard(tp,cm.cfilter,tp,LOCATION_GRAVE,0,2,2,nil)
Duel.Remove(g,POS_FACEUP,REASON_EFFECT)
local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM)
Duel.Draw(p,d,REASON_EFFECT)
end
--黑塔执事·索斯维塔
local m=18700095
local cm=_G["c"..m]
xpcall(function() require("expansions/script/1") end,function() require("script/1") end)
function cm.initial_effect(c)
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(m,0))
e1:SetType(EFFECT_TYPE_IGNITION)
e1:SetRange(LOCATION_MZONE+LOCATION_HAND)
e1:SetCountLimit(1,m)
e1:SetCost(cm.spcost)
e1:SetTarget(cm.sptg)
e1:SetOperation(cm.spop)
c:RegisterEffect(e1)
local e2=Effect.CreateEffect(c)
e2:SetDescription(aux.Stringid(m,1))
e2:SetType(EFFECT_TYPE_IGNITION)
e2:SetRange(LOCATION_MZONE)
e2:SetCountLimit(1,m+1)
e2:SetCost(cm.rmcost)
e2:SetTarget(cm.thtg)
e2:SetOperation(cm.thop)
c:RegisterEffect(e2)
end
function cm.spcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsReleasable() end
Duel.Release(e:GetHandler(),REASON_COST)
end
function cm.spfilter(c,e,tp)
return c:IsCode(18700093) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end
function cm.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetMZoneCount(tp,e:GetHandler())>0
and Duel.IsExistingMatchingCard(cm.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA)
end
function cm.spop(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,cm.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp)
if g:GetCount()>0 then
Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP)
end
end
function cm.costfilter(c)
return c:IsSetCard(0x822) and c:IsAbleToDeckAsCost()
end
function cm.rmcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(cm.costfilter,tp,LOCATION_HAND,nil,1,nil) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
local g=Duel.SelectMatchingCard(tp,cm.costfilter,tp,LOCATION_HAND,0,1,1,nil)
Duel.SendtoDeck(g,nil,nil,REASON_COST)
end
function cm.thfilter(c)
return c:IsSetCard(0x822) and c:IsAbleToHand()
end
function cm.thtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(cm.thfilter,tp,LOCATION_DECK,0,1,nil) end
Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK)
end
function cm.thop(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND)
local g=Duel.SelectMatchingCard(tp,cm.thfilter,tp,LOCATION_DECK,0,1,1,nil)
if g:GetCount()>0 then
Duel.SendtoHand(g,nil,REASON_EFFECT)
Duel.ConfirmCards(1-tp,g)
end
end
\ No newline at end of file
--原田秋叶
local m=10158000
local m=81009080
local cm=_G["c"..m]
Duel.LoadScript("c81000000.lua")
function cm.initial_effect(c)
aux.AddCodeList(c,10158000)
aux.AddCodeList(c,81009080)
--xyz summon
aux.AddXyzProcedure(c,nil,4,2)
c:EnableReviveLimit()
......@@ -59,7 +59,7 @@ function cm.spop(e,tp,eg,ep,ev,re,r,rp)
end
end
function cm.tdfilter(c)
return c:IsCode(10158000) and c:IsAbleToExtra() and (c:IsFaceup() or c:IsLocation(LOCATION_GRAVE))
return c:IsCode(81009080) and c:IsAbleToExtra() and (c:IsFaceup() or c:IsLocation(LOCATION_GRAVE))
end
function cm.tdtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsLocation(LOCATION_ONFIELD+LOCATION_GRAVE) and chkc:IsControler(tp) and cm.tdfilter(chkc) end
......
......@@ -29,9 +29,9 @@
!setname 0x520e Void
!setname 0x620e 抚子
!setname 0x20f 魔法使之夜
!setname 0x320f 童话的怪物
!setname 0xa20f 久远寺有珠
!setname 0xc20f 苍崎青子
!setname 0x320f 童话的怪物|魔法使之夜
!setname 0xa20f 久远寺有珠|魔法使之夜
!setname 0xc20f 苍崎青子|魔法使之夜
#蝶影 2924713558 11 0xe10-0xe1f
!setname 0xe10 帕西菲卡
......@@ -60,6 +60,8 @@
!counter 0x1111 灵曲指示物
!counter 0x1119 妖精萤火指示物
#做完大黑开始睡觉 2403798438 12
#septluna 495073131 42 0xa20-0xa2f
!setname 0xa23 幽狐
!setname 0xa24 茸茸茶会
......@@ -116,8 +118,6 @@
!counter 0x50b 白蛇指示物
!counter 0x50a BO指示物
#◇SCL 2798419987 101
#▽团子 1362961985 102 0x5a0-0x5af
!setname 0x5a0 SAO
!setname 0x5a1 ALO
......@@ -254,6 +254,8 @@
!setname 0x9a7b 狩猎游戏
!setname 3a7c 25
!setname 6a7c Miku
!setname 0x9a7c 对魔特异
!setname 0xaa7c 武器人
!counter 0xa7f 好感指示物
#乐 3113279818 130 0xe00-0xe0f
......@@ -452,6 +454,7 @@
!setname 0x820 雾海寂渊
!setname 0x821 血罪灵骸
!setname 0x822 奇物
!setname 0x3822 朔月黑塔|奇物
!setname 0x823 戏世游寰
!setname 0x824 祈星魔女
!setname 0x3824 祈星·焚
......@@ -459,7 +462,10 @@
!setname 0x6824 祈星·岚
!setname 0x9824 祈星·晶
!setname 0x825 溯猎逐时
!setname 0x826 风吟游歌
!counter 0x1820 灵骸指示物
!counter 0x1822 誓约指示物
!counter 0x1823 幽梦指示物
#AddCodeList(18700201) 奇物-64 帝国中枢齿轮 卡名记述
#imun. 3545696124 190 0x7a0-0x7af
......@@ -580,6 +586,7 @@
#暮雨 1330519251 307 0x420-0x42f
!setname 0x3421 苑憬
!setname 0x5420 龙☆裔
#avarta 2296299329 309 0xc80-0xc8f
!setname 0xc80 齿轮编年史
......@@ -613,6 +620,7 @@
!setname 0x323 灵兽训练师
!setname 0x324 幻梦灵兽
!setname 0x326 机略纵横
!setname 0x3327 ESP
!setname 0xa327 龙契
!setname 0xc327 契龙圣约
!setname 0x5329 圣殿剑骑
......@@ -773,8 +781,9 @@
!setname 0x9460 键★
!setname 0xa460 键★LB
!setname 0xc460 键★等
!setname 0x3461 亡命骗徒(Desperado Trickster
!setname 0x5461 亡命铁心(Desperado Heart
!setname 0x3461 亡命骗徒
!setname 0x5461 亡命铁心
!setname 0x3462 绝体绝命810
#named_with_NewVenture 踏破新世界
#named_with_ptsh 破天神狐
!counter 0x234 花瓣
......@@ -954,7 +963,7 @@
!setname 0xcb1 数码兽
!setname 0x3cb1 终焉数码兽
!setname 0xcb2 金刚
!setname 0xcb3
!setname 0xcb3 月神
!setname 0xcb4 复仇者
!setname 0xcb5 伏龙
!setname 0xcb6 天星
......@@ -1003,6 +1012,8 @@
!setname 0x3528 魔宝
!setname 0x5528 道拉珠艾尔德
!setname 0x6528 炼铁
!setname 0x3529 忍·
!setname 0x5529 猩猩童子
#Name_Grapha 格拉法
#AD钙 540551322 537 0x530-0x53f
......@@ -1142,6 +1153,11 @@
#希尔薇 - 639 0x860-0x86f
!setname 0x860 米诺陶诺斯
!setname 0x863 军械库
!setname 0x864 黑暗升华
!setname 0x3864 黑暗升华怪兽
!setname 0x3865 蛇心流
!setname 0x5865 伽古拉
#02 1164477469 648 0x410-0x41f
!setname 0x5410 终末旅者
......@@ -1416,6 +1432,7 @@
!setname 0x855 都市传说
!setname 0x85a 梦幻馆
#AddCodeList(81902000) TC.记述
#AddCodeList(81902001) C-TC.记述
#AddCodeList(81902002) M-TC.记述
#AddCodeList(81902003) 都市传说记述
!counter 0x850 恋之埋火指示物
......@@ -1425,11 +1442,13 @@
#屋屋赛高 - 820 0xf50-0xf5f
!setname 0x3f55 屋屋
!setname 0x9f55 特利亚|非特利
!setname 0xf57 特制法属
!setname 0x3f57 特制法属乏术空物
!setname 0xaf57 作战指令
!setname 0xf58 法属乏术
!setname 0x3f58 乏术型物
!setname 0x5f58 特制装备
!setname 0xf59 卡丘世界
!setname 0x7f59 超弦体技能
!setname 0xaf59 机电棋子
......
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