Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
ygopro-222DIY-cards
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Nguyễn Anh Kiệt
ygopro-222DIY-cards
Commits
dae07ccc
Commit
dae07ccc
authored
Apr 26, 2021
by
Tachibana
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
emergency
parent
0e4f9e18
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
172 additions
and
162 deletions
+172
-162
expansions/222DIY.cdb
expansions/222DIY.cdb
+0
-0
expansions/script/c10199990.lua
expansions/script/c10199990.lua
+147
-131
expansions/script/c10199991.lua
expansions/script/c10199991.lua
+3
-5
expansions/script/c12003016.lua
expansions/script/c12003016.lua
+10
-7
expansions/script/c12047001.lua
expansions/script/c12047001.lua
+3
-2
expansions/script/c12047003.lua
expansions/script/c12047003.lua
+2
-2
expansions/script/c16400012.lua
expansions/script/c16400012.lua
+3
-7
expansions/script/c16400025.lua
expansions/script/c16400025.lua
+3
-7
expansions/script/c33701435.lua
expansions/script/c33701435.lua
+1
-1
No files found.
expansions/222DIY.cdb
View file @
dae07ccc
No preview for this file type
expansions/script/c10199990.lua
View file @
dae07ccc
...
...
@@ -8,11 +8,11 @@ rsv.Library_Switch = true
-----------------------"Part_Effect_Base"-----------------------
--Creat Event
function
rsef
.
CreatEvent
(
event_code
,
event1
,
con1
,
...
)
rsef
.
CreatEvent_Switch
=
rsef
.
CreatEvent_Switch
or
{}
rsef
.
CreatEvent_Switch
=
rsef
.
CreatEvent_Switch
or
{
}
if
rsef
.
CreatEvent_Switch
[
event_code
]
then
return
end
rsef
.
CreatEvent_Switch
[
event_code
]
=
true
local
creat_list
=
{
event1
,
con1
,
...
}
local
eff_list
=
{}
local
eff_list
=
{
}
for
idx
,
val
in
pairs
(
creat_list
)
do
if
type
(
val
)
==
"number"
then
local
e1
=
rsef
.
FC
({
true
,
0
},
val
)
...
...
@@ -632,7 +632,7 @@ function rsef.SV_ExtraMaterial(reg_list, mat_list, val_list, con, reset_list, fl
range
=
range
or
LOCATION_HAND
val_list
=
val_list
or
{
aux
.
TRUE
}
local
code_list
,
val_list2
=
rsof
.
Table_Suit
(
mat_list
,
code_list_1
,
code_list_2
,
val_list
)
local
eff_list
=
{}
local
eff_list
=
{
}
for
idx
,
eff_code
in
ipairs
(
code_list
)
do
local
e1
=
rsef
.
SV
(
reg_list
,
eff_code
,
val_list2
[
idx
],
range
,
con
,
reset_list
,
flag
,
desc_list
,
lim_list
)
table.insert
(
eff_list
,
e1
)
...
...
@@ -751,7 +751,7 @@ function rsef.FV_ExtraMaterial(reg_list, mat_list, val_list, tg, tg_range_list,
tg_range_list
=
tg_range_list
or
{
LOCATION_HAND
,
0
}
local
flag2
=
rsef
.
GetRegisterProperty
(
reg_list
,
flag
)
|
EFFECT_FLAG_IGNORE_IMMUNE
+
EFFECT_FLAG_SET_AVAILABLE
local
code_list
,
val_list2
=
rsof
.
Table_Suit
(
mat_list
,
code_list_1
,
code_list_2
,
val_list
)
local
eff_list
=
{}
local
eff_list
=
{
}
for
idx
,
eff_code
in
ipairs
(
code_list
)
do
local
e1
=
rsef
.
FV
(
reg_list
,
eff_code
,
val_list2
[
idx
],
tg
,
tg_range_list
,
range
,
con
,
reset_list
,
flag2
,
desc_list
,
lim_list
)
table.insert
(
eff_list
,
e1
)
...
...
@@ -766,7 +766,7 @@ function rsef.FV_ExtraMaterial_Self(reg_list, mat_list, val_list, tg, tg_range_l
tg_range_list
=
tg_range_list
or
{
LOCATION_HAND
,
0
}
local
flag2
=
rsef
.
GetRegisterProperty
(
reg_list
,
flag
)
|
EFFECT_FLAG_IGNORE_IMMUNE
+
EFFECT_FLAG_SET_AVAILABLE
+
EFFECT_FLAG_UNCOPYABLE
local
code_list
,
val_list2
=
rsof
.
Table_Suit
(
mat_list
,
code_list_1
,
code_list_2
,
val_list
)
local
eff_list
=
{}
local
eff_list
=
{
}
for
idx
,
eff_code
in
ipairs
(
code_list
)
do
local
e1
=
rsef
.
FV
(
reg_list
,
eff_code
,
val_list2
[
idx
],
tg
,
tg_range_list
,
LOCATION_EXTRA
,
con
,
reset_list
,
flag2
,
desc_list
,
lim_list
)
table.insert
(
eff_list
,
e1
)
...
...
@@ -1001,8 +1001,8 @@ function rsef.FC_AttachEffect_Con(e0, attach_con)
end
function
rsef
.
FC_AttachEffect_Op
(
e0
,
force
)
return
function
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
rsef
.
attacheffect
[
ev
]
=
rsef
.
attacheffect
[
ev
]
or
{}
rsef
.
attacheffectf
[
ev
]
=
rsef
.
attacheffectf
[
ev
]
or
{}
rsef
.
attacheffect
[
ev
]
=
rsef
.
attacheffect
[
ev
]
or
{
}
rsef
.
attacheffectf
[
ev
]
=
rsef
.
attacheffectf
[
ev
]
or
{
}
if
force
then
table.insert
(
rsef
.
attacheffectf
[
ev
],
e
)
else
table.insert
(
rsef
.
attacheffect
[
ev
],
e
)
...
...
@@ -1011,11 +1011,11 @@ function rsef.FC_AttachEffect_Op(e0, force)
end
function
rsef
.
FC_AttachEffect_GetGroup
(
sel_list
)
local
attach_group
=
Group
.
CreateGroup
()
local
attach_eff_list
=
{}
local
attach_eff_list
=
{
}
for
_
,
ae
in
pairs
(
sel_list
)
do
local
tc
=
ae
:
GetOwner
()
attach_group
:
AddCard
(
tc
)
attach_eff_list
[
tc
]
=
attach_eff_list
[
tc
]
or
{}
attach_eff_list
[
tc
]
=
attach_eff_list
[
tc
]
or
{
}
table.insert
(
attach_eff_list
[
tc
],
ae
)
end
return
attach_group
,
attach_eff_list
...
...
@@ -1049,14 +1049,14 @@ function rsef.FC_AttachEffect_Reset(re1, baseop)
end
end
function
rsef
.
FC_AttachEffect_Solve
(
solve_eff_list
,
attach_time
,
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
act_use_list
=
{}
local
act_use_list
=
{
}
local
ev2
=
Duel
.
GetCurrentChain
()
local
attach_code
=
rscode
.
Extra_Effect_Activate
if
attach_time
==
0x2
then
attach_code
=
rscode
.
Extra_Effect_BSolve
end
if
attach_time
==
0x4
then
attach_code
=
rscode
.
Extra_Effect_ASolve
end
Duel
.
RaiseEvent
(
e
:
GetHandler
(),
attach_code
,
e
,
0
,
tp
,
tp
,
ev2
)
local
force_list
=
rsef
.
attacheffectf
[
ev2
]
or
{}
local
sel_tab_list
=
rsef
.
attacheffect
[
ev2
]
or
{}
local
force_list
=
rsef
.
attacheffectf
[
ev2
]
or
{
}
local
sel_tab_list
=
rsef
.
attacheffect
[
ev2
]
or
{
}
for
_
,
ae
in
pairs
(
force_list
)
do
local
tc
=
ae
:
GetOwner
()
if
tc
:
IsOnField
()
then
...
...
@@ -1085,7 +1085,7 @@ function rsef.FC_AttachEffect_Solve(solve_eff_list, attach_time, e, tp, eg, ep,
else
Duel
.
Hint
(
HINT_CARD
,
0
,
tc
:
GetOriginalCodeRule
())
end
local
hint_list
=
{}
local
hint_list
=
{
}
for
_
,
ae
in
pairs
(
attach_eff_list
[
tc
])
do
local
hint
=
ae
:
GetDescription
()
table.insert
(
hint_list
,
hint
)
...
...
@@ -1115,7 +1115,7 @@ function rsef.FC_AttachEffect_ChangeOp2(baseop)
if
(
c
:
IsType
(
TYPE_FIELD
)
or
c
:
IsType
(
TYPE_CONTINUOUS
)
or
c
:
IsLocation
(
LOCATION_PZONE
))
and
not
c
:
IsRelateToEffect
(
e
)
then
return
end
rsef
.
solveeffect
[
ev2
]
=
{}
rsef
.
solveeffect
[
ev2
]
=
{
}
--baseop record
table.insert
(
rsef
.
solveeffect
[
ev2
],
baseop
)
--activate select
...
...
@@ -1136,7 +1136,7 @@ function rsef.FC_AttachEffect_ChangeOp2(baseop)
end
--Effect Function:XXX card / group will leave field in XXX Phase , often use in special summon
function
rsef
.
FC_PhaseLeave
(
reg_list
,
leave_val
,
times
,
whos
,
phase
,
leaveway
,
reset_list
)
function
rsef
.
FC_PhaseLeave
(
reg_list
,
leave_val
,
times
,
whos
,
phase
,
leaveway
,
val_
reset_list
)
--times: nil every phase
-- 0 next phase
-- 1 or + times phase
...
...
@@ -1151,8 +1151,10 @@ function rsef.FC_PhaseLeave(reg_list, leave_val, times, whos, phase, leaveway, r
leaveway
=
leaveway
or
"des"
local
sg
=
rsgf
.
Mix2
(
leave_val
)
local
fid
=
reg_owner
:
GetFieldID
()
val_reset_list
=
val_reset_list
or
rsrst
.
std
local
reset
=
rsef
.
RegisterReset
(
nil
,
val_reset_list
,
true
)
for
tc
in
aux
.
Next
(
sg
)
do
tc
:
RegisterFlagEffect
(
rscode
.
Phase_Leave_Flag
,
r
srst
.
std
,
0
,
0
,
fid
)
tc
:
RegisterFlagEffect
(
rscode
.
Phase_Leave_Flag
,
r
eset
,
0
,
0
,
fid
)
end
sg
:
KeepAlive
()
local
e1
=
rsef
.
FC
(
reg_list
,
EVENT_PHASE
+
phase
,
rshint
.
epleave
,
1
,
"ii"
,
nil
,
rsef
.
FC_PhaseLeave_Con
(
phase
,
atct
,
whos
,
fid
,
times
),
rsef
.
FC_PhaseLeave_Op
(
leaveway
,
fid
))
...
...
@@ -1191,7 +1193,7 @@ function rsef.FC_PhaseLeave_Con(phase, atct, whos, fid, times)
solve
=
true
end
-- case2, next phase
if
times
==
0
then
if
times
and
times
==
0
then
if
tct
==
1
then
solve
=
true
elseif
tct
>
1
then
...
...
@@ -1199,9 +1201,9 @@ function rsef.FC_PhaseLeave_Con(phase, atct, whos, fid, times)
end
end
-- case3, 1+ phase
if
times
>
0
and
times
==
tct
then
if
times
and
times
>
0
and
times
==
tct
then
solve
=
true
elseif
times
>
0
and
tct
>
times
then
elseif
times
and
times
>
0
and
tct
>
times
then
reset
=
true
end
if
reset
then
...
...
@@ -1215,7 +1217,6 @@ end
function
rsef
.
FC_PhaseLeave_Op
(
solve_str
,
fid
)
return
function
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
sg
,
tct
,
ph_chk
=
table.unpack
(
rsop
.
opinfo
[
e
])
e
:
Reset
()
local
c
=
e
:
GetOwner
()
Duel
.
Hint
(
HINT_CARD
,
0
,
c
:
GetOriginalCode
())
local
rg
=
sg
:
Filter
(
rsef
.
FC_PhaseLeave_Filter
,
nil
,
fid
)
...
...
@@ -1349,8 +1350,8 @@ function rssf.SpecialSummonEitherStep(sum_card, sum_eff, sum_type, sum_pl, loc_p
sum_type
,
sum_pl
,
loc_pl
,
ignore_con
,
ignore_revie
,
pos
=
rssf
.
GetSSDefaultParameter
(
sum_type
,
sum_pl
,
loc_pl
,
ignore_con
,
ignore_revie
,
pos
)
if
not
sum_eff
then
sum_eff
=
Duel
.
GetChainInfo
(
0
,
CHAININFO_TRIGGERING_EFFECT
)
end
local
tp
=
sum_pl
local
zone
=
{}
local
flag
=
{}
local
zone
=
{
}
local
flag
=
{
}
if
not
zone2
then
zone2
=
{
[
0
]
=
0x1f
,
[
1
]
=
0x1f
}
end
...
...
@@ -1618,15 +1619,15 @@ end
--Effect target: Target Cards Main Set
function
rsef
.
list
(
list_type_str
,
val1
,
val2
,
val3
,
...
)
local
value_list
=
{}
local
value_list
=
{
}
if
type
(
val1
)
==
"table"
and
(
not
val2
or
(
type
(
val2
)
==
"table"
))
and
(
not
val3
or
type
(
val3
)
==
"table"
)
then
value_list
=
{
val1
,
val2
,
val3
,
...
}
else
value_list
=
{
{
val1
,
val2
,
val3
,
...
}
}
end
local
par_list
=
{}
local
par_list
=
{
}
for
idx
,
val
in
pairs
(
value_list
)
do
par_list
[
idx
]
=
{}
par_list
[
idx
]
=
{
}
local
res
=
rsef
.
list_check_divide
(
val
[
1
],
list_type_str
)
if
not
res
then
par_list
[
idx
][
1
]
=
list_type_str
...
...
@@ -1882,15 +1883,16 @@ function rstg.TargetSelect(e, tp, eg, ep, ev, re, r, rp, target_list_total)
--1. Creat used check
local
used_group
=
Group
.
CreateGroup
()
local
used_count_list
=
{
[
0
]
=
0
,
[
1
]
=
0
,
[
1
]
=
0
,
[
2
]
=
0
}
local
info_list
=
{}
local
selected_group_total_list
=
{}
local
info_list
=
{
}
local
selected_group_total_list
=
{
}
local
costed_grouo_total
=
Group
.
CreateGroup
()
--2. Selecting
--for idx, target_list in pairs(target_list_total) do
--cannot use above method because may have target_list_total[0]
for
idx
=
1
,
#
target_list_total
do
local
target_list
=
target_list_total
[
idx
]
--2.0. Get Next target_list
local
target_list_next
=
{}
local
target_list_next
=
{
}
for
idx2
,
target_list_next_par
in
pairs
(
target_list_total
)
do
if
idx2
>
idx
then
table.insert
(
target_list_next
,
target_list_next_par
)
...
...
@@ -1974,6 +1976,9 @@ function rstg.TargetSelect(e, tp, eg, ep, ev, re, r, rp, target_list_total)
local
cost_result
=
rscost
.
CostSolve
(
selected_group
,
category_str_list
,
category_fun
,
list_type
,
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
used_group
,
used_count_list
)
if
not
cost_result
or
(
type
(
cost_result
)
==
"number"
and
cost_result
<=
0
)
or
(
aux
.
GetValueType
(
cost_result
)
==
"Group"
and
#
cost_result
<=
0
)
then
return
else
--costed_grouo_total:Merge(Duel.GetOperatedGroup())
costed_grouo_total
:
Merge
(
selected_group
)
end
end
--2.6. Register Operationinfo for target
...
...
@@ -2016,7 +2021,7 @@ function rstg.TargetSelect(e, tp, eg, ep, ev, re, r, rp, target_list_total)
end
end
local
tg
=
Duel
.
GetChainInfo
(
0
,
CHAININFO_TARGET_CARDS
)
return
tg
,
selected_group_total_list
return
tg
,
selected_group_total_list
,
costed_grouo_total
end
--Effect target: Target filter
function
rstg
.
TargetFilter
(
c
,
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
used_group
,
used_count_list
,
target_list1
,
target_list2
,
...
)
...
...
@@ -2217,7 +2222,7 @@ function rscost.rmct(cttype, ct1, ct2, issetlabel)
local
maxct
=
rsof
.
Check_Boolean
(
ct2
)
and
c
:
GetCounter
(
cttype
)
or
ct2
if
chk
==
0
then
return
c
:
IsCanRemoveCounter
(
tp
,
cttype
,
minct
,
REASON_COST
)
end
if
maxct
>
minct
then
local
rmlist
=
{}
local
rmlist
=
{
}
for
i
=
minct
,
maxct
do
table.insert
(
rmlist
,
i
)
end
...
...
@@ -2242,7 +2247,7 @@ function rscost.rmct2(cttype, loc_self, loc_oppo, ct1, ct2, issetlabel)
local
maxct
=
rsof
.
Check_Boolean
(
ct2
)
and
c
:
GetCounter
(
cttype
)
or
ct2
if
chk
==
0
then
return
Duel
.
IsCanRemoveCounter
(
tp
,
loc_self
,
loc_oppo
,
cttype
,
minct
,
REASON_COST
)
end
if
maxct
>
minct
then
local
rmlist
=
{}
local
rmlist
=
{
}
for
i
=
minct
,
maxct
do
table.insert
(
rmlist
,
i
)
end
...
...
@@ -2256,7 +2261,7 @@ function rscost.rmct2(cttype, loc_self, loc_oppo, ct1, ct2, issetlabel)
end
end
--cost: remove overlay card form self
function
rscost
.
rmx
yz
(
ct1
,
ct2
,
issetlabel
)
function
rscost
.
rmx
mat
(
ct1
,
ct2
,
issetlabel
)
ct1
=
ct1
or
1
ct2
=
ct2
or
ct1
return
function
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
...
...
@@ -2304,7 +2309,7 @@ function rscost.lpcost2(base_pay, max_pay, is_lab)
end
if
chk
==
0
then
return
Duel
.
CheckLPCost
(
tp
,
base_pay
)
end
local
max_multiple
=
math.floor
(
max_lp
/
base_pay
)
local
pay_list
=
{}
local
pay_list
=
{
}
for
i
=
1
,
max_multiple
do
pay_list
[
i
]
=
i
*
base_pay
end
...
...
@@ -2385,8 +2390,8 @@ function rscon.phase(p1, ...)
end
local
str_list
=
{
"dp"
,
"sp"
,
"mp1"
,
"bp"
,
"bsp"
,
"dam"
,
"damndcal"
,
"dambdcal"
,
"dcal"
,
"ndcal"
,
"mp2"
,
"ep"
,
"mp"
}
local
phaselist
=
{
PHASE_DRAW
,
PHASE_STANDBY
,
PHASE_MAIN1
,
phase_bp
,
PHASE_BATTLE_STEP
,
phase_dam
,
PHASE_DAMAGE
,
phase_dambdcal
,
PHASE_DAMAGE_CAL
,
phase_ndcal
,
PHASE_MAIN2
,
PHASE_END
,
phase_mp
}
local
mainstr_list
=
{}
local
turnplayerlist
=
{}
local
mainstr_list
=
{
}
local
turnplayerlist
=
{
}
local
parlist2
=
rsof
.
String_Number_To_Table
(
parlist
)
for
_
,
pstring
in
pairs
(
parlist2
)
do
local
mainstring
,
splitstring
=
rsof
.
String_NoSymbol
(
pstring
)
...
...
@@ -2599,23 +2604,6 @@ function rsop.neg(dn_str, ex_op)
return
rsop
.
disneg
(
"neg"
,
dn_str
,
ex_op
)(
...
)
end
end
--Operation: Select Card
function
rsop
.
SelectCheck_Solve
(
solve_fun
)
local
solve_parama_list
=
{}
local
len
=
0
if
type
(
solve_fun
)
==
"table"
then
for
idx
,
par
in
pairs
(
solve_fun
)
do
if
idx
>=
2
then
len
=
len
+
1
--table.insert(solve_parama_list, par)
solve_parama_list
[
len
]
=
par
end
end
solve_fun
=
solve_fun
[
1
]
end
return
solve_fun
,
solve_parama_list
,
len
end
--Function:outer case function for SelectSolve
function
rsop
.
SelectOC
(
chk_hint
,
is_break
,
sel_hint
,
success_loc
)
if
type
(
chk_hint
)
==
"string"
then
...
...
@@ -2635,47 +2623,56 @@ function rsop.SelectSolve(sel_hint, sp, filter, tp, loc_self, loc_oppo, minct, m
local
g
=
Duel
.
GetMatchingGroup
(
card_filter
,
tp
,
loc_self
,
loc_oppo
,
except_group
,
...
)
return
rsgf
.
SelectSolve
(
g
,
sel_hint
,
sp
,
{
aux
.
TRUE
,
group_filter
},
minct
,
maxct
,
except_group
,
solve_fun
,
...
)
end
function
rsop
.
GetFollowingSolvepar
(
solve_parama
,
parlen
)
function
rsop
.
ReplaceSolveParama
(
solve_parama
,
parlen
)
solve_parama
=
type
(
solve_parama
)
==
"table"
and
solve_parama
or
{
solve_parama
}
rsop
.
solveprlen
=
parlen
return
solve_parama
local
new_parama
=
{
}
local
val
for
idx
=
1
,
parlen
do
val
=
solve_parama
[
idx
]
if
type
(
val
)
==
"nil"
then
new_parama
[
idx
]
=
rsnv
else
new_parama
[
idx
]
=
val
end
end
return
new_parama
end
--Function:Select card and send to hand
function
rsop
.
SelectToHand
(
sp
,
filter
,
tp
,
loc_self
,
loc_oppo
,
minct
,
maxct
,
except_obj
,
solve_parama
,
...
)
solve_parama
=
rsop
.
GetFollowingSolvepar
(
solve_parama
,
4
)
solve_parama
=
rsop
.
ReplaceSolveParama
(
solve_parama
,
4
)
rsop
.
SelectOC_successlocation
=
rsop
.
SelectOC_successlocation
or
LOCATION_HAND
rshint
.
nohint_sel
=
true
return
rsop
.
SelectSolve
(
"th"
,
sp
,
filter
,
tp
,
loc_self
,
loc_oppo
,
minct
,
maxct
,
except_obj
,
{
rsop
.
SendtoHand
,
table.unpack
(
solve_parama
)
},
...
)
end
--Function:Select card and send to grave
function
rsop
.
SelectToGrave
(
sp
,
filter
,
tp
,
loc_self
,
loc_oppo
,
minct
,
maxct
,
except_obj
,
solve_parama
,
...
)
solve_parama
=
rsop
.
GetFollowingSolvepar
(
solve_parama
,
2
)
solve_parama
=
rsop
.
ReplaceSolveParama
(
solve_parama
,
2
)
rsop
.
SelectOC_successlocation
=
rsop
.
SelectOC_successlocation
or
LOCATION_GRAVE
rshint
.
nohint_sel
=
true
return
rsop
.
SelectSolve
(
"tg"
,
sp
,
filter
,
tp
,
loc_self
,
loc_oppo
,
minct
,
maxct
,
except_obj
,
{
rsop
.
SendtoGrave
,
table.unpack
(
solve_parama
)
},
...
)
end
--Function:Select card and release
function
rsop
.
SelectRelease
(
sp
,
filter
,
tp
,
loc_self
,
loc_oppo
,
minct
,
maxct
,
except_obj
,
solve_parama
,
...
)
solve_parama
=
rsop
.
GetFollowingSolvepar
(
solve_parama
,
2
)
solve_parama
=
rsop
.
ReplaceSolveParama
(
solve_parama
,
2
)
rshint
.
nohint_sel
=
true
return
rsop
.
SelectSolve
(
"tg"
,
sp
,
filter
,
tp
,
loc_self
,
loc_oppo
,
minct
,
maxct
,
except_obj
,
{
rsop
.
Release
,
table.unpack
(
solve_parama
)
},
...
)
end
--Function:Select card and send to deck
function
rsop
.
SelectToDeck
(
sp
,
filter
,
tp
,
loc_self
,
loc_oppo
,
minct
,
maxct
,
except_obj
,
solve_parama
,
...
)
solve_parama
=
rsop
.
GetFollowingSolvepar
(
solve_parama
,
4
)
solve_parama
=
rsop
.
ReplaceSolveParama
(
solve_parama
,
4
)
rsop
.
SelectOC_successlocation
=
rsop
.
SelectOC_successlocation
or
rsloc
.
de
rshint
.
nohint_sel
=
true
return
rsop
.
SelectSolve
(
"td"
,
sp
,
filter
,
tp
,
loc_self
,
loc_oppo
,
minct
,
maxct
,
except_obj
,
{
rsop
.
SendtoDeck
,
table.unpack
(
solve_parama
)
},
...
)
end
--Function:Select card and destroy
function
rsop
.
SelectDestroy
(
sp
,
filter
,
tp
,
loc_self
,
loc_oppo
,
minct
,
maxct
,
except_obj
,
solve_parama
,
...
)
solve_parama
=
rsop
.
GetFollowingSolvepar
(
solve_parama
,
2
)
solve_parama
=
rsop
.
ReplaceSolveParama
(
solve_parama
,
2
)
rshint
.
nohint_sel
=
true
return
rsop
.
SelectSolve
(
"des"
,
sp
,
filter
,
tp
,
loc_self
,
loc_oppo
,
minct
,
maxct
,
except_obj
,
{
rsop
.
Destroy
,
table.unpack
(
solve_parama
)
},
...
)
end
--Function:Select card and remove
function
rsop
.
SelectRemove
(
sp
,
filter
,
tp
,
loc_self
,
loc_oppo
,
minct
,
maxct
,
except_obj
,
solve_parama
,
...
)
solve_parama
=
rsop
.
GetFollowingSolvepar
(
solve_parama
,
3
)
solve_parama
=
rsop
.
ReplaceSolveParama
(
solve_parama
,
3
)
rsop
.
SelectOC_successlocation
=
rsop
.
SelectOC_successlocation
or
LOCATION_REMOVED
rshint
.
nohint_sel
=
true
return
rsop
.
SelectSolve
(
"rm"
,
sp
,
filter
,
tp
,
loc_self
,
loc_oppo
,
minct
,
maxct
,
except_obj
,
{
rsop
.
Remove
,
table.unpack
(
solve_parama
)
},
...
)
...
...
@@ -2700,14 +2697,14 @@ function rsop.SelectSpecialSummon_Operation(sumfunvarlist)
end
--Function:Select card and move to field
function
rsop
.
SelectMoveToField
(
sp
,
filter
,
tp
,
loc_self
,
loc_oppo
,
minct
,
maxct
,
except_obj
,
solve_parama
,
...
)
solve_parama
=
rsop
.
GetFollowingSolvepar
(
solve_parama
,
8
)
solve_parama
=
rsop
.
ReplaceSolveParama
(
solve_parama
,
8
)
solve_parama
[
1
]
=
solve_parama
[
1
]
or
sp
rshint
.
nohint_sel
=
true
return
rsop
.
SelectSolve
(
HINTMSG_TOFIELD
,
sp
,
filter
,
tp
,
loc_self
,
loc_oppo
,
minct
,
maxct
,
except_obj
,
{
rsop
.
MoveToField
,
table.unpack
(
solve_parama
)
},
...
)
end
--Function:Select card and move to field and activate
function
rsop
.
SelectMoveToField_Activate
(
sp
,
filter
,
tp
,
loc_self
,
loc_oppo
,
minct
,
maxct
,
except_obj
,
solve_parama
,
...
)
solve_parama
=
rsop
.
GetFollowingSolvepar
(
solve_parama
,
7
)
solve_parama
=
rsop
.
ReplaceSolveParama
(
solve_parama
,
7
)
solve_parama
[
1
]
=
solve_parama
[
1
]
or
sp
maxct
=
1
rshint
.
nohint_sel
=
true
...
...
@@ -2716,7 +2713,7 @@ end
--Function:Select card and SSet
function
rsop
.
SelectSSet
(
sp
,
filter
,
tp
,
loc_self
,
loc_oppo
,
minct
,
maxct
,
except_obj
,
solve_parama
,
...
)
rshint
.
nohint_sel
=
true
solve_parama
=
rsop
.
GetFollowingSolvepar
(
solve_parama
,
4
)
solve_parama
=
rsop
.
ReplaceSolveParama
(
solve_parama
,
4
)
return
rsop
.
SelectSolve
(
HINTMSG_SET
,
sp
,
filter
,
tp
,
loc_self
,
loc_oppo
,
minct
,
maxct
,
except_obj
,
rsop
.
SelectSSet_Operation
(
sp
,
solve_parama
),
...
)
end
function
rsop
.
SelectSSet_Operation
(
sp
,
solve_parama
)
...
...
@@ -2777,7 +2774,7 @@ function rsop.CheckOperateSuccess(solve_loc, check_count)
end
--Operation: Send to Deck and Draw
function
rsop
.
ToDeckDraw
(
dp
,
dct
,
is_break
,
check_count
)
local
res
,
g
=
rsop
.
CheckSuccess
(
rsloc
.
de
,
check_count
)
local
res
,
g
=
rsop
.
Check
Operate
Success
(
rsloc
.
de
,
check_count
)
if
not
res
then
return
0
end
if
g
:
IsExists
(
Card
.
IsLocation
,
1
,
nil
,
LOCATION_DECK
)
then
Duel
.
ShuffleDeck
(
dp
)
...
...
@@ -2917,7 +2914,7 @@ function rsop.MoveToField(corg, movep, targetp, loc, pos, enable, zone, hint, co
targetp
=
targetp
or
movep
pos
=
pos
or
POS_FACEUP
enable
=
enable
or
true
if
#
g
<=
0
then
return
false
end
if
#
g
<=
0
then
return
0
,
nil
end
local
correctg
=
Group
.
CreateGroup
()
rsop
.
CheckOperationHint
(
g
,
hint
)
for
tc
in
aux
.
Next
(
g
)
do
...
...
@@ -2989,7 +2986,7 @@ function rsop.MoveToField_Activate(corg, movep, targetp, loc, pos, enable, zone,
end
return
true
,
tc
end
return
false
return
false
,
nil
end
--Operation function:Deck Move to top
function
rsop
.
SortDeck
(
corg
,
seq
,
confirm
)
...
...
@@ -3012,9 +3009,31 @@ function rsop.SortDeck(corg, seq, confirm)
Duel
.
MoveSequence
(
mg
:
GetFirst
(),
1
)
end
end
return
#
g
return
#
g
,
g
end
--Operation function:destroy and hint
--if you don't neet hint, best use normal Duel.Destroy
function
rsop
.
Overlay
(
e
,
xyzc
,
mat_corg
,
ex_over
,
hint
)
e
=
e
or
Duel
.
GetChainInfo
(
0
,
CHAININFO_TRIGGERING_EFFECT
)
local
g
=
rsgf
.
Mix2
(
mat_corg
)
local
img
=
g
:
Filter
(
Card
.
IsImmuneToEffect
,
nil
,
e
)
g
:
Sub
(
img
)
rsop
.
CheckOperationHint
(
g
,
hint
)
if
not
xyzc
or
not
xyzc
:
IsType
(
TYPE_XYZ
)
or
#
g
<=
0
then
return
0
,
nil
end
local
tg
=
Group
.
CreateGroup
()
for
tc
in
aux
.
Next
(
g
)
do
tg
:
Merge
(
tc
:
GetOverlayGroup
())
end
if
#
tg
>
0
then
if
ex_over
then
Duel
.
Overlay
(
xyzc
,
tg
)
else
Duel
.
SendtoGrave
(
tg
,
REASON_RULE
)
end
end
Duel
.
Overlay
(
xyzc
,
g
)
return
#
g
,
g
,
g
:
GetFirst
()
end
--For rsop.Operation_Solve
function
rsop
.
OperationDestroy
(
reason0
)
return
function
(
g
,
chk
,
reason
)
...
...
@@ -3074,7 +3093,7 @@ function rsop.OperationDiscardDeck(selected_group, chk, reason, e, tp, eg, ep, e
local
dct
=
minct
if
maxct
<
minct
then
return
nil
,
0
end
if
maxct
>
minct
then
local
ct_list
=
{}
local
ct_list
=
{
}
for
i
=
minct
,
maxct
do
if
(
reason
==
REASON_COST
and
Duel
.
IsPlayerCanDiscardDeckAsCost
(
p
,
i
)
)
or
(
reason
~=
REASON_COST
and
Duel
.
IsPlayerCanDiscardDeck
(
p
,
i
)
)
then
...
...
@@ -3162,15 +3181,15 @@ end
--zone[2] is the same, zone[3] is zone[1] + zone[2] (all players)
--seq must use rsv.GetExcatlySequence to Get true sequence
function
rszsf
.
GetExcatlyColumnZone
(
seq
)
local
zone
=
{}
local
zone
=
{
}
for
i
=
0
,
1
do
zone
[
i
]
=
{}
zone
[
i
]
=
{
}
if
i
==
1
then
seq
=
seq
+
16
end
zone
[
i
][
1
]
=
2
^
seq
zone
[
i
][
2
]
=
(
2
^
seq
)
*
0x100
zone
[
i
][
3
]
=
zone
[
i
][
1
]
+
zone
[
i
][
2
]
end
zone
[
3
]
=
{}
zone
[
3
]
=
{
}
zone
[
3
][
1
]
=
zone
[
1
][
1
]
+
zone
[
2
][
1
]
zone
[
3
][
2
]
=
zone
[
1
][
2
]
+
zone
[
2
][
2
]
zone
[
3
][
3
]
=
zone
[
1
][
3
]
+
zone
[
2
][
3
]
...
...
@@ -3237,7 +3256,7 @@ function rszsf.GetSurroundingZone2(seq, loc, cp, p, truezone, contains)
mzone
[
1
-
p
]
=
mzone
[
1
-
p
]
*
0x10000
szone
[
1
-
p
]
=
szone
[
1
-
p
]
*
0x10000
end
local
ozone
=
{}
local
ozone
=
{
}
for
i
=
0
,
1
do
ozone
[
i
]
=
mzone
[
i
]
+
szone
[
i
]
end
...
...
@@ -3328,7 +3347,7 @@ function rsgf.Mix2(...)
end
--Group effect:Change Group to Table
function
rsgf
.
Group_To_Table
(
g
)
local
cardlist
=
{}
local
cardlist
=
{
}
for
tc
in
aux
.
Next
(
g
)
do
table.insert
(
cardlist
,
tc
)
end
...
...
@@ -3345,24 +3364,21 @@ function rsgf.Table_To_Group(list)
return
group
end
--Group:Select card from group and do operation on it
function
rsgf
.
SelectSolve
(
g
,
sel_hint
,
sp
,
filter
,
minct
,
maxct
,
except_obj
,
solve_
fun
,
...
)
function
rsgf
.
SelectSolve
(
g
,
sel_hint
,
sp
,
filter
,
minct
,
maxct
,
except_obj
,
solve_
parama
,
...
)
minct
=
minct
or
1
maxct
=
maxct
or
minct
local
chk_hint
,
is_break
,
sel_hint2
,
success_loc
=
rsop
.
SelectOC_checkhint
,
rsop
.
SelectOC_isbreak
,
rsop
.
SelectOC_selecthint
,
rsop
.
SelectOC_successlocation
rsop
.
SelectOC
(
nil
,
nil
,
nil
)
local
solvefun2
,
solvefunpar
,
len
=
rsop
.
SelectCheck_Solve
(
solve_fun
)
filter
=
type
(
filter
)
==
"table"
and
filter
or
{
filter
}
local
card_filter
,
group_filter
=
table.unpack
(
filter
)
card_filter
=
card_filter
or
aux
.
TRUE
local
tg
=
g
:
Filter
(
card_filter
,
except_obj
,
...
)
-- case1 , no suit group for card_filter
if
#
tg
<=
0
or
(
type
(
minct
)
==
"number"
and
#
tg
<
minct
)
then
rsop
.
solveprlen
=
nil
rshint
.
nohint_sel
=
false
return
0
,
Group
.
CreateGroup
(),
nil
,
0
end
if
chk_hint
and
not
rshint
.
SelectYesNo
(
sp
,
chk_hint
)
then
rsop
.
solveprlen
=
nil
rshint
.
nohint_sel
=
false
return
0
,
Group
.
CreateGroup
(),
nil
,
0
end
...
...
@@ -3383,28 +3399,28 @@ function rsgf.SelectSolve(g, sel_hint, sp, filter, minct, maxct, except_obj, sol
Duel
.
BreakEffect
()
end
--under bitch function because of lua table's last element cannot be "nil" ,but last solve parameter will often be "nil"
local
solve_parama_list
=
{}
local
len2
=
0
for
idx
,
solve_parama
in
pairs
(
solvefunpar
)
do
len2
=
len2
+
1
solve_parama_list
[
len2
]
=
solve_parama
end
if
rsop
.
solveprlen
and
rsop
.
solveprlen
>
len
then
for
i
=
1
,
rsop
.
solveprlen
-
len
do
len2
=
len2
+
1
solve_parama_list
[
len2
]
=
nil
solve_parama
=
type
(
solve_parama
)
==
"table"
and
solve_parama
or
{
solve_parama
}
local
solve_fun2
,
solve_parama_list
=
solve_parama
[
1
],
{
}
local
len
,
parama
=
0
,
0
if
#
solve_parama
>
1
then
for
idx
=
2
,
#
solve_parama
do
parama
=
solve_parama
[
idx
]
if
type
(
parama
)
==
"string"
and
parama
==
rsnv
then
parama
=
nil
end
len
=
len
+
1
solve_parama_list
[
len
]
=
parama
end
end
local
solve_parama_len
=
select
(
"#"
,
...
)
for
idx
=
1
,
solve_parama_len
do
len2
=
len2
+
1
solve_parama_list
[
len2
]
=
({
...
})[
idx
]
end
if
type
(
solve_fun
)
==
"table"
and
#
solve_fun
==
0
then
solve_fun
=
nil
local
ex_parama_len
=
select
(
"#"
,
...
)
if
ex_parama_len
>
0
then
for
idx
=
1
,
ex_parama_len
do
len
=
len
+
1
solve_parama_list
[
len
]
=
({
...
})[
idx
]
end
end
local
res
=
not
solve_fun
and
{
tg
,
tg
:
GetFirst
()
}
or
{
solve
fun2
(
tg
,
table.unpack
(
solve_parama_list
))
}
if
solve_fun
and
success_loc
then
local
res
=
not
solve_fun
2
and
{
tg
,
tg
:
GetFirst
()
}
or
{
solve_
fun2
(
tg
,
table.unpack
(
solve_parama_list
))
}
if
solve_fun
2
and
success_loc
then
local
success
,
success_g
=
rsop
.
CheckOperateSuccess
(
success_loc
)
table.insert
(
res
,
#
success_g
)
end
...
...
@@ -3415,7 +3431,7 @@ end
Group
.
SelectSolve
=
rsgf
.
SelectSolve
--Group:Select card from group and send to hand
function
rsgf
.
SelectToHand
(
g
,
sp
,
filter
,
minct
,
maxct
,
except_obj
,
solve_parama
,
...
)
solve_parama
=
rsop
.
GetFollowingSolvepar
(
solve_parama
,
4
)
solve_parama
=
rsop
.
ReplaceSolveParama
(
solve_parama
,
4
)
rsop
.
SelectOC_successlocation
=
rsop
.
SelectOC_successlocation
or
LOCATION_HAND
rshint
.
nohint_sel
=
true
return
rsgf
.
SelectSolve
(
g
,
"th"
,
sp
,
filter
,
minct
,
maxct
,
except_obj
,
{
rsop
.
SendtoHand
,
table.unpack
(
solve_parama
)
},
...
)
...
...
@@ -3423,7 +3439,7 @@ end
Group
.
SelectToHand
=
rsgf
.
SelectToHand
--Group:Select card from group and send to grave
function
rsgf
.
SelectToGrave
(
g
,
sp
,
filter
,
minct
,
maxct
,
except_obj
,
solve_parama
,
...
)
solve_parama
=
rsop
.
GetFollowingSolvepar
(
solve_parama
,
2
)
solve_parama
=
rsop
.
ReplaceSolveParama
(
solve_parama
,
2
)
rsop
.
SelectOC_successlocation
=
rsop
.
SelectOC_successlocation
or
LOCATION_GRAVE
rshint
.
nohint_sel
=
true
return
rsgf
.
SelectSolve
(
g
,
"tg"
,
sp
,
filter
,
minct
,
maxct
,
except_obj
,
{
rsop
.
SendtoGrave
,
table.unpack
(
solve_parama
)
},
...
)
...
...
@@ -3431,14 +3447,14 @@ end
Group
.
SelectToGrave
=
rsgf
.
SelectToGrave
--Group:Select card from group and release
function
rsgf
.
SelectRelease
(
g
,
sp
,
filter
,
minct
,
maxct
,
except_obj
,
solve_parama
,
...
)
solve_parama
=
rsop
.
GetFollowingSolvepar
(
solve_parama
,
2
)
solve_parama
=
rsop
.
ReplaceSolveParama
(
solve_parama
,
2
)
rshint
.
nohint_sel
=
true
return
rsgf
.
SelectSolve
(
g
,
"tg"
,
sp
,
filter
,
minct
,
maxct
,
except_obj
,
{
rsop
.
Release
,
table.unpack
(
solve_parama
)
},
...
)
end
Group
.
SelectRelease
=
rsgf
.
SelectRelease
--Group:Select card from group and send to deck
function
rsgf
.
SelectToDeck
(
g
,
sp
,
filter
,
minct
,
maxct
,
except_obj
,
solve_parama
,
...
)
solve_parama
=
rsop
.
GetFollowingSolvepar
(
solve_parama
,
4
)
solve_parama
=
rsop
.
ReplaceSolveParama
(
solve_parama
,
4
)
rsop
.
SelectOC_successlocation
=
rsop
.
SelectOC_successlocation
or
rsloc
.
de
rshint
.
nohint_sel
=
true
return
rsgf
.
SelectSolve
(
g
,
"td"
,
sp
,
filter
,
minct
,
maxct
,
except_obj
,
{
rsop
.
SendtoDeck
,
table.unpack
(
solve_parama
)
},
...
)
...
...
@@ -3446,14 +3462,14 @@ end
Group
.
SelectToDeck
=
rsgf
.
SelectToDeck
--Group:Select card from group and destroy
function
rsgf
.
SelectDestroy
(
g
,
sp
,
filter
,
minct
,
maxct
,
except_obj
,
solve_parama
,
...
)
solve_parama
=
rsop
.
GetFollowingSolvepar
(
solve_parama
,
2
)
solve_parama
=
rsop
.
ReplaceSolveParama
(
solve_parama
,
2
)
rshint
.
nohint_sel
=
true
return
rsgf
.
SelectSolve
(
g
,
"des"
,
sp
,
filter
,
minct
,
maxct
,
except_obj
,
{
rsop
.
Destroy
,
table.unpack
(
solve_parama
)
},
...
)
end
Group
.
SelectDestroy
=
rsgf
.
SelectDestroy
--Group:Select card from group and remove
function
rsgf
.
SelectRemove
(
g
,
sp
,
filter
,
minct
,
maxct
,
except_obj
,
solve_parama
,
...
)
solve_parama
=
rsop
.
GetFollowingSolvepar
(
solve_parama
,
3
)
solve_parama
=
rsop
.
ReplaceSolveParama
(
solve_parama
,
3
)
rsop
.
SelectOC_successlocation
=
rsop
.
SelectOC_successlocation
or
LOCATION_REMOVED
rshint
.
nohint_sel
=
true
return
rsgf
.
SelectSolve
(
g
,
"rm"
,
sp
,
filter
,
minct
,
maxct
,
except_obj
,
{
rsop
.
Remove
,
table.unpack
(
solve_parama
)
},
...
)
...
...
@@ -3461,7 +3477,7 @@ end
Group
.
SelectRemove
=
rsgf
.
SelectRemove
--Group:Select card from group and special summon
function
rsgf
.
SelectSpecialSummon
(
g
,
sp
,
filter
,
minct
,
maxct
,
except_obj
,
solve_parama
,
...
)
--solve_parama = rsop.
GetFollowingSolvepar
(solve_parama, 8)
--solve_parama = rsop.
ReplaceSolveParama
(solve_parama, 8)
solve_parama
=
type
(
solve_parama
)
==
"table"
and
solve_parama
or
{
solve_parama
}
local
e
=
Duel
.
GetChainInfo
(
0
,
CHAININFO_TRIGGERING_EFFECT
)
local
parlen
=
select
(
"#"
,
...
)
...
...
@@ -3475,7 +3491,7 @@ end
Group
.
SelectSpecialSummon
=
rsgf
.
SelectSpecialSummon
--Group:Select card and move to field
function
rsgf
.
SelectMoveToField
(
g
,
sp
,
filter
,
minct
,
maxct
,
except_obj
,
solve_parama
,
...
)
solve_parama
=
rsop
.
GetFollowingSolvepar
(
solve_parama
,
8
)
solve_parama
=
rsop
.
ReplaceSolveParama
(
solve_parama
,
8
)
solve_parama
[
1
]
=
solve_parama
[
1
]
or
sp
rshint
.
nohint_sel
=
true
return
rsgf
.
SelectSolve
(
g
,
HINTMSG_TOFIELD
,
sp
,
filter
,
minct
,
maxct
,
except_obj
,
{
rsop
.
MoveToField
,
table.unpack
(
solve_parama
)
},
...
)
...
...
@@ -3483,7 +3499,7 @@ end
Group
.
SelectMoveToField
=
rsgf
.
SelectMoveToField
--Function:Select card and move to field and activate
function
rsgf
.
SelectMoveToField_Activate
(
g
,
sp
,
filter
,
minct
,
maxct
,
except_obj
,
solve_parama
,
...
)
solve_parama
=
rsop
.
GetFollowingSolvepar
(
solve_parama
,
7
)
solve_parama
=
rsop
.
ReplaceSolveParama
(
solve_parama
,
7
)
solve_parama
[
1
]
=
solve_parama
[
1
]
or
sp
maxct
=
1
rshint
.
nohint_sel
=
true
...
...
@@ -3492,7 +3508,7 @@ end
Group
.
SelectMoveToField_Activate
=
rsgf
.
SelectMoveToField_Activate
--Function:Select card and SSet
function
rsgf
.
SelectSSet
(
g
,
sp
,
filter
,
minct
,
maxct
,
except_obj
,
solve_parama
,
...
)
solve_parama
=
rsop
.
GetFollowingSolvepar
(
solve_parama
,
4
)
solve_parama
=
rsop
.
ReplaceSolveParama
(
solve_parama
,
4
)
rshint
.
nohint_sel
=
true
return
rsgf
.
SelectSolve
(
g
,
HINTMSG_SET
,
sp
,
filter
,
minct
,
maxct
,
except_obj
,
rsop
.
SelectSSet_Operation
(
sp
,
solve_parama
),
...
)
end
...
...
@@ -3502,7 +3518,7 @@ Group.SelectSSet = rsgf.SelectSSet
--Card function: local m and cm and cm.rssetcode
function
rscf
.
DefineCard
(
code
,
setcode
)
if
not
_G
[
"c"
..
code
]
then
_G
[
"c"
..
code
]
=
{}
if
not
_G
[
"c"
..
code
]
then
_G
[
"c"
..
code
]
=
{
}
setmetatable
(
_G
[
"c"
..
code
],
Card
)
_G
[
"c"
..
code
].
__index
=
_G
[
"c"
..
code
]
end
...
...
@@ -3632,8 +3648,8 @@ rssf.SetSummonCondition = rscf.SetSummonCondition
--Check Built - in SetCode / Series Main Set
function
rscf
.
CheckSetCardMainSet
(
c
,
settype
,
series1
,
...
)
local
serieslist
=
{
series1
,
...
}
local
seriesnormallist
=
{}
local
seriescustomlist
=
{}
local
seriesnormallist
=
{
}
local
seriescustomlist
=
{
}
for
_
,
series
in
pairs
(
serieslist
)
do
if
type
(
series
)
==
"number"
then
table.insert
(
seriesnormallist
,
series
)
...
...
@@ -3642,9 +3658,9 @@ function rscf.CheckSetCardMainSet(c, settype, series1, ...)
end
end
local
str_list
=
rsof
.
String_Number_To_Table
(
seriescustomlist
)
local
codelist
=
{}
local
effectlist
=
{}
local
addcodelist
=
{}
local
codelist
=
{
}
local
effectlist
=
{
}
local
addcodelist
=
{
}
if
settype
==
"base"
then
if
#
seriesnormallist
>
0
and
c
:
IsSetCard
(
table.unpack
(
seriesnormallist
))
then
return
true
end
codelist
=
{
c
:
GetCode
()
}
...
...
@@ -3660,7 +3676,7 @@ function rscf.CheckSetCardMainSet(c, settype, series1, ...)
elseif
settype
==
"org"
then
if
#
seriesnormallist
>
0
and
c
:
IsOriginalSetCard
(
table.unpack
(
seriesnormallist
))
then
return
true
end
codelist
=
{
c
:
GetOriginalCode
()
}
effectlist
=
{}
effectlist
=
{
}
elseif
settype
==
"pre"
then
if
#
seriesnormallist
>
0
and
c
:
IsPreviousSetCard
(
table.unpack
(
seriesnormallist
))
then
return
true
end
codelist
=
{
c
:
GetPreviousCodeOnField
()
}
...
...
@@ -3675,7 +3691,7 @@ function rscf.CheckSetCardMainSet(c, settype, series1, ...)
for
_
,
code
in
ipairs
(
codelist
)
do
local
setcodestring
local
res
=
not
_G
[
"c"
..
code
]
and
true
or
false
if
res
then
_G
[
"c"
..
code
]
=
{}
end
if
res
then
_G
[
"c"
..
code
]
=
{
}
end
if
pcall
(
function
()
dofile
(
"expansions/script/c"
..
code
..
".lua"
)
end
)
or
pcall
(
function
()
dofile
(
"script/c"
..
code
..
".lua"
)
end
)
then
setcodestring
=
_G
[
"c"
..
code
].
rssetcode
end
...
...
@@ -4158,7 +4174,7 @@ function rscf.XyzLevelFreeGoal2(minct, maxct, og)
local
ug
=
g
:
Filter
(
Card
.
IsHasEffect
,
nil
,
rscode
.
Utility_Xyz_Material
,
tp
)
local
mg
=
g
:
Clone
()
mg
:
Sub
(
ug
)
local
totalreducelist
=
{}
local
totalreducelist
=
{
}
local
sumlist
=
{
#
mg
}
for
tc
in
aux
.
Next
(
ug
)
do
local
ct
=
0
...
...
@@ -4602,7 +4618,7 @@ function rscf.GetSameType_Base(c, way_str, type1, ...)
end
local
type_list
=
type1
and
{
type1
,
...
}
or
{
TYPE_MONSTER
,
TYPE_SPELL
,
TYPE_TRAP
}
local
total_type
=
0
local
total_type_list
=
{}
local
total_type_list
=
{
}
for
_
,
ctype
in
pairs
(
type_list
)
do
if
type_fun
(
c
)
&
ctype
==
ctype
then
total_type
=
total_type
|
ctype
...
...
@@ -4715,8 +4731,8 @@ end
function
rshint
.
SelectOption
(
p
,
...
)
local
fun_list
=
{
...
}
local
off
=
1
local
ops
=
{}
local
opval
=
{}
local
ops
=
{
}
local
opval
=
{
}
for
idx
,
val
in
pairs
(
fun_list
)
do
if
rsof
.
Check_Boolean
(
val
,
true
)
then
local
sel_hint
=
fun_list
[
idx
+
1
]
...
...
@@ -4748,9 +4764,9 @@ function rshint.SelectOption_Page(p, hint_list1, ...)
local
op
,
currentpage
=
0
,
1
local
len
=
#
hint_list
local
maxpage
=
len
<=
4
and
1
or
math.ceil
((
len
-
1
)
/
3
)
local
pagehint
=
{}
local
pagehint
=
{
}
for
page
=
1
,
maxpage
do
pagehint
[
page
]
=
{}
pagehint
[
page
]
=
{
}
if
page
==
1
then
pagehint
[
page
]
=
{
hint_list
[
1
],
hint_list
[
2
]
or
null
,
hint_list
[
3
]
or
null
,
hint_list
[
4
]
or
null
}
elseif
page
>
1
then
...
...
@@ -4888,7 +4904,7 @@ end
--split the string, ues ", " as delim_er
function
rsof
.
String_Split
(
str_input
,
delim_er
)
delim_er
=
delim_er
or
','
local
pos
,
arr
=
0
,
{}
local
pos
,
arr
=
0
,
{
}
--case string list
if
delim_er
==
','
then
for
st
,
sp
in
function
()
return
string.find
(
str_input
,
delim_er
,
pos
,
true
)
end
do
...
...
@@ -4904,7 +4920,7 @@ function rsof.String_Split(str_input, delim_er)
pos
=
sp
+
1
end
table.insert
(
arr
,
string.sub
(
str_input
,
pos
))
local
arr2
=
{}
local
arr2
=
{
}
local
str2
=
arr
[
1
]
for
idx
,
val
in
ipairs
(
arr
)
do
if
idx
==
1
then
table.insert
(
arr2
,
str2
)
...
...
@@ -4939,7 +4955,7 @@ end
--you can use "a, b, c" or { "a, b, c" } or { "a", "b", "c" } as same
--return { "a", "b", "c" }
function
rsof
.
String_Number_To_Table
(
value
)
local
table1
=
{}
local
table1
=
{
}
if
type
(
value
)
==
"string"
then
table1
=
rsof
.
String_Split
(
value
)
elseif
type
(
value
)
==
"number"
then
...
...
@@ -4996,7 +5012,7 @@ function rsof.Table_List_Single(base_tab, check_val)
end
function
rsof
.
Table_List_Base
(
check_type
,
base_tab
,
check_val1
,
...
)
local
check_list
=
{
check_val1
,
...
}
local
res_list
=
{}
local
res_list
=
{
}
for
idx
,
check_val
in
pairs
(
check_list
)
do
local
exist_res
,
exist_idx
=
rsof
.
Table_List_Single
(
base_tab
,
check_val
)
if
check_type
==
"normal"
then
...
...
@@ -5024,7 +5040,7 @@ function rsof.Table_List_AND(base_tab, check_val1, ...)
end
--other function: Find Intersection element in 2 table2
function
rsof
.
Table_Intersection
(
tab1
,
...
)
local
intersection_list
=
{}
local
intersection_list
=
{
}
local
tab_list
=
{
...
}
for
_
,
ele1
in
pairs
(
tab1
)
do
table.insert
(
intersection_list
,
ele1
)
...
...
@@ -5039,7 +5055,7 @@ function rsof.Table_Intersection(tab1, ...)
end
--other function: Clone Table
function
rsof
.
Table_Clone
(
tab
)
local
tab2
=
{}
local
tab2
=
{
}
for
idx
,
val
in
pairs
(
tab
)
do
tab2
[
idx
]
=
val
end
...
...
@@ -5049,7 +5065,7 @@ end
--error at "nil" value !!!!!!!!!
--error at no number key !!!!!!!!!
function
rsof
.
Table_Mix
(
tab1
,
...
)
local
res_list
=
{}
local
res_list
=
{
}
local
list
=
{
tab1
,
...
}
local
len
=
0
for
_
,
tab
in
pairs
(
list
)
do
...
...
@@ -5064,7 +5080,7 @@ function rsof.Table_Mix(tab1, ...)
end
--other function: table to desc ({ m, 1 } to aux.Stringid(m, 1))
function
rsof
.
Table_To_Desc
(
hint_list
)
local
res_list
=
{}
local
res_list
=
{
}
for
_
,
hint
in
pairs
(
hint_list
)
do
if
type
(
hint
)
==
"table"
then
table.insert
(
res_list
,
aux
.
Stringid
(
hint
[
1
],
hint
[
2
]))
...
...
@@ -5076,7 +5092,7 @@ function rsof.Table_To_Desc(hint_list)
end
--other function: Count for table value
function
rsof
.
Table_Count
(
tab
,
ct_val
)
local
ct_list
=
{}
local
ct_list
=
{
}
for
idx
,
val
in
pairs
(
tab
)
do
if
val
==
ct_val
then
table.insert
(
ct_list
,
idx
)
...
...
expansions/script/c10199991.lua
View file @
dae07ccc
...
...
@@ -427,7 +427,7 @@ function rsof.Escape_Old_Functions()
rsef
.
ACT_EQUIP
=
rsef
.
A_Equip
rsef
.
STO_FLIP
=
rsef
.
STO_Flip
rsef
.
STF_FLIP
=
rsef
.
STF_Flip
rsef
.
QO_NEGATE
=
rsef
.
QO_Negate
rsef
.
FC_PHASELEAVE
=
rsef
.
FC_PhaseLeave
rsef
.
ACT
=
rsef
.
A
...
...
@@ -474,8 +474,7 @@ function rsof.Escape_Old_Functions()
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
)(
...
)
return
rscon
.
disneg
(
"neg"
,
dn_filter
,
pl_fun
and
1
or
0
)(
...
)
end
end
rscon
.
discon
=
function
(
dn_filter
,
pl_fun
)
...
...
@@ -484,8 +483,7 @@ function rsof.Escape_Old_Functions()
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
)(
...
)
return
rscon
.
disneg
(
"dis"
,
dn_filter
,
pl_fun
and
1
or
0
)(
...
)
end
end
rsef
.
QO_NEGATE
=
function
(
reg_list
,
dn_type
,
lim_list
,
dn_str
,
range
,
con
,
cost
,
desc_list
,
cate
,
flag
,
reset_list
)
...
...
expansions/script/c12003016.lua
View file @
dae07ccc
...
...
@@ -74,14 +74,11 @@ function c12003016.negop(e,tp,eg,ep,ev,re,r,rp)
if
Duel
.
NegateActivation
(
ev
)
and
re
:
GetHandler
():
IsRelateToEffect
(
re
)
then
Duel
.
Remove
(
eg
,
POS_FACEUP
,
REASON_EFFECT
)
end
end
function
c12003016
.
target
(
e
,
c
)
local
g
,
te
=
Duel
.
GetChainInfo
(
0
,
CHAININFO_TARGET_CARDS
,
CHAININFO_TRIGGERING_EFFECT
)
return
not
(
te
and
te
:
IsHasProperty
(
EFFECT_FLAG_CARD_TARGET
))
or
not
(
g
and
g
:
IsContains
(
c
))
end
end
function
c12003016
.
efilter
(
e
,
te
)
return
te
:
GetOwnerPlayer
()
~=
e
:
GetHandlerPlayer
()
local
g
,
te
=
Duel
.
GetChainInfo
(
0
,
CHAININFO_TARGET_CARDS
,
CHAININFO_TRIGGERING_EFFECT
)
return
(
not
(
te
and
te
:
IsHasProperty
(
EFFECT_FLAG_CARD_TARGET
))
or
not
(
g
and
g
:
IsContains
(
c
))
)
and
te
:
GetOwnerPlayer
()
~=
e
:
GetHandlerPlayer
()
end
function
c12003016
.
cfilter
(
c
,
tp
)
...
...
@@ -102,6 +99,12 @@ end
function
c12003016
.
spfilter
(
c
,
e
,
tp
,
zone
)
return
c
:
IsRace
(
RACE_SEASERPENT
)
and
c
:
IsLevelBelow
(
4
)
and
c
:
IsCanBeSpecialSummoned
(
e
,
0
,
tp
,
false
,
false
,
POS_FACEUP
,
tp
,
zone
,
true
)
end
function
c12003016
.
sptg
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
local
zone
=
e
:
GetHandler
():
GetLinkedZone
(
tp
)
if
chk
==
0
then
return
Duel
.
GetLocationCount
(
tp
,
LOCATION_MZONE
,
zone
)
>
2
and
Duel
.
IsExistingMatchingCard
(
c12003016
.
spfilter
,
tp
,
LOCATION_GRAVE
,
0
,
3
,
nil
,
e
,
tp
,
zone
)
end
Duel
.
SetOperationInfo
(
0
,
CATEGORY_SPECIAL_SUMMON
,
nil
,
1
,
0
,
LOCATION_DECK
)
end
function
c12003016
.
spop
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
zone
=
e
:
GetHandler
():
GetLinkedZone
()
if
chk
==
0
then
return
zone
~=
0
...
...
expansions/script/c12047001.lua
View file @
dae07ccc
...
...
@@ -96,9 +96,10 @@ function cm.spop(e,tp,eg,ep,ev,re,r,rp)
if
tc
:
IsSetCard
(
0x3fa8
)
then
local
mat1
=
Duel
.
SelectFusionMaterial
(
tp
,
tc
,
mg2
,
nil
,
chkf
)
tc
:
SetMaterial
(
mat1
)
local
mat2
=
mat1
:
Filter
(
Card
.
IsLocation
,
nil
,
LOCATION_
EXTRA
)
local
mat2
=
mat1
:
Filter
(
Card
.
IsLocation
,
nil
,
LOCATION_
GRAVE
)
mat1
:
Sub
(
mat2
)
Duel
.
SendtoGrave
(
mat1
+
mat2
,
REASON_EFFECT
+
REASON_MATERIAL
+
REASON_FUSION
)
Duel
.
Remove
(
mat2
,
POS_FACEUP
,
REASON_EFFECT
)
Duel
.
SendtoGrave
(
mat1
,
REASON_EFFECT
+
REASON_MATERIAL
+
REASON_FUSION
)
local
e2
=
Effect
.
CreateEffect
(
e
:
GetHandler
())
e2
:
SetType
(
EFFECT_TYPE_FIELD
)
e2
:
SetProperty
(
EFFECT_FLAG_PLAYER_TARGET
)
...
...
expansions/script/c12047003.lua
View file @
dae07ccc
...
...
@@ -116,7 +116,7 @@ function cm.activate(e,tp,eg,ep,ev,re,r,rp)
end
end
end
function
c
1
m
.
con4_4
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
function
cm
.
con4_4
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
return
Duel
.
GetCurrentChain
()
==
0
end
function
cm
.
op4_5
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
...
...
@@ -131,7 +131,7 @@ end
function
cm
.
thfilter1
(
c
)
return
c
:
IsFaceup
()
and
c
:
IsAttribute
(
ATTRIBUTE_LIGHT
+
ATTRIBUTE_DARK
)
and
c
:
IsAbleToHand
()
end
function
cm
.
tdtg
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
,
chkc
)
function
cm
.
tdtg
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
Duel
.
IsExistingMatchingCard
(
cm
.
thfilter1
,
tp
,
LOCATION_REMOVED
,
0
,
1
,
nil
)
end
Duel
.
SetOperationInfo
(
0
,
CATEGORY_TOHAND
,
nil
,
1
,
0
,
0
)
end
...
...
expansions/script/c16400012.lua
View file @
dae07ccc
...
...
@@ -87,7 +87,6 @@ function cm.effop(e,tp,eg,ep,ev,re,r,rp)
e1
:
SetProperty
(
EFFECT_FLAG_SINGLE_RANGE
+
EFFECT_FLAG_CLIENT_HINT
)
e1
:
SetRange
(
LOCATION_MZONE
)
e1
:
SetCountLimit
(
1
)
e1
:
SetTarget
(
cm
.
etg
)
e1
:
SetValue
(
cm
.
efilter
)
e1
:
SetReset
(
RESET_EVENT
+
RESETS_STANDARD
)
rc
:
RegisterEffect
(
e1
,
true
)
...
...
@@ -108,11 +107,8 @@ function cm.effop(e,tp,eg,ep,ev,re,r,rp)
rc
:
RegisterEffect
(
e2
,
true
)
end
end
function
cm
.
etg
(
e
,
c
)
local
g
,
te
=
Duel
.
GetChainInfo
(
0
,
CHAININFO_TARGET_CARDS
,
CHAININFO_TRIGGERING_EFFECT
)
return
not
(
te
and
te
:
IsHasProperty
(
EFFECT_FLAG_CARD_TARGET
))
or
not
(
g
and
g
:
IsContains
(
c
))
end
function
cm
.
efilter
(
e
,
re
,
tp
)
return
re
:
GetHandlerPlayer
()
~=
e
:
GetHandlerPlayer
()
local
g
=
Duel
.
GetChainInfo
(
0
,
CHAININFO_TARGET_CARDS
)
return
not
(
re
and
re
:
IsHasProperty
(
EFFECT_FLAG_CARD_TARGET
))
or
not
(
g
and
g
:
IsContains
(
e
:
GetHandler
()))
and
re
:
GetHandlerPlayer
()
~=
e
:
GetHandlerPlayer
()
end
\ No newline at end of file
expansions/script/c16400025.lua
View file @
dae07ccc
...
...
@@ -80,7 +80,6 @@ function c16400025.effop(e,tp,eg,ep,ev,re,r,rp)
e1
:
SetProperty
(
EFFECT_FLAG_SINGLE_RANGE
+
EFFECT_FLAG_CLIENT_HINT
)
e1
:
SetRange
(
LOCATION_MZONE
)
e1
:
SetCountLimit
(
1
)
e1
:
SetTarget
(
c16400025
.
etg
)
e1
:
SetValue
(
c16400025
.
efilter
)
e1
:
SetReset
(
RESET_EVENT
+
RESETS_STANDARD
)
rc
:
RegisterEffect
(
e1
,
true
)
...
...
@@ -101,11 +100,8 @@ function c16400025.effop(e,tp,eg,ep,ev,re,r,rp)
rc
:
RegisterEffect
(
e2
,
true
)
end
end
function
c16400025
.
etg
(
e
,
c
)
local
g
,
te
=
Duel
.
GetChainInfo
(
0
,
CHAININFO_TARGET_CARDS
,
CHAININFO_TRIGGERING_EFFECT
)
return
not
(
te
and
te
:
IsHasProperty
(
EFFECT_FLAG_CARD_TARGET
))
or
not
(
g
and
g
:
IsContains
(
c
))
end
function
c16400025
.
efilter
(
e
,
re
,
tp
)
return
re
:
GetHandlerPlayer
()
~=
e
:
GetHandlerPlayer
()
local
g
=
Duel
.
GetChainInfo
(
0
,
CHAININFO_TARGET_CARDS
)
return
not
(
re
and
re
:
IsHasProperty
(
EFFECT_FLAG_CARD_TARGET
))
or
not
(
g
and
g
:
IsContains
(
e
:
GetHandler
()))
and
re
:
GetHandlerPlayer
()
~=
e
:
GetHandlerPlayer
()
end
\ No newline at end of file
expansions/script/c33701435.lua
View file @
dae07ccc
...
...
@@ -14,7 +14,7 @@ end
function
cm
.
activate
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_CODE
)
local
ac
=
Duel
.
AnnounceCard
(
tp
)
local
e1
=
Effect
.
CreateEffect
(
c
)
local
e1
=
Effect
.
CreateEffect
(
e
:
GetHandler
()
)
e1
:
SetType
(
EFFECT_TYPE_FIELD
+
EFFECT_TYPE_CONTINUOUS
)
e1
:
SetCode
(
EVENT_CHAINING
)
e1
:
SetLabel
(
ac
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment