Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
ygopro-scripts
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
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
Commits
1f95c83a
Commit
1f95c83a
authored
Apr 30, 2017
by
VanillaSalt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
tweak
parent
9cfae0c8
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
47 additions
and
324 deletions
+47
-324
c13331639.lua
c13331639.lua
+1
-249
c48144509.lua
c48144509.lua
+13
-18
c54401832.lua
c54401832.lua
+1
-1
c99267150.lua
c99267150.lua
+0
-36
utility.lua
utility.lua
+32
-20
No files found.
c13331639.lua
View file @
1f95c83a
--覇王龍ズァーク
--覇王龍ズァーク
function
c13331639
.
initial_effect
(
c
)
function
c13331639
.
initial_effect
(
c
)
c
:
EnableReviveLimit
()
c
:
EnableReviveLimit
()
--aux.AddFusionProcFunMulti(c,false,c13331639.filters
)
aux
.
AddFusionProcMix
(
c
,
false
,
true
,
c13331639
.
fusfilter1
,
c13331639
.
fusfilter2
,
c13331639
.
fusfilter3
,
c13331639
.
fusfilter4
)
aux
.
EnablePendulumAttribute
(
c
,
false
)
aux
.
EnablePendulumAttribute
(
c
,
false
)
--fusion procedure
local
e0
=
Effect
.
CreateEffect
(
c
)
e0
:
SetType
(
EFFECT_TYPE_SINGLE
)
e0
:
SetProperty
(
EFFECT_FLAG_CANNOT_DISABLE
+
EFFECT_FLAG_UNCOPYABLE
)
e0
:
SetCode
(
EFFECT_FUSION_MATERIAL
)
e0
:
SetCondition
(
c13331639
.
fuscon
)
e0
:
SetOperation
(
c13331639
.
fusop
)
c
:
RegisterEffect
(
e0
)
--spsummon condition
--spsummon condition
local
e1
=
Effect
.
CreateEffect
(
c
)
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetType
(
EFFECT_TYPE_SINGLE
)
e1
:
SetType
(
EFFECT_TYPE_SINGLE
)
...
@@ -94,246 +86,6 @@ end
...
@@ -94,246 +86,6 @@ end
function
c13331639
.
fusfilter4
(
c
)
function
c13331639
.
fusfilter4
(
c
)
return
c
:
IsRace
(
RACE_DRAGON
)
and
c
:
IsFusionType
(
TYPE_PENDULUM
)
return
c
:
IsRace
(
RACE_DRAGON
)
and
c
:
IsFusionType
(
TYPE_PENDULUM
)
end
end
c13331639
.
filters
=
{
c13331639
.
fusfilter1
,
c13331639
.
fusfilter2
,
c13331639
.
fusfilter3
,
c13331639
.
fusfilter4
}
-- TO BE REMOVED ONCE THE UTILITIES ARE UPDATED
function
c13331639
.
FConditionFilterMultiOr
(
c
,
funs
,
n
)
for
i
=
1
,
n
do
if
funs
[
i
](
c
)
then
return
true
end
end
return
false
end
function
c13331639
.
FConditionFilterMulti
(
c
,
mg
,
funs
,
n
,
tbt
)
for
i
=
1
,
n
do
local
tp
=
2
^
(
i
-
1
)
if
bit
.
band
(
tbt
,
tp
)
~=
0
and
funs
[
i
](
c
)
then
local
t2
=
tbt
-
tp
if
t2
==
0
then
return
true
end
local
mg2
=
mg
:
Clone
()
mg2
:
RemoveCard
(
c
)
if
mg2
:
IsExists
(
c13331639
.
FConditionFilterMulti
,
1
,
nil
,
mg2
,
funs
,
n
,
t2
)
then
return
true
end
end
end
return
false
end
function
c13331639
.
CloneTable
(
g
)
local
ng
=
{}
for
i
=
1
,
#
g
do
local
sg
=
g
[
i
]:
Clone
()
table.insert
(
ng
,
sg
)
end
return
ng
end
function
c13331639
.
FConditionFilterMulti2
(
c
,
gr
)
local
gr2
=
c13331639
.
CloneTable
(
gr
)
for
i
=
1
,
#
gr2
do
gr2
[
i
]:
RemoveCard
(
c
)
end
table.remove
(
gr2
,
1
)
if
#
gr2
==
1
then
return
gr2
[
1
]:
IsExists
(
aux
.
TRUE
,
1
,
nil
)
else
return
gr2
[
1
]:
IsExists
(
c13331639
.
FConditionFilterMulti2
,
1
,
nil
,
gr2
)
end
end
function
c13331639
.
FConditionFilterMultiSelect
(
c
,
funs
,
n
,
mg
,
sg
)
local
valid
=
c13331639
.
FConditionFilterMultiValid
(
sg
,
funs
,
n
)
if
not
valid
then
valid
=
{
0
}
end
local
all
=
(
2
^
n
)
-
1
for
k
,
v
in
pairs
(
valid
)
do
v
=
bit
.
bxor
(
all
,
v
)
if
c13331639
.
FConditionFilterMulti
(
c
,
mg
,
funs
,
n
,
v
)
then
return
true
end
end
return
false
end
function
c13331639
.
FConditionFilterMultiValid
(
g
,
funs
,
n
)
local
tp
=
{}
local
tc
=
g
:
GetFirst
()
while
tc
do
local
tp1
=
{}
for
i
=
1
,
n
do
if
funs
[
i
](
tc
)
then
table.insert
(
tp1
,
2
^
(
i
-
1
))
end
end
table.insert
(
tp
,
tp1
)
tc
=
g
:
GetNext
()
end
return
c13331639
.
FConditionMultiGenerateValids
(
tp
,
n
)
end
function
c13331639
.
FConditionMultiGenerateValids
(
vs
,
n
)
local
c
=
2
while
#
vs
>
1
do
local
v1
=
vs
[
1
]
table.remove
(
vs
,
1
)
local
v2
=
vs
[
1
]
table.remove
(
vs
,
1
)
table.insert
(
vs
,
1
,
c13331639
.
FConditionMultiCombine
(
v1
,
v2
,
n
,
c
))
c
=
c
+
1
end
return
vs
[
1
]
end
function
c13331639
.
FConditionMultiCombine
(
t1
,
t2
,
n
,
c
)
local
res
=
{}
for
k1
,
v1
in
pairs
(
t1
)
do
for
k2
,
v2
in
pairs
(
t2
)
do
table.insert
(
res
,
bit
.
bor
(
v1
,
v2
))
end
end
res
=
c13331639
.
FConditionMultiCheckCount
(
res
,
n
)
return
c13331639
.
FConditionFilterMultiClean
(
res
)
end
function
c13331639
.
FConditionMultiCheckCount
(
vals
,
n
)
local
res
=
{}
local
flags
=
{}
for
k
,
v
in
pairs
(
vals
)
do
local
c
=
0
for
i
=
1
,
n
do
if
bit
.
band
(
v
,
2
^
(
i
-
1
))
~=
0
then
c
=
c
+
1
end
end
if
not
flags
[
c
]
then
res
[
c
]
=
{
v
}
flags
[
c
]
=
true
else
table.insert
(
res
[
c
],
v
)
end
end
local
mk
=
0
for
k
,
v
in
pairs
(
flags
)
do
if
k
>
mk
then
mk
=
k
end
end
return
res
[
mk
]
end
function
c13331639
.
FConditionFilterMultiClean
(
vals
)
local
res
=
{}
local
flags
=
{}
for
k
,
v
in
pairs
(
vals
)
do
if
not
flags
[
v
]
then
table.insert
(
res
,
v
)
flags
[
v
]
=
true
end
end
return
res
end
function
c13331639
.
fuscon
(
e
,
g
,
gc
,
chkfnf
)
local
c
=
e
:
GetHandler
()
if
g
==
nil
then
return
true
end
if
c
:
IsFaceup
()
then
return
false
end
local
chkf
=
bit
.
band
(
chkfnf
,
0xff
)
local
funs
=
c13331639
.
filters
local
n
=
4
local
mg
=
g
:
Filter
(
Card
.
IsCanBeFusionMaterial
,
nil
,
c
):
Filter
(
c13331639
.
FConditionFilterMultiOr
,
nil
,
funs
,
n
)
if
gc
then
if
not
gc
:
IsCanBeFusionMaterial
(
c
)
then
return
false
end
local
check_tot
=
(
2
^
n
)
-
1
local
mg2
=
mg
:
Clone
()
mg2
:
RemoveCard
(
gc
)
for
i
=
1
,
n
do
if
funs
[
i
](
gc
)
then
local
tbt
=
check_tot
-
2
^
(
i
-
1
)
if
mg2
:
IsExists
(
c13331639
.
FConditionFilterMulti
,
1
,
nil
,
mg2
,
funs
,
n
,
tbt
)
then
return
true
end
end
end
return
false
end
local
fs
=
false
local
groups
=
{}
for
i
=
1
,
n
do
table.insert
(
groups
,
Group
.
CreateGroup
())
end
local
tc
=
mg
:
GetFirst
()
while
tc
do
for
i
=
1
,
n
do
if
funs
[
i
](
tc
)
then
groups
[
i
]:
AddCard
(
tc
)
if
Auxiliary
.
FConditionCheckF
(
tc
,
chkf
)
then
fs
=
true
end
end
end
tc
=
mg
:
GetNext
()
end
local
gr2
=
c13331639
.
CloneTable
(
groups
)
if
chkf
~=
PLAYER_NONE
then
return
fs
and
gr2
[
1
]:
IsExists
(
c13331639
.
FConditionFilterMulti2
,
1
,
nil
,
gr2
)
else
return
gr2
[
1
]:
IsExists
(
c13331639
.
FConditionFilterMulti2
,
1
,
nil
,
gr2
)
end
end
function
c13331639
.
fusop
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
gc
,
chkfnf
)
local
c
=
e
:
GetHandler
()
local
chkf
=
bit
.
band
(
chkfnf
,
0xff
)
local
funs
=
c13331639
.
filters
local
n
=
4
local
g
=
eg
:
Filter
(
Card
.
IsCanBeFusionMaterial
,
nil
,
c
):
Filter
(
c13331639
.
FConditionFilterMultiOr
,
nil
,
funs
,
n
)
if
gc
then
local
sg
=
Group
.
FromCards
(
gc
)
local
mg
=
g
:
Clone
()
mg
:
RemoveCard
(
gc
)
for
i
=
1
,
n
-
1
do
local
mg2
=
mg
:
Filter
(
c13331639
.
FConditionFilterMultiSelect
,
nil
,
funs
,
n
,
mg
,
sg
)
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_FMATERIAL
)
local
sg2
=
mg2
:
Select
(
tp
,
1
,
1
,
nil
)
sg
:
AddCard
(
sg2
:
GetFirst
())
mg
:
RemoveCard
(
sg2
:
GetFirst
())
end
Duel
.
SetFusionMaterial
(
sg
)
return
end
local
sg
=
Group
.
CreateGroup
()
local
mg
=
g
:
Clone
()
for
i
=
1
,
n
do
local
mg2
=
mg
:
Filter
(
c13331639
.
FConditionFilterMultiSelect
,
nil
,
funs
,
n
,
mg
,
sg
)
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_FMATERIAL
)
local
sg2
=
nil
if
i
==
1
and
chkf
~=
PLAYER_NONE
then
sg2
=
mg2
:
FilterSelect
(
tp
,
Auxiliary
.
FConditionCheckF
,
1
,
1
,
nil
,
chkf
)
else
sg2
=
mg2
:
Select
(
tp
,
1
,
1
,
nil
)
end
sg
:
AddCard
(
sg2
:
GetFirst
())
mg
:
RemoveCard
(
sg2
:
GetFirst
())
end
Duel
.
SetFusionMaterial
(
sg
)
end
-- END SECTION TO BE REMOVED
function
c13331639
.
check_fusion_material_48144509
(
g
,
chkf
)
local
fs
=
false
local
mg
=
g
:
Filter
(
Card
.
IsLocation
,
nil
,
LOCATION_HAND
+
LOCATION_MZONE
)
local
funs
=
c13331639
.
filters
local
groups
=
{}
for
i
=
1
,
4
do
table.insert
(
groups
,
Group
.
CreateGroup
())
end
local
tc
=
mg
:
GetFirst
()
while
tc
do
for
i
=
1
,
4
do
if
funs
[
i
](
tc
)
then
groups
[
i
]:
AddCard
(
tc
)
if
Auxiliary
.
FConditionCheckF
(
tc
,
chkf
)
then
fs
=
true
end
end
end
tc
=
mg
:
GetNext
()
end
local
gr2
=
c13331639
.
CloneTable
(
groups
)
if
chkf
~=
PLAYER_NONE
then
return
fs
and
gr2
[
1
]:
IsExists
(
c13331639
.
FConditionFilterMulti2
,
1
,
nil
,
gr2
)
else
return
gr2
[
1
]:
IsExists
(
c13331639
.
FConditionFilterMulti2
,
1
,
nil
,
gr2
)
end
end
function
c13331639
.
select_fusion_material_48144509
(
tp
,
g
,
chkf
)
local
mg
=
g
:
Filter
(
Card
.
IsLocation
,
nil
,
LOCATION_HAND
+
LOCATION_MZONE
)
local
sg
=
Group
.
CreateGroup
()
local
funs
=
c13331639
.
filters
for
i
=
1
,
4
do
local
mg2
=
mg
:
Filter
(
c13331639
.
FConditionFilterMultiSelect
,
nil
,
funs
,
4
,
mg
,
sg
)
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_FMATERIAL
)
local
sg2
=
nil
if
i
==
1
and
chkf
~=
PLAYER_NONE
then
sg2
=
mg2
:
FilterSelect
(
tp
,
Auxiliary
.
FConditionCheckF
,
1
,
1
,
nil
,
chkf
)
else
sg2
=
mg2
:
Select
(
tp
,
1
,
1
,
nil
)
end
sg
:
AddCard
(
sg2
:
GetFirst
())
mg
:
RemoveCard
(
sg2
:
GetFirst
())
end
Duel
.
SetFusionMaterial
(
sg
)
return
sg
end
function
c13331639
.
limval
(
e
,
re
,
rp
)
function
c13331639
.
limval
(
e
,
re
,
rp
)
local
rc
=
re
:
GetHandler
()
local
rc
=
re
:
GetHandler
()
return
rc
:
IsLocation
(
LOCATION_MZONE
)
and
re
:
IsActiveType
(
TYPE_MONSTER
)
return
rc
:
IsLocation
(
LOCATION_MZONE
)
and
re
:
IsActiveType
(
TYPE_MONSTER
)
...
...
c48144509.lua
View file @
1f95c83a
...
@@ -23,26 +23,20 @@ function c48144509.filter2(c,e,tp,m,f,chkf)
...
@@ -23,26 +23,20 @@ function c48144509.filter2(c,e,tp,m,f,chkf)
return
c
:
IsType
(
TYPE_FUSION
)
and
c
:
IsRace
(
RACE_DRAGON
)
and
(
not
f
or
f
(
c
))
return
c
:
IsType
(
TYPE_FUSION
)
and
c
:
IsRace
(
RACE_DRAGON
)
and
(
not
f
or
f
(
c
))
and
c
:
IsCanBeSpecialSummoned
(
e
,
SUMMON_TYPE_FUSION
,
tp
,
false
,
false
)
and
c
:
CheckFusionMaterial
(
m
,
nil
,
chkf
)
and
c
:
IsCanBeSpecialSummoned
(
e
,
SUMMON_TYPE_FUSION
,
tp
,
false
,
false
)
and
c
:
CheckFusionMaterial
(
m
,
nil
,
chkf
)
end
end
--fusion monster filter
function
c48144509
.
fcheck
(
tp
,
sg
,
fc
)
--check_fusion_material_48144509: for dragon-type monsters that >2 odd-eye is possible
return
not
sg
:
IsContains
(
fc
)
and
sg
:
FilterCount
(
Card
.
IsLocation
,
nil
,
LOCATION_EXTRA
)
<=
2
function
c48144509
.
filter3
(
c
,
e
,
tp
,
m
,
f
,
chkf
)
local
mg
=
m
:
Clone
()
mg
:
RemoveCard
(
c
)
if
c
:
IsType
(
TYPE_FUSION
)
and
c
:
IsRace
(
RACE_DRAGON
)
and
(
not
f
or
f
(
c
))
and
c
:
IsCanBeSpecialSummoned
(
e
,
SUMMON_TYPE_FUSION
,
tp
,
false
,
false
)
then
if
c
.
check_fusion_material_48144509
then
return
c
.
check_fusion_material_48144509
(
mg
,
chkf
)
end
return
c
:
CheckFusionMaterial
(
mg
,
nil
,
chkf
)
else
return
false
end
end
end
function
c48144509
.
target
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
function
c48144509
.
target
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
if
chk
==
0
then
local
chkf
=
Duel
.
GetLocationCount
(
tp
,
LOCATION_MZONE
)
>
0
and
PLAYER_NONE
or
tp
local
chkf
=
Duel
.
GetLocationCount
(
tp
,
LOCATION_MZONE
)
>
0
and
PLAYER_NONE
or
tp
local
mg1
=
Duel
.
GetFusionMaterial
(
tp
):
Filter
(
Card
.
IsAbleToGrave
,
nil
)
local
mg1
=
Duel
.
GetFusionMaterial
(
tp
):
Filter
(
Card
.
IsAbleToGrave
,
nil
)
if
Duel
.
GetFieldGroupCount
(
tp
,
LOCATION_MZONE
,
0
)
==
0
and
Duel
.
GetFieldGroupCount
(
tp
,
0
,
LOCATION_MZONE
)
>
1
then
if
Duel
.
GetFieldGroupCount
(
tp
,
LOCATION_MZONE
,
0
)
==
0
and
Duel
.
GetFieldGroupCount
(
tp
,
0
,
LOCATION_MZONE
)
>
1
then
Auxiliary
.
FCheckAdditional
=
c48144509
.
fcheck
local
sg
=
Duel
.
GetMatchingGroup
(
c48144509
.
exfilter0
,
tp
,
LOCATION_EXTRA
,
0
,
nil
)
local
sg
=
Duel
.
GetMatchingGroup
(
c48144509
.
exfilter0
,
tp
,
LOCATION_EXTRA
,
0
,
nil
)
mg1
:
Merge
(
sg
)
mg1
:
Merge
(
sg
)
end
end
local
res
=
Duel
.
IsExistingMatchingCard
(
c48144509
.
filter3
,
tp
,
LOCATION_EXTRA
,
0
,
1
,
nil
,
e
,
tp
,
mg1
,
nil
,
chkf
)
local
res
=
Duel
.
IsExistingMatchingCard
(
c48144509
.
filter2
,
tp
,
LOCATION_EXTRA
,
0
,
1
,
nil
,
e
,
tp
,
mg1
,
nil
,
chkf
)
Auxiliary
.
FCheckAdditional
=
nil
if
not
res
then
if
not
res
then
local
ce
=
Duel
.
GetChainMaterial
(
tp
)
local
ce
=
Duel
.
GetChainMaterial
(
tp
)
if
ce
~=
nil
then
if
ce
~=
nil
then
...
@@ -59,11 +53,15 @@ end
...
@@ -59,11 +53,15 @@ end
function
c48144509
.
activate
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
function
c48144509
.
activate
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
chkf
=
Duel
.
GetLocationCount
(
tp
,
LOCATION_MZONE
)
>
0
and
PLAYER_NONE
or
tp
local
chkf
=
Duel
.
GetLocationCount
(
tp
,
LOCATION_MZONE
)
>
0
and
PLAYER_NONE
or
tp
local
mg1
=
Duel
.
GetFusionMaterial
(
tp
):
Filter
(
c48144509
.
filter1
,
nil
,
e
)
local
mg1
=
Duel
.
GetFusionMaterial
(
tp
):
Filter
(
c48144509
.
filter1
,
nil
,
e
)
local
exmat
=
false
if
Duel
.
GetFieldGroupCount
(
tp
,
LOCATION_MZONE
,
0
)
==
0
and
Duel
.
GetFieldGroupCount
(
tp
,
0
,
LOCATION_MZONE
)
>
1
then
if
Duel
.
GetFieldGroupCount
(
tp
,
LOCATION_MZONE
,
0
)
==
0
and
Duel
.
GetFieldGroupCount
(
tp
,
0
,
LOCATION_MZONE
)
>
1
then
exmat
=
true
local
sg
=
Duel
.
GetMatchingGroup
(
c48144509
.
exfilter1
,
tp
,
LOCATION_EXTRA
,
0
,
nil
,
e
)
local
sg
=
Duel
.
GetMatchingGroup
(
c48144509
.
exfilter1
,
tp
,
LOCATION_EXTRA
,
0
,
nil
,
e
)
mg1
:
Merge
(
sg
)
mg1
:
Merge
(
sg
)
end
end
local
sg1
=
Duel
.
GetMatchingGroup
(
c48144509
.
filter3
,
tp
,
LOCATION_EXTRA
,
0
,
nil
,
e
,
tp
,
mg1
,
nil
,
chkf
)
if
exmat
then
Auxiliary
.
FCheckAdditional
=
c48144509
.
fcheck
end
local
sg1
=
Duel
.
GetMatchingGroup
(
c48144509
.
filter2
,
tp
,
LOCATION_EXTRA
,
0
,
nil
,
e
,
tp
,
mg1
,
nil
,
chkf
)
Auxiliary
.
FCheckAdditional
=
nil
local
mg2
=
nil
local
mg2
=
nil
local
sg2
=
nil
local
sg2
=
nil
local
ce
=
Duel
.
GetChainMaterial
(
tp
)
local
ce
=
Duel
.
GetChainMaterial
(
tp
)
...
@@ -81,12 +79,9 @@ function c48144509.activate(e,tp,eg,ep,ev,re,r,rp)
...
@@ -81,12 +79,9 @@ function c48144509.activate(e,tp,eg,ep,ev,re,r,rp)
local
tc
=
tg
:
GetFirst
()
local
tc
=
tg
:
GetFirst
()
mg1
:
RemoveCard
(
tc
)
mg1
:
RemoveCard
(
tc
)
if
sg1
:
IsContains
(
tc
)
and
(
sg2
==
nil
or
not
sg2
:
IsContains
(
tc
)
or
not
Duel
.
SelectYesNo
(
tp
,
ce
:
GetDescription
()))
then
if
sg1
:
IsContains
(
tc
)
and
(
sg2
==
nil
or
not
sg2
:
IsContains
(
tc
)
or
not
Duel
.
SelectYesNo
(
tp
,
ce
:
GetDescription
()))
then
local
mat1
=
nil
if
exmat
then
Auxiliary
.
FCheckAdditional
=
c48144509
.
fcheck
end
if
tc
.
select_fusion_material_48144509
then
local
mat1
=
Duel
.
SelectFusionMaterial
(
tp
,
tc
,
mg1
,
nil
,
chkf
)
mat1
=
tc
.
select_fusion_material_48144509
(
tp
,
mg1
,
chkf
)
Auxiliary
.
FCheckAdditional
=
nil
else
mat1
=
Duel
.
SelectFusionMaterial
(
tp
,
tc
,
mg1
,
nil
,
chkf
)
end
tc
:
SetMaterial
(
mat1
)
tc
:
SetMaterial
(
mat1
)
Duel
.
SendtoGrave
(
mat1
,
REASON_EFFECT
+
REASON_MATERIAL
+
REASON_FUSION
)
Duel
.
SendtoGrave
(
mat1
,
REASON_EFFECT
+
REASON_MATERIAL
+
REASON_FUSION
)
Duel
.
BreakEffect
()
Duel
.
BreakEffect
()
...
...
c54401832.lua
View file @
1f95c83a
...
@@ -2,5 +2,5 @@
...
@@ -2,5 +2,5 @@
function
c54401832
.
initial_effect
(
c
)
function
c54401832
.
initial_effect
(
c
)
--fusion material
--fusion material
c
:
EnableReviveLimit
()
c
:
EnableReviveLimit
()
aux
.
AddFusionProcFunFun
Rep
(
c
,
aux
.
FilterBoolFunction
(
Card
.
IsFusionSetCard
,
0xe1
),
aux
.
FilterBoolFunction
(
Card
.
IsAttackBelow
,
3000
),
2
,
2
,
true
)
aux
.
AddFusionProcFunFun
(
c
,
aux
.
FilterBoolFunction
(
Card
.
IsFusionSetCard
,
0xe1
),
aux
.
FilterBoolFunction
(
Card
.
IsAttackBelow
,
3000
)
,
2
,
true
)
end
end
c99267150.lua
View file @
1f95c83a
...
@@ -20,39 +20,3 @@ end
...
@@ -20,39 +20,3 @@ end
function
c99267150
.
batfilter
(
e
,
c
)
function
c99267150
.
batfilter
(
e
,
c
)
return
c
:
IsAttribute
(
0x2f
)
return
c
:
IsAttribute
(
0x2f
)
end
end
function
c99267150
.
check_fusion_material_48144509
(
m
,
chkf
)
local
g1
=
m
:
Filter
(
Card
.
IsRace
,
nil
,
RACE_DRAGON
)
if
chkf
~=
PLAYER_NONE
and
not
g1
:
IsExists
(
Card
.
IsOnField
,
1
,
nil
)
then
return
false
end
local
ct1
=
g1
:
GetCount
()
local
ct2
=
g1
:
FilterCount
(
Card
.
IsLocation
,
nil
,
LOCATION_EXTRA
)
return
(
ct1
-
ct2
)
+
math.min
(
ct2
,
2
)
>=
5
end
function
c99267150
.
select_fusion_material_48144509
(
tp
,
m
,
chkf
)
local
cc
=
5
local
mg1
=
m
:
Filter
(
Card
.
IsRace
,
nil
,
RACE_DRAGON
)
local
mg2
=
mg1
:
Filter
(
Card
.
IsLocation
,
nil
,
LOCATION_EXTRA
)
local
sg
=
Group
.
CreateGroup
()
if
mg2
:
GetCount
()
>
2
then
mg1
:
Sub
(
mg2
)
if
mg1
:
GetCount
()
<
5
or
Duel
.
SelectYesNo
(
tp
,
aux
.
Stringid
(
48144509
,
0
))
then
local
minc
=
1
if
mg1
:
GetCount
()
<
4
then
minc
=
2
end
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_FMATERIAL
)
local
g
=
mg2
:
Select
(
tp
,
minc
,
2
,
nil
)
sg
:
Merge
(
g
)
cc
=
cc
-
g
:
GetCount
()
end
end
if
chkf
~=
PLAYER_NONE
and
mg1
:
GetCount
()
>
cc
then
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_FMATERIAL
)
local
g
=
mg1
:
FilterSelect
(
tp
,
aux
.
FConditionCheckF
,
1
,
1
,
nil
,
chkf
)
mg1
:
Sub
(
g
)
sg
:
Merge
(
g
)
cc
=
cc
-
1
end
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_FMATERIAL
)
local
g
=
mg1
:
Select
(
tp
,
cc
,
cc
,
nil
)
sg
:
Merge
(
g
)
Duel
.
SetFusionMaterial
(
sg
)
return
sg
end
utility.lua
View file @
1f95c83a
...
@@ -450,7 +450,11 @@ function Auxiliary.AddFusionProcMix(c,sub,insf,...)
...
@@ -450,7 +450,11 @@ function Auxiliary.AddFusionProcMix(c,sub,insf,...)
if
type
(
val
[
i
])
==
'function'
then
if
type
(
val
[
i
])
==
'function'
then
fun
[
i
]
=
function
(
c
)
return
val
[
i
](
c
)
and
not
c
:
IsHasEffect
(
6205579
)
end
fun
[
i
]
=
function
(
c
)
return
val
[
i
](
c
)
and
not
c
:
IsHasEffect
(
6205579
)
end
else
else
fun
[
i
]
=
function
(
c
,
fc
,
sub
)
return
c
:
IsFusionCode
(
val
[
i
])
or
(
sub
and
c
:
CheckFusionSubstitute
(
fc
))
end
if
sub
then
fun
[
i
]
=
function
(
c
,
fc
,
sub
)
return
c
:
IsFusionCode
(
val
[
i
])
or
(
sub
and
c
:
CheckFusionSubstitute
(
fc
))
end
else
fun
[
i
]
=
function
(
c
)
return
c
:
IsFusionCode
(
val
[
i
])
end
end
table.insert
(
mat
,
val
[
i
])
table.insert
(
mat
,
val
[
i
])
end
end
end
end
...
@@ -469,10 +473,10 @@ function Auxiliary.AddFusionProcMix(c,sub,insf,...)
...
@@ -469,10 +473,10 @@ function Auxiliary.AddFusionProcMix(c,sub,insf,...)
c
:
RegisterEffect
(
e1
)
c
:
RegisterEffect
(
e1
)
end
end
function
Auxiliary
.
FConditionMix
(
insf
,
sub
,
...
)
function
Auxiliary
.
FConditionMix
(
insf
,
sub
,
...
)
--g:Material group(nil for Instant Fusion)
--g:Material group(nil for Instant Fusion)
--gc:Material already used
--gc:Material already used
--chkf: check field, default:PLAYER_NONE
--chkf: check field, default:PLAYER_NONE
local
funs
=
{
...
}
local
funs
=
{
...
}
return
function
(
e
,
g
,
gc
,
chkfnf
)
return
function
(
e
,
g
,
gc
,
chkfnf
)
if
g
==
nil
then
return
insf
end
if
g
==
nil
then
return
insf
end
local
chkf
=
bit
.
band
(
chkfnf
,
0xff
)
local
chkf
=
bit
.
band
(
chkfnf
,
0xff
)
...
@@ -491,7 +495,7 @@ function Auxiliary.FConditionMix(insf,sub,...)
...
@@ -491,7 +495,7 @@ function Auxiliary.FConditionMix(insf,sub,...)
end
end
end
end
function
Auxiliary
.
FOperationMix
(
insf
,
sub
,
...
)
function
Auxiliary
.
FOperationMix
(
insf
,
sub
,
...
)
local
funs
=
{
...
}
local
funs
=
{
...
}
return
function
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
gc
,
chkfnf
)
return
function
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
gc
,
chkfnf
)
local
chkf
=
bit
.
band
(
chkfnf
,
0xff
)
local
chkf
=
bit
.
band
(
chkfnf
,
0xff
)
local
c
=
e
:
GetHandler
()
local
c
=
e
:
GetHandler
()
...
@@ -510,27 +514,28 @@ function Auxiliary.FOperationMix(insf,sub,...)
...
@@ -510,27 +514,28 @@ function Auxiliary.FOperationMix(insf,sub,...)
end
end
end
end
function
Auxiliary
.
FConditionFilterMix
(
c
,
fc
,
sub
,
...
)
function
Auxiliary
.
FConditionFilterMix
(
c
,
fc
,
sub
,
...
)
local
funs
=
{
...
}
if
not
c
:
IsCanBeFusionMaterial
(
fc
)
then
return
false
end
for
i
=
1
,
#
funs
do
for
i
,
f
in
ipairs
({
...
})
do
if
f
uns
[
i
]
(
c
,
fc
,
sub
)
then
return
true
end
if
f
(
c
,
fc
,
sub
)
then
return
true
end
end
end
return
false
return
false
end
end
function
Auxiliary
.
FCheckMix
(
c
,
mg
,
sg
,
fc
,
sub
,
fun1
,
fun2
,
...
)
function
Auxiliary
.
FCheckMix
(
c
,
mg
,
sg
,
fc
,
sub
,
fun1
,
fun2
,
...
)
sg
:
AddCard
(
c
)
local
res
if
fun2
then
if
fun2
then
res
=
(
fun1
(
c
,
fc
,
false
)
and
mg
:
IsExists
(
Auxiliary
.
FCheckMix
,
1
,
sg
,
mg
,
sg
,
fc
,
sub
,
fun2
,
...
)
sg
:
AddCard
(
c
)
or
fun1
(
c
,
fc
,
sub
)
and
mg
:
IsExists
(
Auxiliary
.
FCheckMix
,
1
,
sg
,
mg
,
sg
,
fc
,
false
,
fun2
,
...
))
local
res
=
fun1
(
c
,
fc
,
false
)
and
mg
:
IsExists
(
Auxiliary
.
FCheckMix
,
1
,
sg
,
mg
,
sg
,
fc
,
sub
,
fun2
,
...
)
or
sub
and
c
:
CheckFusionSubstitute
(
fc
)
and
mg
:
IsExists
(
Auxiliary
.
FCheckMix
,
1
,
sg
,
mg
,
sg
,
fc
,
false
,
fun2
,
...
)
sg
:
RemoveCard
(
c
)
return
res
else
else
re
s
=
fun1
(
c
,
fc
,
sub
)
re
turn
fun1
(
c
,
fc
,
sub
)
end
end
sg
:
RemoveCard
(
c
)
return
res
end
end
Auxiliary
.
FCheckAdditional
=
nil
function
Auxiliary
.
FCheckMixGoal
(
tp
,
sg
,
fc
,
sub
,
...
)
function
Auxiliary
.
FCheckMixGoal
(
tp
,
sg
,
fc
,
sub
,
...
)
local
g
=
Group
.
CreateGroup
()
local
g
=
Group
.
CreateGroup
()
return
sg
:
IsExists
(
Auxiliary
.
FCheckMix
,
1
,
nil
,
sg
,
g
,
fc
,
sub
,
...
)
and
Duel
.
GetLocationCountFromEx
(
tp
,
tp
,
sg
,
fc
)
>
0
return
sg
:
IsExists
(
Auxiliary
.
FCheckMix
,
1
,
nil
,
sg
,
g
,
fc
,
sub
,
...
)
and
Duel
.
GetLocationCountFromEx
(
tp
,
tp
,
sg
,
fc
)
>
0
and
(
not
Auxiliary
.
FCheckAdditional
or
Auxiliary
.
FCheckAdditional
(
tp
,
sg
,
fc
))
end
end
function
Auxiliary
.
FSelectMix
(
c
,
tp
,
mg
,
sg
,
fc
,
sub
,
...
)
function
Auxiliary
.
FSelectMix
(
c
,
tp
,
mg
,
sg
,
fc
,
sub
,
...
)
sg
:
AddCard
(
c
)
sg
:
AddCard
(
c
)
...
@@ -570,14 +575,13 @@ function Auxiliary.AddFusionProcCodeRep(c,code1,cc,sub,insf)
...
@@ -570,14 +575,13 @@ function Auxiliary.AddFusionProcCodeRep(c,code1,cc,sub,insf)
end
end
Auxiliary
.
AddFusionProcMix
(
c
,
sub
,
insf
,
table.unpack
(
code
))
Auxiliary
.
AddFusionProcMix
(
c
,
sub
,
insf
,
table.unpack
(
code
))
end
end
--Fusion monster, name + condition
--Fusion monster, name + condition
* n
function
Auxiliary
.
AddFusionProcCodeFun
(
c
,
code1
,
f
,
cc
,
sub
,
insf
)
function
Auxiliary
.
AddFusionProcCodeFun
(
c
,
code1
,
f
,
cc
,
sub
,
insf
)
local
fun
=
{}
local
fun
=
{}
fun
[
1
]
=
code1
for
i
=
1
,
cc
do
for
i
=
2
,
cc
+
1
do
fun
[
i
]
=
f
fun
[
i
]
=
f
end
end
Auxiliary
.
AddFusionProcMix
(
c
,
sub
,
insf
,
table.unpack
(
fun
))
Auxiliary
.
AddFusionProcMix
(
c
,
sub
,
insf
,
code1
,
table.unpack
(
fun
))
end
end
--Fusion monster, condition + condition
--Fusion monster, condition + condition
function
Auxiliary
.
AddFusionProcFun2
(
c
,
f1
,
f2
,
insf
)
function
Auxiliary
.
AddFusionProcFun2
(
c
,
f1
,
f2
,
insf
)
...
@@ -591,6 +595,14 @@ function Auxiliary.AddFusionProcFunRep(c,f,cc,insf)
...
@@ -591,6 +595,14 @@ function Auxiliary.AddFusionProcFunRep(c,f,cc,insf)
end
end
Auxiliary
.
AddFusionProcMix
(
c
,
false
,
insf
,
table.unpack
(
fun
))
Auxiliary
.
AddFusionProcMix
(
c
,
false
,
insf
,
table.unpack
(
fun
))
end
end
--Fusion monster, condition1 + condition2 * n
function
Auxiliary
.
AddFusionProcFunFun
(
c
,
f1
,
f2
,
cc
,
sub
,
insf
)
local
fun
=
{}
for
i
=
1
,
cc
do
fun
[
i
]
=
f2
end
Auxiliary
.
AddFusionProcMix
(
c
,
sub
,
insf
,
f1
,
table.unpack
(
fun
))
end
--Fusion monster, condition1 + condition2 * minc to maxc
--Fusion monster, condition1 + condition2 * minc to maxc
function
Auxiliary
.
AddFusionProcFunFunRep
(
c
,
f1
,
f2
,
minc
,
maxc
,
insf
)
function
Auxiliary
.
AddFusionProcFunFunRep
(
c
,
f1
,
f2
,
minc
,
maxc
,
insf
)
local
f1
=
function
(
c
)
return
f1
(
c
)
and
not
c
:
IsHasEffect
(
6205579
)
end
local
f1
=
function
(
c
)
return
f1
(
c
)
and
not
c
:
IsHasEffect
(
6205579
)
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