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
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
nanahira
ygopro-scripts
Commits
bcd6263b
Commit
bcd6263b
authored
Feb 12, 2026
by
nanahira
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
revert to upstream scripts
parent
cb19d46b
Pipeline
#43081
passed with stages
in 1 minute and 16 seconds
Changes
8
Pipelines
2
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
135 additions
and
182 deletions
+135
-182
c32467459.lua
c32467459.lua
+8
-17
c33900648.lua
c33900648.lua
+1
-1
c50078320.lua
c50078320.lua
+15
-40
c50140163.lua
c50140163.lua
+1
-1
c74733322.lua
c74733322.lua
+42
-92
c77124096.lua
c77124096.lua
+65
-22
c87257460.lua
c87257460.lua
+1
-1
c8852158.lua
c8852158.lua
+2
-8
No files found.
c32467459.lua
View file @
bcd6263b
...
@@ -3,23 +3,14 @@ local s,id,o=GetID()
...
@@ -3,23 +3,14 @@ local s,id,o=GetID()
function
s
.
initial_effect
(
c
)
function
s
.
initial_effect
(
c
)
--fusion material
--fusion material
c
:
EnableReviveLimit
()
c
:
EnableReviveLimit
()
if
aux
.
AddFusionProcShaddoll
then
--fusion
--old function
local
e0
=
Effect
.
CreateEffect
(
c
)
local
e0
=
Effect
.
CreateEffect
(
c
)
e0
:
SetType
(
EFFECT_TYPE_SINGLE
)
e0
:
SetType
(
EFFECT_TYPE_SINGLE
)
e0
:
SetProperty
(
EFFECT_FLAG_CANNOT_DISABLE
+
EFFECT_FLAG_UNCOPYABLE
)
e0
:
SetProperty
(
EFFECT_FLAG_CANNOT_DISABLE
+
EFFECT_FLAG_UNCOPYABLE
)
e0
:
SetCode
(
EFFECT_FUSION_MATERIAL
)
e0
:
SetCode
(
EFFECT_FUSION_MATERIAL
)
e0
:
SetCondition
(
s
.
FShaddollCondition
)
e0
:
SetCondition
(
s
.
FShaddollCondition
)
e0
:
SetOperation
(
s
.
FShaddollOperation
)
e0
:
SetOperation
(
s
.
FShaddollOperation
)
c
:
RegisterEffect
(
e0
)
c
:
RegisterEffect
(
e0
)
else
--new function
aux
.
AddFusionProcMix
(
c
,
false
,
true
,
function
(
mc
)
return
mc
:
IsFusionSetCard
(
0x9d
)
end
,
function
(
mc
)
return
aux
.
FShaddollFilter2
(
mc
,
ATTRIBUTE_DARK
)
end
,
function
(
mc
)
return
aux
.
FShaddollFilter2
(
mc
,
ATTRIBUTE_EARTH
)
end
)
end
--spsummon condition
--spsummon condition
local
e1
=
Effect
.
CreateEffect
(
c
)
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetType
(
EFFECT_TYPE_SINGLE
)
e1
:
SetType
(
EFFECT_TYPE_SINGLE
)
...
...
c33900648.lua
View file @
bcd6263b
...
@@ -197,4 +197,4 @@ function c33900648.costchk(e,te_or_c,tp)
...
@@ -197,4 +197,4 @@ function c33900648.costchk(e,te_or_c,tp)
end
end
function
c33900648
.
costop
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
function
c33900648
.
costop
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
Duel
.
PayLPCost
(
tp
,
500
)
Duel
.
PayLPCost
(
tp
,
500
)
end
end
\ No newline at end of file
c50078320.lua
View file @
bcd6263b
...
@@ -22,55 +22,30 @@ function c50078320.initial_effect(c)
...
@@ -22,55 +22,30 @@ function c50078320.initial_effect(c)
e2
:
SetOperation
(
c50078320
.
regop
)
e2
:
SetOperation
(
c50078320
.
regop
)
c
:
RegisterEffect
(
e2
)
c
:
RegisterEffect
(
e2
)
end
end
function
c50078320
.
GetAnnounceFilter
(
ep
,
ev
,
re
)
local
code
=
Duel
.
GetChainInfo
(
ev
,
CHAININFO_TARGET_PARAM
)
local
announce_filter
=
re
:
GetHandler
().
announce_filter
if
not
announce_filter
then
-- announce_filter not specified
return
{
code
,
OPCODE_ISCODE
,
OPCODE_NOT
}
end
local
function
AddNotCodeCondition
(
t
)
-- ... and not c:IsCode(code)
local
afilter
=
{
table.unpack
(
t
)}
table.insert
(
afilter
,
code
)
table.insert
(
afilter
,
OPCODE_ISCODE
)
table.insert
(
afilter
,
OPCODE_NOT
)
table.insert
(
afilter
,
OPCODE_AND
)
return
afilter
end
if
aux
.
GetValueType
(
announce_filter
)
==
"function"
then
-- function form
local
res
=
announce_filter
(
re
,
ep
,
ev
)
if
res
==
true
then
-- allow any except announced code
return
{
code
,
OPCODE_ISCODE
,
OPCODE_NOT
}
elseif
not
res
then
-- cannot be reannounced
return
false
else
-- returns a table, so we wrap it
return
AddNotCodeCondition
(
res
)
end
else
-- table form
return
AddNotCodeCondition
(
announce_filter
)
end
end
function
c50078320
.
condition
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
function
c50078320
.
condition
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
ex
=
Duel
.
GetOperationInfo
(
ev
,
CATEGORY_ANNOUNCE
)
local
ex
=
Duel
.
GetOperationInfo
(
ev
,
CATEGORY_ANNOUNCE
)
return
rp
==
1
-
tp
and
ex
and
c50078320
.
GetAnnounceFilter
(
ep
,
ev
,
re
)
~=
false
return
rp
==
1
-
tp
and
ex
end
end
function
c50078320
.
cost
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
function
c50078320
.
cost
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
e
:
GetHandler
():
IsAbleToGraveAsCost
()
end
if
chk
==
0
then
return
e
:
GetHandler
():
IsAbleToGraveAsCost
()
end
Duel
.
SendtoGrave
(
e
:
GetHandler
(),
REASON_COST
)
Duel
.
SendtoGrave
(
e
:
GetHandler
(),
REASON_COST
)
end
end
function
c50078320
.
operation
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
function
c50078320
.
operation
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
afilter
=
c50078320
.
GetAnnounceFilter
(
ep
,
ev
,
re
)
local
code
=
Duel
.
GetChainInfo
(
ev
,
CHAININFO_TARGET_PARAM
)
if
afilter
==
false
then
return
end
local
ac
=
0
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_CODE
)
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_CODE
)
local
ac
=
Duel
.
AnnounceCard
(
tp
,
table.unpack
(
afilter
))
if
re
:
GetHandler
().
announce_filter
==
nil
then
--not c:IsCode(code)
ac
=
Duel
.
AnnounceCard
(
tp
,
code
,
OPCODE_ISCODE
,
OPCODE_NOT
)
else
local
afilter
=
{
table.unpack
(
re
:
GetHandler
().
announce_filter
)}
--and not c:IsCode(code)
table.insert
(
afilter
,
code
)
table.insert
(
afilter
,
OPCODE_ISCODE
)
table.insert
(
afilter
,
OPCODE_NOT
)
table.insert
(
afilter
,
OPCODE_AND
)
ac
=
Duel
.
AnnounceCard
(
tp
,
table.unpack
(
afilter
))
end
Duel
.
ChangeTargetParam
(
ev
,
ac
)
Duel
.
ChangeTargetParam
(
ev
,
ac
)
end
end
function
c50078320
.
desfilter
(
c
)
function
c50078320
.
desfilter
(
c
)
...
...
c50140163.lua
View file @
bcd6263b
...
@@ -83,4 +83,4 @@ function c50140163.eqop(e,tp,eg,ep,ev,re,r,rp)
...
@@ -83,4 +83,4 @@ function c50140163.eqop(e,tp,eg,ep,ev,re,r,rp)
end
end
function
c50140163
.
repval
(
e
,
re
,
r
,
rp
)
function
c50140163
.
repval
(
e
,
re
,
r
,
rp
)
return
bit
.
band
(
r
,
REASON_BATTLE
)
~=
0
return
bit
.
band
(
r
,
REASON_BATTLE
)
~=
0
end
end
\ No newline at end of file
c74733322.lua
View file @
bcd6263b
...
@@ -21,39 +21,12 @@ function s.initial_effect(c)
...
@@ -21,39 +21,12 @@ function s.initial_effect(c)
e3
:
SetCategory
(
CATEGORY_SEARCH
+
CATEGORY_TOHAND
+
CATEGORY_ANNOUNCE
)
e3
:
SetCategory
(
CATEGORY_SEARCH
+
CATEGORY_TOHAND
+
CATEGORY_ANNOUNCE
)
e3
:
SetType
(
EFFECT_TYPE_IGNITION
)
e3
:
SetType
(
EFFECT_TYPE_IGNITION
)
e3
:
SetRange
(
LOCATION_FZONE
)
e3
:
SetRange
(
LOCATION_FZONE
)
e3
:
SetCode
(
EVENT_FREE_CHAIN
)
e3
:
SetCost
(
s
.
thcost
)
e3
:
SetCost
(
s
.
thcost
)
e3
:
SetTarget
(
s
.
thtg
)
e3
:
SetTarget
(
s
.
thtg
)
e3
:
SetOperation
(
s
.
thop
)
e3
:
SetOperation
(
s
.
thop
)
c
:
RegisterEffect
(
e3
)
c
:
RegisterEffect
(
e3
)
--global resetter
if
not
s
.
global_check
then
s
.
global_check
=
true
s
.
announced
=
{}
s
.
announced_set
=
{}
s
.
clearop
()
local
ge1
=
Effect
.
CreateEffect
(
c
)
ge1
:
SetType
(
EFFECT_TYPE_FIELD
+
EFFECT_TYPE_CONTINUOUS
)
ge1
:
SetCode
(
EVENT_PHASE_START
+
PHASE_DRAW
)
ge1
:
SetOperation
(
s
.
clearop
)
Duel
.
RegisterEffect
(
ge1
,
0
)
end
end
-- workaround for Engraver
local
ARTMEGIA_COUNT
=
4
function
s
.
AddToAnnounced
(
tp
,
code
)
table.insert
(
s
.
announced
[
tp
],
code
)
s
.
announced_set
[
tp
][
code
]
=
true
end
function
s
.
clearop
()
s
.
announced
[
0
]
=
{}
s
.
announced
[
1
]
=
{}
s
.
announced_set
[
0
]
=
{}
s
.
announced_set
[
1
]
=
{}
end
end
function
s
.
costfilter
(
c
)
function
s
.
costfilter
(
c
)
return
c
:
IsType
(
TYPE_SPELL
+
TYPE_TRAP
)
and
c
:
IsDiscardable
()
return
c
:
IsType
(
TYPE_SPELL
+
TYPE_TRAP
)
and
c
:
IsDiscardable
()
end
end
...
@@ -63,7 +36,8 @@ function s.thcost(e,tp,eg,ep,ev,re,r,rp,chk)
...
@@ -63,7 +36,8 @@ function s.thcost(e,tp,eg,ep,ev,re,r,rp,chk)
end
end
function
s
.
anfilter
(
c
,
tp
)
function
s
.
anfilter
(
c
,
tp
)
return
c
:
IsSetCard
(
0x1cd
)
and
c
:
IsType
(
TYPE_MONSTER
)
and
c
:
IsAbleToHand
()
return
c
:
IsSetCard
(
0x1cd
)
and
c
:
IsType
(
TYPE_MONSTER
)
and
c
:
IsAbleToHand
()
and
not
s
.
announced_set
[
tp
][
c
:
GetCode
()]
and
not
Duel
.
IsExistingMatchingCard
(
s
.
anexfilter
,
tp
,
LOCATION_MZONE
,
0
,
1
,
nil
,
c
:
GetCode
())
and
not
c
:
IsHasEffect
(
id
,
tp
)
end
end
function
s
.
anexfilter
(
c
,
code
)
function
s
.
anexfilter
(
c
,
code
)
return
c
:
IsFaceup
()
and
c
:
IsCode
(
code
)
return
c
:
IsFaceup
()
and
c
:
IsCode
(
code
)
...
@@ -72,51 +46,19 @@ function s.thfilter(c,code)
...
@@ -72,51 +46,19 @@ function s.thfilter(c,code)
return
c
:
IsSetCard
(
0x1cd
)
and
c
:
IsType
(
TYPE_MONSTER
)
and
c
:
IsAbleToHand
()
return
c
:
IsSetCard
(
0x1cd
)
and
c
:
IsType
(
TYPE_MONSTER
)
and
c
:
IsAbleToHand
()
and
c
:
IsCode
(
code
)
and
c
:
IsCode
(
code
)
end
end
function
s
.
thtg
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
function
s
.
CreateCodeList
(
g
,
list
,
exg
,
exlist
)
if
chk
==
0
then
return
Duel
.
IsExistingMatchingCard
(
s
.
anfilter
,
tp
,
LOCATION_DECK
,
0
,
1
,
nil
,
tp
)
end
local
g
=
Duel
.
GetMatchingGroup
(
s
.
anfilter
,
tp
,
LOCATION_DECK
,
0
,
nil
,
tp
)
local
ag
=
Group
.
CreateGroup
()
local
codes
=
{}
local
codes
=
{}
local
existing
=
{}
for
c
in
aux
.
Next
(
g
)
do
-- exclude group
local
code
=
c
:
GetCode
()
if
exg
then
if
not
ag
:
IsExists
(
Card
.
IsCode
,
1
,
nil
,
code
)
then
for
c
in
aux
.
Next
(
exg
)
do
ag
:
AddCard
(
c
)
local
code
=
c
:
GetCode
()
table.insert
(
codes
,
code
)
existing
[
code
]
=
true
end
end
-- exclude list
if
exlist
then
for
_
,
code
in
ipairs
(
exlist
)
do
existing
[
code
]
=
true
end
end
-- add group
if
g
then
for
c
in
aux
.
Next
(
g
)
do
local
code
=
c
:
GetCode
()
if
not
existing
[
code
]
then
existing
[
code
]
=
true
table.insert
(
codes
,
code
)
end
end
end
-- add list
if
list
then
for
_
,
code
in
ipairs
(
list
)
do
if
not
existing
[
code
]
then
existing
[
code
]
=
true
table.insert
(
codes
,
code
)
end
end
end
end
end
table.sort
(
codes
)
table.sort
(
codes
)
return
codes
end
function
s
.
thtg
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
local
g
=
Duel
.
GetMatchingGroup
(
s
.
anfilter
,
tp
,
LOCATION_DECK
,
0
,
nil
,
tp
)
local
exg
=
Duel
.
GetMatchingGroup
(
Card
.
IsFaceup
,
tp
,
LOCATION_MZONE
,
0
,
nil
)
local
codes
=
s
.
CreateCodeList
(
g
,
nil
,
exg
,
nil
)
if
chk
==
0
then
return
#
codes
>
0
end
local
afilter
=
{
codes
[
1
],
OPCODE_ISCODE
}
local
afilter
=
{
codes
[
1
],
OPCODE_ISCODE
}
if
#
codes
>
1
then
if
#
codes
>
1
then
--or ... or c:IsCode(codes[i])
--or ... or c:IsCode(codes[i])
...
@@ -126,13 +68,41 @@ function s.thtg(e,tp,eg,ep,ev,re,r,rp,chk)
...
@@ -126,13 +68,41 @@ function s.thtg(e,tp,eg,ep,ev,re,r,rp,chk)
table.insert
(
afilter
,
OPCODE_OR
)
table.insert
(
afilter
,
OPCODE_OR
)
end
end
end
end
ag
:
Clear
()
local
ncodes
=
{}
local
exg
=
Duel
.
GetMatchingGroup
(
aux
.
AND
(
Card
.
IsFaceup
,
Card
.
IsSetCard
),
tp
,
LOCATION_MZONE
,
0
,
nil
,
0x1cd
)
for
c
in
aux
.
Next
(
exg
)
do
local
code
=
c
:
GetCode
()
if
not
ag
:
IsExists
(
Card
.
IsCode
,
1
,
nil
,
code
)
then
ag
:
AddCard
(
c
)
table.insert
(
ncodes
,
code
)
end
end
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_CODE
)
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_CODE
)
local
ac
=
Duel
.
AnnounceCard
(
tp
,
table.unpack
(
afilter
))
local
ac
=
Duel
.
AnnounceCard
(
tp
,
table.unpack
(
afilter
))
s
.
AddToAnnounced
(
tp
,
ac
)
local
af
=
{
TYPE_FUSION
+
TYPE_SYNCHRO
+
TYPE_XYZ
+
TYPE_LINK
,
OPCODE_ISTYPE
,
OPCODE_NOT
,
0x1cd
,
OPCODE_ISSETCARD
,
OPCODE_AND
,
TYPE_MONSTER
,
OPCODE_ISTYPE
,
OPCODE_AND
}
for
i
=
1
,
#
ncodes
do
table.insert
(
af
,
ncodes
[
i
])
table.insert
(
af
,
OPCODE_ISCODE
)
table.insert
(
af
,
OPCODE_NOT
)
table.insert
(
af
,
OPCODE_AND
)
end
getmetatable
(
e
:
GetHandler
()).
announce_filter
=
af
Duel
.
SetTargetParam
(
ac
)
Duel
.
SetTargetParam
(
ac
)
getmetatable
(
e
:
GetHandler
()).
announce_filter
=
s
.
announce_filter_func
Duel
.
SetOperationInfo
(
0
,
CATEGORY_ANNOUNCE
,
nil
,
0
,
tp
,
0
)
Duel
.
SetOperationInfo
(
0
,
CATEGORY_ANNOUNCE
,
nil
,
0
,
tp
,
0
)
Duel
.
SetOperationInfo
(
0
,
CATEGORY_TOHAND
,
nil
,
1
,
tp
,
LOCATION_DECK
)
Duel
.
SetOperationInfo
(
0
,
CATEGORY_TOHAND
,
nil
,
1
,
tp
,
LOCATION_DECK
)
local
e0
=
Effect
.
CreateEffect
(
e
:
GetHandler
())
e0
:
SetType
(
EFFECT_TYPE_FIELD
)
e0
:
SetCode
(
id
)
e0
:
SetTargetRange
(
1
,
0
)
e0
:
SetTarget
(
s
.
thlimit
)
e0
:
SetLabel
(
ac
)
e0
:
SetReset
(
RESET_PHASE
+
PHASE_END
)
Duel
.
RegisterEffect
(
e0
,
tp
)
end
end
function
s
.
thlimit
(
e
,
c
,
tp
,
re
)
function
s
.
thlimit
(
e
,
c
,
tp
,
re
)
return
c
:
IsCode
(
e
:
GetLabel
())
return
c
:
IsCode
(
e
:
GetLabel
())
...
@@ -157,23 +127,3 @@ end
...
@@ -157,23 +127,3 @@ end
function
s
.
splimit
(
e
,
c
)
function
s
.
splimit
(
e
,
c
)
return
not
(
c
:
IsSetCard
(
0x1cd
)
or
c
:
IsCode
(
97556336
))
and
not
c
:
IsLocation
(
LOCATION_EXTRA
)
return
not
(
c
:
IsSetCard
(
0x1cd
)
or
c
:
IsCode
(
97556336
))
and
not
c
:
IsLocation
(
LOCATION_EXTRA
)
end
end
function
s
.
announce_filter_func
(
e
,
tp
,
ev
)
local
exg
=
Duel
.
GetMatchingGroup
(
aux
.
AND
(
Card
.
IsFaceup
,
Card
.
IsSetCard
),
tp
,
LOCATION_MZONE
,
0
,
nil
,
0x1cd
)
local
ncodes
=
s
.
CreateCodeList
(
exg
,
s
.
announced
[
tp
],
nil
,
nil
)
if
#
ncodes
>=
ARTMEGIA_COUNT
then
return
false
end
local
af
=
{
TYPE_FUSION
+
TYPE_SYNCHRO
+
TYPE_XYZ
+
TYPE_LINK
,
OPCODE_ISTYPE
,
OPCODE_NOT
,
0x1cd
,
OPCODE_ISSETCARD
,
OPCODE_AND
,
TYPE_MONSTER
,
OPCODE_ISTYPE
,
OPCODE_AND
}
for
i
=
1
,
#
ncodes
do
table.insert
(
af
,
ncodes
[
i
])
table.insert
(
af
,
OPCODE_ISCODE
)
table.insert
(
af
,
OPCODE_NOT
)
table.insert
(
af
,
OPCODE_AND
)
end
return
af
end
c77124096.lua
View file @
bcd6263b
...
@@ -2,16 +2,6 @@
...
@@ -2,16 +2,6 @@
local
s
,
id
,
o
=
GetID
()
local
s
,
id
,
o
=
GetID
()
function
s
.
initial_effect
(
c
)
function
s
.
initial_effect
(
c
)
aux
.
AddCodeList
(
c
,
94820406
,
72043279
)
aux
.
AddCodeList
(
c
,
94820406
,
72043279
)
--- fusion effect
local
e0
=
FusionSpell
.
CreateSummonEffect
(
c
,{
fusfilter
=
s
.
fusfilter
,
pre_select_mat_location
=
LOCATION_MZONE
|
LOCATION_GRAVE
|
LOCATION_REMOVED
,
mat_operation_code_map
=
{
{
[
LOCATION_DECK
]
=
FusionSpell
.
FUSION_OPERATION_GRAVE
},
{
[
0xff
]
=
FusionSpell
.
FUSION_OPERATION_SHUFFLE
}
},
sumtype
=
SUMMON_VALUE_DARK_FUSION
})
--Activate
--Activate
local
e1
=
Effect
.
CreateEffect
(
c
)
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetDescription
(
aux
.
Stringid
(
id
,
0
))
e1
:
SetDescription
(
aux
.
Stringid
(
id
,
0
))
...
@@ -19,19 +9,32 @@ function s.initial_effect(c)
...
@@ -19,19 +9,32 @@ function s.initial_effect(c)
e1
:
SetCode
(
EVENT_FREE_CHAIN
)
e1
:
SetCode
(
EVENT_FREE_CHAIN
)
e1
:
SetProperty
(
EFFECT_FLAG_FUSION_SUMMON
)
e1
:
SetProperty
(
EFFECT_FLAG_FUSION_SUMMON
)
e1
:
SetTarget
(
s
.
target
)
e1
:
SetTarget
(
s
.
target
)
e1
:
SetLabelObject
(
e0
)
e1
:
SetOperation
(
s
.
operation
)
e1
:
SetOperation
(
s
.
operation
)
c
:
RegisterEffect
(
e1
)
c
:
RegisterEffect
(
e1
)
end
end
s
.
fusion_effect
=
true
function
s
.
fusfilter
(
c
)
function
s
.
filter1
(
c
,
e
)
return
c
.
dark_calling
==
true
return
(
c
:
IsLocation
(
LOCATION_ONFIELD
+
LOCATION_GRAVE
)
or
c
:
IsFaceup
())
and
c
:
IsType
(
TYPE_MONSTER
)
and
c
:
IsCanBeFusionMaterial
()
and
c
:
IsAbleToDeck
()
and
not
c
:
IsImmuneToEffect
(
e
)
end
function
s
.
filter2
(
c
,
e
,
tp
,
m
,
f
,
chkf
)
return
c
:
IsType
(
TYPE_FUSION
)
and
c
.
dark_calling
and
(
not
f
or
f
(
c
))
and
c
:
IsCanBeSpecialSummoned
(
e
,
SUMMON_VALUE_DARK_FUSION
,
tp
,
false
,
false
)
and
c
:
CheckFusionMaterial
(
m
,
nil
,
chkf
)
end
end
function
s
.
target
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
function
s
.
target
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
local
fusion_effect
=
e
:
GetLabelObject
()
local
chkf
=
tp
local
mg
=
Duel
.
GetMatchingGroup
(
s
.
filter1
,
tp
,
LOCATION_ONFIELD
+
LOCATION_GRAVE
+
LOCATION_REMOVED
,
0
,
nil
,
e
)
local
b0
=
Duel
.
GetFlagEffect
(
tp
,
id
)
==
0
or
not
e
:
IsCostChecked
()
local
b0
=
Duel
.
GetFlagEffect
(
tp
,
id
)
==
0
or
not
e
:
IsCostChecked
()
local
b1
=
b0
and
fusion_effect
:
GetTarget
()(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
0
)
local
b1
=
b0
and
Duel
.
IsExistingMatchingCard
(
s
.
filter2
,
tp
,
LOCATION_EXTRA
,
0
,
1
,
nil
,
e
,
tp
,
mg
,
nil
,
chkf
)
if
b0
and
not
b1
then
local
ce
=
Duel
.
GetChainMaterial
(
tp
)
if
ce
~=
nil
then
local
fgroup
=
ce
:
GetTarget
()
local
mg3
=
fgroup
(
ce
,
e
,
tp
)
local
mf
=
ce
:
GetValue
()
b1
=
Duel
.
IsExistingMatchingCard
(
s
.
filter2
,
tp
,
LOCATION_EXTRA
,
0
,
1
,
nil
,
e
,
tp
,
mg3
,
mf
,
chkf
)
end
end
local
b2
=
Duel
.
IsExistingMatchingCard
(
s
.
thfilter2
,
tp
,
LOCATION_DECK
,
0
,
1
,
nil
)
local
b2
=
Duel
.
IsExistingMatchingCard
(
s
.
thfilter2
,
tp
,
LOCATION_DECK
,
0
,
1
,
nil
)
and
(
Duel
.
GetFlagEffect
(
tp
,
id
+
o
)
==
0
or
not
e
:
IsCostChecked
())
and
(
Duel
.
GetFlagEffect
(
tp
,
id
+
o
)
==
0
or
not
e
:
IsCostChecked
())
if
chk
==
0
then
return
b1
or
b2
end
if
chk
==
0
then
return
b1
or
b2
end
...
@@ -73,16 +76,56 @@ function s.operation(e,tp,eg,ep,ev,re,r,rp)
...
@@ -73,16 +76,56 @@ function s.operation(e,tp,eg,ep,ev,re,r,rp)
s
.
thop
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
s
.
thop
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
end
end
end
end
function
s
.
fsop
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
function
s
.
fsop
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
fusion_effect
=
e
:
GetLabelObject
()
local
chkf
=
tp
fusion_effect
:
GetOperation
()(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
mg
=
Duel
.
GetMatchingGroup
(
aux
.
NecroValleyFilter
(
s
.
filter1
),
tp
,
LOCATION_ONFIELD
+
LOCATION_GRAVE
+
LOCATION_REMOVED
,
0
,
nil
,
e
)
local
sg1
=
Duel
.
GetMatchingGroup
(
s
.
filter2
,
tp
,
LOCATION_EXTRA
,
0
,
nil
,
e
,
tp
,
mg
,
nil
,
chkf
)
local
mg3
=
nil
local
sg2
=
nil
local
ce
=
Duel
.
GetChainMaterial
(
tp
)
if
ce
~=
nil
then
local
fgroup
=
ce
:
GetTarget
()
mg3
=
fgroup
(
ce
,
e
,
tp
)
local
mf
=
ce
:
GetValue
()
sg2
=
Duel
.
GetMatchingGroup
(
s
.
filter2
,
tp
,
LOCATION_EXTRA
,
0
,
nil
,
e
,
tp
,
mg3
,
mf
,
chkf
)
end
if
sg1
:
GetCount
()
>
0
or
(
sg2
~=
nil
and
sg2
:
GetCount
()
>
0
)
then
local
sg
=
sg1
:
Clone
()
if
sg2
then
sg
:
Merge
(
sg2
)
end
::
cancel
::
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_SPSUMMON
)
local
tg
=
sg
:
Select
(
tp
,
1
,
1
,
nil
)
local
tc
=
tg
:
GetFirst
()
if
sg1
:
IsContains
(
tc
)
and
(
sg2
==
nil
or
not
sg2
:
IsContains
(
tc
)
or
(
ce
and
not
Duel
.
SelectYesNo
(
tp
,
ce
:
GetDescription
())))
then
local
mat
=
Duel
.
SelectFusionMaterial
(
tp
,
tc
,
mg
,
nil
,
chkf
)
if
#
mat
==
0
then
goto
cancel
end
tc
:
SetMaterial
(
mat
)
if
mat
:
IsExists
(
Card
.
IsFacedown
,
1
,
nil
)
then
local
cg
=
mat
:
Filter
(
Card
.
IsFacedown
,
nil
)
Duel
.
ConfirmCards
(
1
-
tp
,
cg
)
end
if
mat
:
Filter
(
s
.
cfilter
,
nil
):
GetCount
()
>
0
then
local
cg
=
mat
:
Filter
(
s
.
cfilter
,
nil
)
Duel
.
HintSelection
(
cg
)
end
Duel
.
SendtoDeck
(
mat
,
nil
,
SEQ_DECKSHUFFLE
,
REASON_EFFECT
+
REASON_MATERIAL
+
REASON_FUSION
)
Duel
.
BreakEffect
()
Duel
.
SpecialSummon
(
tc
,
SUMMON_VALUE_DARK_FUSION
,
tp
,
tp
,
false
,
false
,
POS_FACEUP
)
elseif
ce
~=
nil
then
local
mat2
=
Duel
.
SelectFusionMaterial
(
tp
,
tc
,
mg3
,
nil
,
chkf
)
if
#
mat2
==
0
then
goto
cancel
end
local
fop
=
ce
:
GetOperation
()
fop
(
ce
,
e
,
tp
,
tc
,
mat2
,
SUMMON_VALUE_DARK_FUSION
)
end
tc
:
CompleteProcedure
()
end
end
function
s
.
cfilter
(
c
)
return
c
:
IsLocation
(
LOCATION_GRAVE
+
LOCATION_REMOVED
)
or
(
c
:
IsLocation
(
LOCATION_MZONE
)
and
c
:
IsFaceup
())
end
end
function
s
.
thfilter2
(
c
)
function
s
.
thfilter2
(
c
)
return
c
:
IsCode
(
94820406
,
72043279
)
and
c
:
IsAbleToHand
()
return
c
:
IsCode
(
94820406
,
72043279
)
and
c
:
IsAbleToHand
()
end
end
function
s
.
thop
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
function
s
.
thop
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_ATOHAND
)
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_ATOHAND
)
local
g
=
Duel
.
SelectMatchingCard
(
tp
,
s
.
thfilter2
,
tp
,
LOCATION_DECK
,
0
,
1
,
1
,
nil
)
local
g
=
Duel
.
SelectMatchingCard
(
tp
,
s
.
thfilter2
,
tp
,
LOCATION_DECK
,
0
,
1
,
1
,
nil
)
...
...
c87257460.lua
View file @
bcd6263b
...
@@ -102,4 +102,4 @@ function c87257460.spop(e,tp,eg,ep,ev,re,r,rp)
...
@@ -102,4 +102,4 @@ function c87257460.spop(e,tp,eg,ep,ev,re,r,rp)
if
tc
then
if
tc
then
Duel
.
SpecialSummon
(
tc
,
0
,
tp
,
tp
,
true
,
false
,
POS_FACEUP
)
Duel
.
SpecialSummon
(
tc
,
0
,
tp
,
tp
,
true
,
false
,
POS_FACEUP
)
end
end
end
end
\ No newline at end of file
c8852158.lua
View file @
bcd6263b
...
@@ -3,14 +3,8 @@ local s,id,o=GetID()
...
@@ -3,14 +3,8 @@ local s,id,o=GetID()
function
s
.
initial_effect
(
c
)
function
s
.
initial_effect
(
c
)
--fusion material
--fusion material
c
:
EnableReviveLimit
()
c
:
EnableReviveLimit
()
-- using new function
--fusion
if
aux
.
AddFusionProcShaddoll
then
aux
.
AddFusionProcShaddoll
(
c
,
ATTRIBUTE_WIND
)
--old function
aux
.
AddFusionProcShaddoll
(
c
,
ATTRIBUTE_WIND
)
else
--new function
aux
.
AddFusionProcFun2
(
c
,
function
(
mc
)
return
mc
:
IsFusionSetCard
(
0x9d
)
end
,
function
(
mc
)
return
aux
.
FShaddollFilter2
(
mc
,
ATTRIBUTE_WIND
)
end
,
true
)
end
--cannot spsummon
--cannot spsummon
local
e1
=
Effect
.
CreateEffect
(
c
)
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetType
(
EFFECT_TYPE_SINGLE
)
e1
:
SetType
(
EFFECT_TYPE_SINGLE
)
...
...
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