Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
ygopro-scripts-888
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
4
Merge Requests
4
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
MyCard
ygopro-scripts-888
Commits
284b5b8c
Commit
284b5b8c
authored
Jul 18, 2025
by
Vury Leo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
tuning インフェルノイド・ティエラ
parent
a5578101
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
104 additions
and
20 deletions
+104
-20
c97051536.lua
c97051536.lua
+9
-1
procedure.lua
procedure.lua
+95
-19
No files found.
c97051536.lua
View file @
284b5b8c
...
...
@@ -2,7 +2,15 @@
local
s
,
id
,
o
=
GetID
()
function
s
.
initial_effect
(
c
)
c
:
EnableReviveLimit
()
aux
.
AddFusionProcFunRep
(
c
,
aux
.
FilterBoolFunction
(
Card
.
IsFusionSetCard
,
0xbb
),
2
,
true
)
Fusion
.
AddFusionProcedure
(
c
,{
slots
=
{
Fusion
.
Slot
.
Group
({
min
=
2
,
max
=
2
,
filter
=
function
(
mc
,
tc
)
return
mc
:
IsFusionSetCard
(
0xbb
)
end
,
})
}
})
--spsummon
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetDescription
(
aux
.
Stringid
(
id
,
0
))
...
...
procedure.lua
View file @
284b5b8c
...
...
@@ -3684,12 +3684,12 @@ function Fusion.SearchGroup(e,leftovers,mg_base,grp,tc,fgoalcheck,chkf,additiona
end
-- Compute a parallel fcheck array
local
hasFCheck
=
a
ux
.
FCheckAdditional
~=
nil
local
hasFCheck
=
a
dditional_fcheck
~=
nil
local
fcheck_ok
=
{}
if
hasFCheck
then
for
i
,
c
in
ipairs
(
matched
)
do
mg_base
:
AddCard
(
c
)
fcheck_ok
[
i
]
=
a
ux
.
FCheckAdditional
(
tc
:
GetOwner
(),
mg_base
,
tc
)
fcheck_ok
[
i
]
=
a
dditional_fcheck
(
tc
:
GetOwner
(),
mg_base
,
tc
)
mg_base
:
RemoveCard
(
c
)
end
else
...
...
@@ -3766,7 +3766,7 @@ function Fusion.SearchGroup(e,leftovers,mg_base,grp,tc,fgoalcheck,chkf,additiona
local
mg_p
=
mg_base
:
Clone
()
mg_p
:
Merge
(
Group
.
FromCards
(
table.unpack
(
partial
)))
-- if it fails, mark prune = true
if
not
a
ux
.
FCheckAdditional
(
tc
:
GetOwner
(),
mg_p
,
tc
)
then
if
not
a
dditional_fcheck
(
tc
:
GetOwner
(),
mg_p
,
tc
)
then
prune
=
true
end
end
...
...
@@ -4492,24 +4492,41 @@ function Fusion.MultiOperation(tc,patterns)
local
finishable
=
sg
:
GetCount
()
>=
min_req
and
cond
(
e
,
sg
,
gc
,
chkf
,
selected
,
false
--[[allow_extras]]
,
false
--[[slots_only]]
,
locked_codes
,
additional_fcheck
,
additional_fgoalcheck
,
fcheck_signature
)
local
addable
=
Group
.
CreateGroup
()
-- check fcheck on the *current* sg
local
prev_ok
=
true
if
additional_fcheck
~=
nil
then
prev_ok
=
additional_fcheck
(
tc
:
GetOwner
(),
sg
,
tc
)
local
result_cache
=
{}
local
use_sig
=
(
fcheck_signature
~=
nil
or
(
additional_fcheck
==
nil
and
additional_fgoalcheck
==
nil
))
for
_
,
pat
in
ipairs
(
patterns
)
do
if
pat
.
fgoalcheck
~=
nil
then
use_sig
=
false
end
end
for
_
,
mc
in
ipairs
(
eg_arr
)
do
if
not
sg
:
IsContains
(
mc
)
then
sg
:
AddCard
(
mc
)
-- early FCheckAdditional prune: if adding this card would cause fcheck to fail, we can not add it
-- check fcheck again
local
new_ok
=
true
if
additional_fcheck
~=
nil
then
new_ok
=
additional_fcheck
(
tc
:
GetOwner
(),
sg
,
tc
)
end
-- prune if it was OK before but fails now
if
not
(
prev_ok
and
not
new_ok
)
then
if
use_sig
==
true
then
-- compute a stable signature for this mc
local
sig
=
Fusion
.
GetMaterialCardSignature
(
mc
,
tc
,
active_patterns
,
fcheck_signature
)
-- look up whether we already tested this shape
local
can_add
=
result_cache
[
sig
]
if
can_add
==
nil
then
-- first time seeing this signature: do the real test
local
found
=
false
sg
:
AddCard
(
mc
)
-- completion test against active patterns
for
_
,
pat
in
ipairs
(
active_patterns
)
do
if
Fusion
.
CanCompleteFromMappings
(
e
,
sg
,
mg
,
pat
.
slots
,
pat
.
matfilter
,
pat
.
fgoalcheck
,
tc
,
gc
,
chkf
,
locked_codes
,
additional_fcheck
,
additional_fgoalcheck
,
fcheck_signature
)
then
found
=
true
break
end
end
sg
:
RemoveCard
(
mc
)
result_cache
[
sig
]
=
found
can_add
=
found
end
-- if it passed, add to the selectable set
if
can_add
then
addable
:
AddCard
(
mc
)
end
else
sg
:
AddCard
(
mc
)
-- completion test against active patterns
for
_
,
pat
in
ipairs
(
active_patterns
)
do
if
Fusion
.
CanCompleteFromMappings
(
e
,
sg
,
mg
,
pat
.
slots
,
pat
.
matfilter
,
pat
.
fgoalcheck
,
tc
,
gc
,
chkf
,
locked_codes
,
additional_fcheck
,
additional_fgoalcheck
,
fcheck_signature
)
then
...
...
@@ -4517,8 +4534,8 @@ function Fusion.MultiOperation(tc,patterns)
break
end
end
sg
:
RemoveCard
(
mc
)
end
sg
:
RemoveCard
(
mc
)
end
end
...
...
@@ -4658,3 +4675,62 @@ function Fusion.SelectFusionMaterial(tp,tc,mg,gc,chkf,opts)
local
sg
=
eff
:
GetOperation
()(
eff
,
tp
,
mg
,
gc
,
chkf
,
opts
)
return
sg
end
function
Fusion
.
GetMaterialCardSignature
(
mc
,
tc
,
patterns
,
fcheck_signature
)
-- helper to serialize any list‐style table into a sorted, comma‐separated string
local
function
serializeList
(
list
)
local
out
=
{}
for
_
,
v
in
ipairs
(
list
)
do
table.insert
(
out
,
tostring
(
v
))
end
table.sort
(
out
)
return
table.concat
(
out
,
","
)
end
local
parts
=
{}
-- for each pattern and each slot, record:
-- whether mc fits the slot’s code/matfilter
-- for group slots, the has_same and unique_by results
for
_
,
pat
in
ipairs
(
patterns
)
do
for
_
,
slot
in
ipairs
(
pat
.
slots
)
do
-- single‑slot checks
if
slot
.
match_code
or
slot
.
match_codes
or
slot
.
filter
then
local
match
,
is_sub
=
Fusion
.
MatchSlot
(
mc
,
slot
,
tc
)
table.insert
(
parts
,
match
and
"1"
or
"0"
)
table.insert
(
parts
,
is_sub
and
"1"
or
"0"
)
end
-- group‑slot checks
if
slot
.
group
then
if
slot
.
group
.
filter
then
table.insert
(
parts
,
slot
.
group
.
filter
(
mc
)
and
"1"
or
"0"
)
end
if
slot
.
group
.
has_same
then
if
slot
.
group
.
has_same
then
for
_
,
fn
in
ipairs
(
slot
.
group
.
has_same
)
do
local
raw
=
fn
(
mc
,
tc
)
if
type
(
raw
)
==
"table"
then
-- serialize a returned list/array into a stable string
table.insert
(
parts
,
"["
..
serializeList
(
raw
)
..
"]"
)
else
-- assume bitmask or simple value
table.insert
(
parts
,
tostring
(
raw
))
end
end
end
end
if
slot
.
group
.
unique_by
then
local
raw
=
slot
.
group
.
unique_by
(
mc
)
table.insert
(
parts
,
"["
..
serializeList
(
raw
)
..
"]"
)
end
end
end
end
-- optional fcheck_signature dimension
if
fcheck_signature
then
table.insert
(
parts
,
tostring
(
fcheck_signature
(
mc
)))
end
return
table.concat
(
parts
,
"|"
)
end
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