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
3
Merge Requests
3
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
7858e9ea
Commit
7858e9ea
authored
Jul 05, 2025
by
Vury Leo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add レボリューション・シンクロン
parent
46387862
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
73 additions
and
30 deletions
+73
-30
c63265554.lua
c63265554.lua
+1
-0
c80696379.lua
c80696379.lua
+1
-0
c97682931.lua
c97682931.lua
+25
-16
procedure.lua
procedure.lua
+46
-14
No files found.
c63265554.lua
View file @
7858e9ea
...
...
@@ -2,6 +2,7 @@
function
c63265554
.
initial_effect
(
c
)
--synchro summon
aux
.
AddSynchroProcedure
(
c
,
nil
,
aux
.
NonTuner
(
nil
),
1
)
Synchro
.
AddSynchroProcedure
(
c
)
c
:
EnableReviveLimit
()
--equip
local
e1
=
Effect
.
CreateEffect
(
c
)
...
...
c80696379.lua
View file @
7858e9ea
...
...
@@ -2,6 +2,7 @@
function
c80696379
.
initial_effect
(
c
)
--synchro summon
aux
.
AddSynchroProcedure
(
c
,
nil
,
aux
.
NonTuner
(
nil
),
1
)
Synchro
.
AddSynchroProcedure
(
c
)
c
:
EnableReviveLimit
()
--special summon
local
e1
=
Effect
.
CreateEffect
(
c
)
...
...
c97682931.lua
View file @
7858e9ea
...
...
@@ -3,23 +3,32 @@
local
s
,
id
,
o
=
GetID
()
function
s
.
initial_effect
(
c
)
--hand synchro
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetType
(
EFFECT_TYPE_SINGLE
)
e1
:
SetCode
(
EFFECT_EXTRA_SYNCHRO_MATERIAL
)
e1
:
SetProperty
(
EFFECT_FLAG_SINGLE_RANGE
)
e1
:
SetRange
(
LOCATION_HAND
)
e1
:
SetCountLimit
(
1
,
id
)
e1
:
SetValue
(
s
.
matval
)
c
:
RegisterEffect
(
e1
)
-- local e1=Effect.CreateEffect(c)
-- e1:SetType(EFFECT_TYPE_SINGLE)
-- e1:SetCode(EFFECT_EXTRA_SYNCHRO_MATERIAL)
-- e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
-- e1:SetRange(LOCATION_HAND)
-- e1:SetCountLimit(1,id)
-- e1:SetValue(s.matval)
-- c:RegisterEffect(e1)
--hand synchro
local
e3
=
Effect
.
CreateEffect
(
c
)
e3
:
SetType
(
EFFECT_TYPE_SINGLE
)
e3
:
SetCode
(
id
)
e3
:
SetProperty
(
EFFECT_FLAG_SINGLE_RANGE
)
e3
:
SetRange
(
LOCATION_HAND
)
e3
:
SetCountLimit
(
1
,
id
)
e3
:
SetValue
(
s
.
matval
)
c
:
RegisterEffect
(
e3
)
--register HOpT
local
e0
=
Effect
.
CreateEffect
(
c
)
e0
:
SetType
(
EFFECT_TYPE_SINGLE
+
EFFECT_TYPE_CONTINUOUS
)
e0
:
SetCode
(
EVENT_BE_PRE_MATERIAL
)
e0
:
SetProperty
(
EFFECT_FLAG_EVENT_PLAYER
+
EFFECT_FLAG_CANNOT_DISABLE
)
e0
:
SetLabelObject
(
e1
)
e0
:
SetCondition
(
s
.
hsyncon
)
e0
:
SetOperation
(
s
.
hsynreg
)
c
:
RegisterEffect
(
e0
)
--
local e0=Effect.CreateEffect(c)
--
e0:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS)
--
e0:SetCode(EVENT_BE_PRE_MATERIAL)
--
e0:SetProperty(EFFECT_FLAG_EVENT_PLAYER+EFFECT_FLAG_CANNOT_DISABLE)
--
e0:SetLabelObject(e1)
--
e0:SetCondition(s.hsyncon)
--
e0:SetOperation(s.hsynreg)
--
c:RegisterEffect(e0)
--spsum self
local
e2
=
Effect
.
CreateEffect
(
c
)
e2
:
SetDescription
(
aux
.
Stringid
(
id
,
0
))
...
...
procedure.lua
View file @
7858e9ea
...
...
@@ -3652,7 +3652,7 @@ function Synchro.SynCondition(tuner_race,tuner_filter,non_tuner_race,non_tuner_f
local
target_level
=
c
:
GetLevel
()
--- @param mc Card
mg
=
mg
or
Duel
.
GetMatchingGroup
(
function
(
mc
)
return
mc
:
IsCanBeSynchroMaterial
(
c
)
end
,
c
:
GetControler
(),
LOCATION_MZONE
+
LOCATION_HAND
,
0
,
nil
)
mg
=
mg
or
Duel
.
GetMatchingGroup
(
function
(
mc
)
return
mc
:
Is
FaceupEx
()
and
mc
:
Is
CanBeSynchroMaterial
(
c
)
end
,
c
:
GetControler
(),
LOCATION_MZONE
+
LOCATION_HAND
,
0
,
nil
)
local
smat_states
=
nil
local
smat_arr
=
nil
...
...
@@ -3743,6 +3743,7 @@ function Synchro.SynTarget(tuner_race,tuner_filter,non_tuner_race,non_tuner_filt
end
end
end
assert
(
#
selected_states
>
0
,
"we selected an invalid state"
)
for
_
,
candidate
in
ipairs
(
cg_arr
)
do
for
_
,
state
in
ipairs
(
selected_states
)
do
...
...
@@ -3785,6 +3786,9 @@ function Synchro.SynTarget(tuner_race,tuner_filter,non_tuner_race,non_tuner_filt
break
end
end
if
addable
:
IsContains
(
candidate
)
then
break
end
end
end
end
...
...
@@ -3793,7 +3797,7 @@ function Synchro.SynTarget(tuner_race,tuner_filter,non_tuner_race,non_tuner_filt
break
end
local
finishable
=
Synchro
.
IsSelectionValid
(
sg_arr
,
target_level
,
tuner_race
,
tuner_filter
,
non_tuner_race
,
non_tuner_filter
,
tc
,
tuner_min
,
tuner_max
,
non_tuner_min
,
non_tuner_max
)
local
finishable
=
Synchro
.
IsSelectionValid
(
sg_arr
,
target_level
,
tuner_race
,
tuner_filter
,
non_tuner_race
,
non_tuner_filter
,
tc
,
tuner_min
,
tuner_max
,
non_tuner_min
,
non_tuner_max
,
base_mapper
)
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_SMATERIAL
)
local
picked
=
Group
.
SelectUnselect
(
addable
,
sg
,
tp
,
finishable
,
true
,
selected_level_min
,
target_level
)
...
...
@@ -3831,6 +3835,14 @@ function Synchro.SynOperation()
-- confirm hand hard
local
hand_cards
=
g
:
Filter
(
function
(
c
)
return
c
:
IsLocation
(
LOCATION_HAND
)
end
,
nil
)
Duel
.
ConfirmCards
(
1
-
tp
,
hand_cards
)
for
mc
in
aux
.
Next
(
g
)
do
if
Synchro
.
IsRevolution
(
mc
,
c
)
then
local
revo_effect
=
mc
:
IsHasEffect
(
97682931
)
Duel
.
Hint
(
HINT_CARD
,
0
,
mc
:
GetCode
())
revo_effect
:
UseCountLimit
(
mc
:
GetControler
())
end
end
-- Detect whether Tatsunecro’s effect was actually used:
-- (a) Tatsunecro itself was used as material, AND
-- (b) At least one hand card was included.
...
...
@@ -3871,12 +3883,12 @@ function Synchro.SynOperation()
end
end
function
Synchro
.
IsSelectionValid
(
selection
,
target_level
,
tuner_race
,
tuner_filter
,
non_tuner_race
,
non_tuner_filter
,
tc
,
tuner_min
,
tuner_max
,
non_tuner_min
,
non_tuner_max
)
function
Synchro
.
IsSelectionValid
(
selection
,
target_level
,
tuner_race
,
tuner_filter
,
non_tuner_race
,
non_tuner_filter
,
tc
,
tuner_min
,
tuner_max
,
non_tuner_min
,
non_tuner_max
,
base_mapper
)
local
states
=
Synchro
.
BuildStatesFromSelection
(
selection
,
tuner_race
,
tuner_filter
,
non_tuner_race
,
non_tuner_filter
,
Synchro
.
DefaultLevelM
apper
,
base_m
apper
,
tc
,
target_level
)
for
_
,
state
in
ipairs
(
states
)
do
...
...
@@ -4051,6 +4063,15 @@ function Synchro.IsTatsunecro(c)
return
c
:
IsHasEffect
(
3096468
)
~=
nil
end
--- @param c Card
function
Synchro
.
IsRevolution
(
c
,
tc
)
local
revo_e
=
c
:
IsHasEffect
(
97682931
)
if
revo_e
==
nil
or
revo_e
:
CheckCountLimit
(
c
:
GetControler
())
==
false
then
return
false
end
return
revo_e
:
GetValue
()(
revo_e
,
tc
)
end
--- @param c Card
function
Synchro
.
IsGenomix
(
c
)
return
c
:
IsHasEffect
(
42155488
)
~=
nil
...
...
@@ -4127,10 +4148,8 @@ function Synchro.GenerateVariantForCard(st,card,selected_count,tc,tuner_race,tun
local
declared_race
=
card
:
IsHasEffect
(
42155488
):
GetLabel
()
if
st
.
genomix_race
~=
nil
then
assert
(
declared_race
==
st
.
genomix_race
,
"we activated 2 Genomix Fighter with 2 different races but we still have monster to summon"
)
table.insert
(
base_variants
,{})
else
table.insert
(
base_variants
,{
genomix_race
=
declared_race
})
end
table.insert
(
base_variants
,{
genomix_race
=
declared_race
})
end
-- Normal branch
...
...
@@ -4162,6 +4181,17 @@ function Synchro.GenerateVariantForCard(st,card,selected_count,tc,tuner_race,tun
end
-- now wrap each base_variant in role‐specific diffs
-- Revolution Synchron effect
local
hand_delta
=
0
if
card
:
IsLocation
(
LOCATION_HAND
)
then
if
Synchro
.
IsRevolution
(
card
,
tc
)
then
hand_delta
=
0
else
hand_delta
=
1
end
end
local
variants
=
{}
local
can_be_tuner
=
tuner_filter
(
card
,
tc
)
local
can_be_non_tuner
=
non_tuner_filter
(
card
,
tc
)
...
...
@@ -4176,6 +4206,7 @@ function Synchro.GenerateVariantForCard(st,card,selected_count,tc,tuner_race,tun
hand_count_limit
=
base
.
hand_count_limit
,
append_material_limit_filter
=
base
.
append_material_limit_filter
,
genomix_race
=
base
.
genomix_race
,
hand_delta
=
hand_delta
,
-- role-specific
tuner_delta
=
1
,
non_tuner_delta
=
0
,
...
...
@@ -4191,6 +4222,7 @@ function Synchro.GenerateVariantForCard(st,card,selected_count,tc,tuner_race,tun
hand_count_limit
=
base
.
hand_count_limit
,
append_material_limit_filter
=
base
.
append_material_limit_filter
,
genomix_race
=
base
.
genomix_race
,
hand_delta
=
hand_delta
,
tuner_delta
=
0
,
non_tuner_delta
=
1
,
role
=
Synchro
.
Role
.
NON_TUNER
,
...
...
@@ -4207,7 +4239,7 @@ function Synchro.ApplyVariantState(st,card,diff,tuner_race,tuner_filter,non_tune
-- compute increments using provided filters
local
tuner_inc
=
diff
.
tuner_delta
local
non_tuner_inc
=
diff
.
non_tuner_delta
local
hand_inc
=
card
:
IsLocation
(
LOCATION_HAND
)
and
1
or
0
local
hand_inc
=
diff
.
hand_delta
local
new_selected_roles
=
{
table.unpack
(
st
.
selected_roles
)
}
table.insert
(
new_selected_roles
,
diff
.
role
)
local
possible_sums
=
Synchro
.
UpdatepossibleSums
(
...
...
@@ -4253,7 +4285,6 @@ function Synchro.CanIncludeMaterial(mc,state,selected,tc,
level_prune_index
=
math.huge
,
}
index
=
index
or
-
1
-- build a temporary Group = already selected cards + this mc
local
sg
=
Group
.
FromCards
(
table.unpack
(
selected
))
sg
:
AddCard
(
mc
)
...
...
@@ -4272,7 +4303,6 @@ function Synchro.CanIncludeMaterial(mc,state,selected,tc,
-- per-card EFFECT_TUNER_MATERIAL_LIMIT check against already‐selected
local
eff
=
mc
:
IsHasEffect
(
EFFECT_TUNER_MATERIAL_LIMIT
)
if
eff
then
assert
(
eff
:
GetTarget
(),
"EFFECT_TUNER_MATERIAL_LIMIT has no target function"
)
append_material_limit_filter
=
function
(
c
)
return
eff
:
GetTarget
()(
eff
,
c
)
end
for
_
,
sel
in
ipairs
(
selected
)
do
if
not
append_material_limit_filter
(
sel
)
then
...
...
@@ -4287,10 +4317,12 @@ function Synchro.CanIncludeMaterial(mc,state,selected,tc,
end
-- hand‐location count limit
if
mc
:
IsLocation
(
LOCATION_HAND
)
and
index
>
prune_indexes
.
hand_prune_index
and
state
.
hand_count
+
1
>
state
.
hand_count_limit
then
return
false
,
nil
if
mc
:
IsLocation
(
LOCATION_HAND
)
and
index
>
prune_indexes
.
hand_prune_index
then
if
not
Synchro
.
IsRevolution
(
mc
,
tc
)
then
if
state
.
hand_count
+
1
>
state
.
hand_count_limit
then
return
false
,
nil
end
end
end
return
true
,
append_material_limit_filter
...
...
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