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
Ai
ygopro-222DIY-cards
Commits
328435de
Commit
328435de
authored
Feb 29, 2024
by
聖園ミカ
🐟
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wocaonima
parent
679f74c3
Changes
17
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
1208 additions
and
721 deletions
+1208
-721
expansions/222DIY.cdb
expansions/222DIY.cdb
+0
-0
expansions/script/c37900001.lua
expansions/script/c37900001.lua
+84
-29
expansions/script/c37900002.lua
expansions/script/c37900002.lua
+102
-32
expansions/script/c37900003.lua
expansions/script/c37900003.lua
+56
-27
expansions/script/c37900004.lua
expansions/script/c37900004.lua
+60
-37
expansions/script/c37900006.lua
expansions/script/c37900006.lua
+43
-23
expansions/script/c37900007.lua
expansions/script/c37900007.lua
+91
-89
expansions/script/c37900008.lua
expansions/script/c37900008.lua
+81
-76
expansions/script/c37900011.lua
expansions/script/c37900011.lua
+32
-45
expansions/script/c37900012.lua
expansions/script/c37900012.lua
+73
-33
expansions/script/c37900013.lua
expansions/script/c37900013.lua
+83
-48
expansions/script/c37900014.lua
expansions/script/c37900014.lua
+44
-36
expansions/script/c37900015.lua
expansions/script/c37900015.lua
+82
-58
expansions/script/c37900016.lua
expansions/script/c37900016.lua
+55
-26
expansions/script/c37900017.lua
expansions/script/c37900017.lua
+76
-40
expansions/script/c37900029.lua
expansions/script/c37900029.lua
+177
-70
expansions/script/c37900030.lua
expansions/script/c37900030.lua
+69
-52
No files found.
expansions/222DIY.cdb
View file @
328435de
No preview for this file type
expansions/script/c37900001.lua
View file @
328435de
--神社
if
not
pcall
(
function
()
dofile
(
"expansions/script/c37900000.lua"
)
end
)
then
dofile
(
"script/c37900000.lua"
)
end
local
m
,
cm
=
rscf
.
DefineCard
(
37900001
)
function
cm
.
initial_effect
(
c
)
local
e1
=
rsef
.
A
(
c
)
local
e2
=
rsef
.
FC
(
c
,
EVENT_TO_GRAVE
,
nil
,
nil
,
nil
,
LOCATION_SZONE
,
nil
,
cm
.
ctop
)
local
e3
=
rsef
.
FV_Card
(
c
,
"atk+"
,
cm
.
atkval
,
aux
.
TRUE
,{
LOCATION_MZONE
,
LOCATION_MZONE
},
nil
,
LOCATION_SZONE
)
local
e4
=
rsef
.
FV_Card
(
c
,
"def+"
,
cm
.
atkval2
,
aux
.
TRUE
,{
LOCATION_MZONE
,
LOCATION_MZONE
},
nil
,
LOCATION_SZONE
)
local
e5
=
rsef
.
STO
(
c
,
EVENT_LEAVE_FIELD
,
"th"
,
nil
,
"se,th"
,
"de"
,
nil
,
nil
,
rsop
.
target
(
cm
.
thfilter
,
"th"
,
LOCATION_DECK
),
cm
.
thop
)
end
function
cm
.
ctop
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
e
:
GetHandler
():
AddCounter
(
0x1389
,
#
eg
)
end
function
cm
.
atkval
(
e
,
c
)
return
-
100
*
e
:
GetHandler
():
GetCounter
(
0x1389
)
end
function
cm
.
atkval2
(
e
,
c
)
return
100
*
e
:
GetHandler
():
GetCounter
(
0x1389
)
end
function
cm
.
thfilter
(
c
)
return
c
:
IsSetCard
(
0x389
)
and
c
:
IsAbleToHand
()
end
function
cm
.
thop
(
e
,
tp
)
local
ct
,
og
,
tc
=
rsop
.
SelectToHand
(
tp
,
cm
.
thfilter
,
tp
,
LOCATION_DECK
,
0
,
1
,
1
,
nil
,{})
if
not
tc
or
not
tc
:
IsLocation
(
LOCATION_HAND
)
then
return
end
local
e1
=
rsef
.
FV_Player
({
e
:
GetHandler
(),
tp
},
"act~"
,
cm
.
val
(
tc
),
nil
,{
1
,
0
},
nil
,
nil
,
nil
,
rsrst
.
ep
)
end
function
cm
.
val
(
tc
)
return
function
(
e
,
re
)
return
re
:
GetHandler
():
IsCode
(
tc
:
GetCode
())
function
c37900001
.
initial_effect
(
c
)
local
e0
=
Effect
.
CreateEffect
(
c
)
e0
:
SetType
(
EFFECT_TYPE_ACTIVATE
)
e0
:
SetCode
(
EVENT_FREE_CHAIN
)
c
:
RegisterEffect
(
e0
)
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetType
(
EFFECT_TYPE_CONTINUOUS
+
EFFECT_TYPE_FIELD
)
e1
:
SetCode
(
EVENT_TO_GRAVE
)
e1
:
SetRange
(
LOCATION_SZONE
)
e1
:
SetOperation
(
c37900001
.
op
)
c
:
RegisterEffect
(
e1
)
local
e2
=
Effect
.
CreateEffect
(
c
)
e2
:
SetType
(
EFFECT_TYPE_FIELD
)
e2
:
SetRange
(
LOCATION_SZONE
)
e2
:
SetTargetRange
(
LOCATION_MZONE
,
LOCATION_MZONE
)
e2
:
SetCode
(
EFFECT_UPDATE_DEFENSE
)
e2
:
SetTarget
(
aux
.
TargetBoolFunction
(
aux
.
TRUE
))
e2
:
SetValue
(
c37900001
.
val1
)
c
:
RegisterEffect
(
e2
)
local
e3
=
Effect
.
CreateEffect
(
c
)
e3
:
SetType
(
EFFECT_TYPE_FIELD
)
e3
:
SetRange
(
LOCATION_SZONE
)
e3
:
SetTargetRange
(
LOCATION_MZONE
,
LOCATION_MZONE
)
e3
:
SetCode
(
EFFECT_UPDATE_ATTACK
)
e3
:
SetTarget
(
aux
.
TargetBoolFunction
(
aux
.
TRUE
))
e3
:
SetValue
(
c37900001
.
val2
)
c
:
RegisterEffect
(
e3
)
local
e4
=
Effect
.
CreateEffect
(
c
)
e4
:
SetCategory
(
CATEGORY_SEARCH
+
CATEGORY_TOHAND
)
e4
:
SetType
(
EFFECT_TYPE_SINGLE
+
EFFECT_TYPE_TRIGGER_O
)
e4
:
SetProperty
(
EFFECT_FLAG_DELAY
+
EFFECT_FLAG_DAMAGE_STEP
+
EFFECT_FLAG_DAMAGE_CAL
)
e4
:
SetCode
(
EVENT_LEAVE_FIELD
)
e4
:
SetCondition
(
c37900001
.
con4
)
e4
:
SetTarget
(
c37900001
.
tg4
)
e4
:
SetOperation
(
c37900001
.
op4
)
c
:
RegisterEffect
(
e4
)
end
function
c37900001
.
op
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
c
=
e
:
GetHandler
()
local
g
=
eg
:
Filter
(
Card
.
IsLocation
,
nil
,
LOCATION_GRAVE
)
if
g
:
GetCount
()
>
0
then
c
:
AddCounter
(
0x1389
,
g
:
GetCount
())
end
end
function
c37900001
.
val1
(
e
)
local
c
=
e
:
GetHandler
()
return
c
:
GetCounter
(
0x1389
)
*
100
end
function
c37900001
.
val2
(
e
)
local
c
=
e
:
GetHandler
()
return
-
c
:
GetCounter
(
0x1389
)
*
100
end
function
c37900001
.
con4
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
c
=
e
:
GetHandler
()
return
c
:
IsPreviousLocation
(
LOCATION_ONFIELD
)
end
function
c37900001
.
q
(
c
)
return
c
:
IsAbleToHand
()
and
c
:
IsSetCard
(
0x389
)
end
function
c37900001
.
tg4
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
Duel
.
IsExistingMatchingCard
(
c37900001
.
q
,
tp
,
LOCATION_DECK
,
0
,
1
,
nil
)
end
Duel
.
SetOperationInfo
(
0
,
CATEGORY_TOHAND
,
nil
,
1
,
tp
,
LOCATION_DECK
)
end
function
c37900001
.
op4
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
c
=
e
:
GetHandler
()
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_ATOHAND
)
local
g
=
Duel
.
SelectMatchingCard
(
tp
,
c37900001
.
q
,
tp
,
LOCATION_DECK
,
0
,
1
,
1
,
nil
)
if
g
:
GetCount
()
>
0
then
local
tc
=
g
:
GetFirst
()
if
Duel
.
SendtoHand
(
tc
,
nil
,
REASON_EFFECT
)
>
0
and
tc
:
IsLocation
(
LOCATION_HAND
)
then
Duel
.
ConfirmCards
(
1
-
tp
,
tc
)
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetType
(
EFFECT_TYPE_FIELD
)
e1
:
SetProperty
(
EFFECT_FLAG_PLAYER_TARGET
)
e1
:
SetCode
(
EFFECT_CANNOT_ACTIVATE
)
e1
:
SetTargetRange
(
1
,
0
)
e1
:
SetValue
(
c37900001
.
aclimit
)
e1
:
SetLabel
(
tc
:
GetCode
())
e1
:
SetReset
(
RESET_PHASE
+
PHASE_END
)
Duel
.
RegisterEffect
(
e1
,
tp
)
end
end
end
function
c37900001
.
aclimit
(
e
,
re
,
tp
)
return
re
:
GetHandler
():
IsCode
(
e
:
GetLabel
())
end
\ No newline at end of file
expansions/script/c37900002.lua
View file @
328435de
--神隐之地
if
not
pcall
(
function
()
dofile
(
"expansions/script/c37900000.lua"
)
end
)
then
dofile
(
"script/c37900000.lua"
)
end
local
m
,
cm
=
rscf
.
DefineCard
(
37900002
,
"ShenYing"
)
function
cm
.
initial_effect
(
c
)
local
e1
=
rsef
.
A
(
c
)
local
e2
=
rsef
.
QO
(
c
,
nil
,
"td"
,
1
,
"td,ct"
,
"tg"
,
LOCATION_FZONE
,
nil
,
nil
,
rstg
.
target
(
cm
.
tdfilter
,
"td"
,
rsloc
.
gr
),
cm
.
tdop
)
local
e3
=
rsef
.
QO
(
c
,
nil
,
"th"
,
1
,
"th,ct"
,
"tg"
,
LOCATION_FZONE
,
nil
,
rscost
.
rmct
(
0x1389
,
2
),
rstg
.
target
(
cm
.
thfilter
,
"th"
,
rsloc
.
gr
),
cm
.
thop
)
local
e4
=
rsef
.
FV_Card
(
c
,
"indct"
,
cm
.
indval
,
cm
.
indtg
,{
LOCATION_SZONE
,
0
},
nil
,
LOCATION_FZONE
)
local
e5
=
rsef
.
FV_Card
(
c
,
"indb"
,
1
,
cm
.
indtg2
,{
LOCATION_MZONE
,
LOCATION_MZONE
},
nil
,
LOCATION_FZONE
)
local
e6
=
rsef
.
FV_Card
(
c
,
"inde"
,
1
,
cm
.
indtg3
,{
LOCATION_MZONE
,
LOCATION_MZONE
},
nil
,
LOCATION_FZONE
)
end
function
cm
.
tdfilter
(
c
)
return
c
:
IsSetCard
(
0x389
)
and
c
:
RemovePosCheck
()
and
c
:
IsAbleToDeck
()
end
function
cm
.
tdop
(
e
,
tp
)
local
tc
=
rscf
.
GetTargetCard
()
if
tc
and
Duel
.
SendtoDeck
(
tc
,
nil
,
2
,
REASON_EFFECT
)
>
0
and
tc
:
IsLocation
(
rsloc
.
de
)
then
e
:
GetHandler
():
AddCounter
(
0x1389
,
1
)
end
function
c37900002
.
initial_effect
(
c
)
local
e0
=
Effect
.
CreateEffect
(
c
)
e0
:
SetType
(
EFFECT_TYPE_ACTIVATE
)
e0
:
SetCode
(
EVENT_FREE_CHAIN
)
c
:
RegisterEffect
(
e0
)
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetType
(
EFFECT_TYPE_QUICK_O
)
e1
:
SetCode
(
EVENT_FREE_CHAIN
)
e1
:
SetCategory
(
CATEGORY_GRAVE_ACTION
+
CATEGORY_COUNTER
)
e1
:
SetRange
(
LOCATION_FZONE
)
e1
:
SetProperty
(
EFFECT_FLAG_CARD_TARGET
)
e1
:
SetCountLimit
(
1
)
e1
:
SetHintTiming
(
0
,
TIMING_END_PHASE
+
TIMING_MAIN_END
+
TIMINGS_CHECK_MONSTER
+
TIMING_SSET
)
e1
:
SetTarget
(
c37900002
.
tg
)
e1
:
SetOperation
(
c37900002
.
op
)
c
:
RegisterEffect
(
e1
)
local
e2
=
Effect
.
CreateEffect
(
c
)
e2
:
SetType
(
EFFECT_TYPE_FIELD
)
e2
:
SetCode
(
EFFECT_INDESTRUCTABLE_COUNT
)
e2
:
SetRange
(
LOCATION_FZONE
)
e2
:
SetTargetRange
(
LOCATION_ONFIELD
,
0
)
e2
:
SetTarget
(
c37900002
.
tg2
)
e2
:
SetValue
(
c37900002
.
indct
)
c
:
RegisterEffect
(
e2
)
local
e3
=
Effect
.
CreateEffect
(
c
)
e3
:
SetType
(
EFFECT_TYPE_FIELD
)
e3
:
SetCode
(
EFFECT_INDESTRUCTABLE_BATTLE
)
e3
:
SetRange
(
LOCATION_FZONE
)
e3
:
SetTargetRange
(
LOCATION_MZONE
,
LOCATION_MZONE
)
e3
:
SetTarget
(
c37900002
.
tg3
)
e3
:
SetValue
(
1
)
c
:
RegisterEffect
(
e3
)
local
e4
=
Effect
.
CreateEffect
(
c
)
e4
:
SetType
(
EFFECT_TYPE_FIELD
)
e4
:
SetCode
(
EFFECT_INDESTRUCTABLE_EFFECT
)
e4
:
SetRange
(
LOCATION_FZONE
)
e4
:
SetTargetRange
(
LOCATION_MZONE
,
LOCATION_MZONE
)
e4
:
SetTarget
(
c37900002
.
tg4
)
e4
:
SetValue
(
1
)
c
:
RegisterEffect
(
e4
)
end
function
c37900002
.
q
(
c
)
return
c
:
IsAbleToDeck
()
and
c
:
IsSetCard
(
0x389
)
end
function
c
m
.
thfilter
(
c
)
return
c
:
Is
SetCard
(
0x389
)
and
c
:
RemovePosCheck
()
and
c
:
IsAbleToHand
(
)
function
c
37900002
.
w
(
c
,
s
c
)
return
c
:
Is
AbleToHand
()
and
c
:
IsSetCard
(
0x389
)
end
function
cm
.
thop
(
e
,
tp
)
local
tc
=
rscf
.
GetTargetCard
()
if
tc
and
Duel
.
SendtoHand
(
tc
,
nil
,
REASON_EFFECT
)
>
0
and
tc
:
IsLocation
(
LOCATION_HAND
)
then
e
:
GetHandler
():
AddCounter
(
0x1389
,
1
)
function
c37900002
.
tg
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
local
c
=
e
:
GetHandler
()
if
chkc
then
return
chkc
:
IsLocation
(
LOCATION_GRAVE
+
LOCATION_REMOVED
)
and
chkc
:
IsControler
(
tp
)
and
(
c37900002
.
q
(
chkc
)
or
c37900002
.
w
(
chkc
))
end
if
chk
==
0
then
return
Duel
.
IsExistingTarget
(
c37900002
.
q
,
tp
,
LOCATION_GRAVE
+
LOCATION_REMOVED
,
0
,
1
,
nil
)
or
(
Duel
.
IsExistingTarget
(
c37900002
.
w
,
tp
,
LOCATION_GRAVE
+
LOCATION_REMOVED
,
0
,
1
,
nil
)
and
c
:
GetCounter
(
0x1389
)
>=
2
)
end
if
Duel
.
IsExistingTarget
(
c37900002
.
q
,
tp
,
LOCATION_GRAVE
+
LOCATION_REMOVED
,
0
,
1
,
nil
)
and
not
(
Duel
.
IsExistingTarget
(
c37900002
.
w
,
tp
,
LOCATION_GRAVE
+
LOCATION_REMOVED
,
0
,
1
,
nil
)
and
c
:
GetCounter
(
0x1389
)
>=
2
)
then
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_TODECK
)
local
g
=
Duel
.
SelectTarget
(
tp
,
c37900002
.
q
,
tp
,
LOCATION_GRAVE
+
LOCATION_REMOVED
,
0
,
1
,
1
,
nil
)
e
:
SetCategory
(
CATEGORY_TODECK
)
e
:
SetLabel
(
0
)
Duel
.
SetOperationInfo
(
0
,
CATEGORY_TODECK
,
g
,
1
,
tp
,
LOCATION_GRAVE
+
LOCATION_REMOVED
)
end
if
not
Duel
.
IsExistingTarget
(
c37900002
.
q
,
tp
,
LOCATION_GRAVE
+
LOCATION_REMOVED
,
0
,
1
,
nil
)
and
Duel
.
IsExistingTarget
(
c37900002
.
w
,
tp
,
LOCATION_GRAVE
+
LOCATION_REMOVED
,
0
,
1
,
nil
)
and
c
:
GetCounter
(
0x1389
)
>=
2
then
c
:
RemoveCounter
(
tp
,
0x1389
,
2
,
REASON_COST
)
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_ATOHAND
)
local
g
=
Duel
.
SelectTarget
(
tp
,
c37900002
.
w
,
tp
,
LOCATION_GRAVE
+
LOCATION_REMOVED
,
0
,
1
,
1
,
nil
)
e
:
SetCategory
(
CATEGORY_TOHAND
)
e
:
SetLabel
(
1
)
Duel
.
SetOperationInfo
(
0
,
CATEGORY_TOHAND
,
g
,
1
,
tp
,
LOCATION_GRAVE
+
LOCATION_REMOVED
)
end
if
(
c
:
GetCounter
(
0x1389
)
>=
2
and
Duel
.
IsExistingTarget
(
c37900002
.
w
,
tp
,
LOCATION_GRAVE
+
LOCATION_REMOVED
,
0
,
1
,
nil
))
and
Duel
.
IsExistingTarget
(
c37900002
.
q
,
tp
,
LOCATION_GRAVE
+
LOCATION_REMOVED
,
0
,
1
,
nil
)
then
if
Duel
.
SelectYesNo
(
tp
,
aux
.
Stringid
(
37900002
,
0
))
then
c
:
RemoveCounter
(
tp
,
0x1389
,
2
,
REASON_COST
)
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_ATOHAND
)
local
g
=
Duel
.
SelectTarget
(
tp
,
c37900002
.
w
,
tp
,
LOCATION_GRAVE
+
LOCATION_REMOVED
,
0
,
1
,
1
,
nil
)
e
:
SetCategory
(
CATEGORY_TOHAND
)
e
:
SetLabel
(
1
)
Duel
.
SetOperationInfo
(
0
,
CATEGORY_TOHAND
,
g
,
1
,
tp
,
LOCATION_GRAVE
+
LOCATION_REMOVED
)
else
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_TODECK
)
local
g
=
Duel
.
SelectTarget
(
tp
,
c37900002
.
q
,
tp
,
LOCATION_GRAVE
+
LOCATION_REMOVED
,
0
,
1
,
1
,
nil
)
e
:
SetCategory
(
CATEGORY_TODECK
)
e
:
SetLabel
(
0
)
Duel
.
SetOperationInfo
(
0
,
CATEGORY_TODECK
,
g
,
1
,
tp
,
LOCATION_GRAVE
+
LOCATION_REMOVED
)
end
end
end
function
cm
.
indtg
(
e
,
c
)
return
c
:
IsType
(
TYPE_SPELL
)
and
c
:
IsSetCard
(
0x389
)
function
c37900002
.
op
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
c
=
e
:
GetHandler
()
local
tc
=
Duel
.
GetFirstTarget
()
if
tc
:
IsRelateToEffect
(
e
)
then
if
e
:
GetLabel
()
==
0
then
if
Duel
.
SendtoDeck
(
tc
,
nil
,
2
,
REASON_EFFECT
)
>
0
then
c
:
AddCounter
(
0x1389
,
1
)
end
else
if
Duel
.
SendtoHand
(
tc
,
tp
,
REASON_EFFECT
)
>
0
then
c
:
AddCounter
(
0x1389
,
1
)
end
end
end
end
function
c
m
.
indval
(
e
,
re
,
r
,
rp
)
if
r
&
REASON_EFFECT
~=
0
then
function
c
37900002
.
indct
(
e
,
re
,
r
,
rp
)
if
bit
.
band
(
r
,
REASON_EFFECT
)
~=
0
then
return
1
else
return
0
end
end
function
c
m
.
ind
tg2
(
e
,
c
)
return
c
:
GetAttack
()
<
c
:
GetBaseAttack
(
)
function
c
37900002
.
tg2
(
e
,
c
)
return
c
:
IsType
(
TYPE_SPELL
)
and
c
:
IsFaceup
()
and
c
:
IsSetCard
(
0x389
)
end
function
c
m
.
ind
tg3
(
e
,
c
)
return
c
:
Get
Defense
()
>
c
:
GetBaseDefense
()
function
c
37900002
.
tg3
(
e
,
c
)
return
c
:
Get
Attack
()
<
c
:
GetBaseAttack
()
end
function
c37900002
.
tg4
(
e
,
c
)
return
c
:
GetDefense
()
>
c
:
GetBaseDefense
()
end
\ No newline at end of file
expansions/script/c37900003.lua
View file @
328435de
--神隐的奇迹
if
not
pcall
(
function
()
dofile
(
"expansions/script/c37900000.lua"
)
end
)
then
dofile
(
"script/c37900000.lua"
)
end
local
m
,
cm
=
rscf
.
DefineCard
(
37900003
,
"ShenYing"
)
function
cm
.
initial_effect
(
c
)
local
e1
=
rsef
.
A
(
c
,
nil
,
nil
,
nil
,
nil
,
"dis~,dise~,neg~"
,
cm
.
con
,
nil
,
nil
,
cm
.
act
)
function
c37900003
.
initial_effect
(
c
)
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetType
(
EFFECT_TYPE_ACTIVATE
)
e1
:
SetCode
(
EVENT_FREE_CHAIN
)
e1
:
SetProperty
(
EFFECT_FLAG_CANNOT_DISABLE
+
EFFECT_FLAG_CANNOT_INACTIVATE
+
EFFECT_FLAG_CANNOT_NEGATE
)
e1
:
SetHintTiming
(
0
,
TIMING_END_PHASE
+
TIMING_MAIN_END
+
TIMINGS_CHECK_MONSTER
+
TIMING_SSET
)
e1
:
SetCondition
(
c37900003
.
con
)
e1
:
SetTarget
(
c37900003
.
tg
)
e1
:
SetOperation
(
c37900003
.
op
)
c
:
RegisterEffect
(
e1
)
end
function
c
m
.
con
(
e
,
t
p
)
return
Duel
.
GetLP
(
tp
)
<=
1000
function
c
37900003
.
con
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
r
p
)
return
Duel
.
GetLP
(
tp
)
<=
1000
end
function
cm
.
act
(
e
,
tp
)
local
c
=
e
:
GetHandler
()
if
Duel
.
GetLP
(
tp
)
>
1000
then
return
end
local
e1
=
rsef
.
FC
({
c
,
tp
},
EVENT_SUMMON_SUCCESS
,
nil
,
nil
,
nil
,
nil
,
cm
.
reccon
,
cm
.
recop
)
local
e2
=
rsef
.
FC
({
c
,
tp
},
EVENT_SPSUMMON_SUCCESS
,
nil
,
nil
,
nil
,
nil
,
cm
.
reccon
,
cm
.
recop
)
local
e3
=
rsef
.
FV_Card
({
c
,
tp
},
"atkpd"
,
1
,
aux
.
TargetBoolFunction
(
Card
.
IsSetCard
,
0x389
),{
LOCATION_MZONE
,
LOCATION_MZONE
})
function
c37900003
.
tg
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
true
end
end
function
cm
.
cfilter
(
c
,
tp
)
return
c
:
IsFaceup
()
and
c
:
IsSetCard
(
0x389
)
and
c
:
IsAttackAbove
(
1
)
function
c37900003
.
op
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
c
=
e
:
GetHandler
()
if
Duel
.
GetLP
(
tp
)
<=
1000
then
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetType
(
EFFECT_TYPE_SINGLE
)
e1
:
SetCode
(
EFFECT_DEFENSE_ATTACK
)
e1
:
SetValue
(
1
)
c
:
RegisterEffect
(
e1
)
local
e2
=
Effect
.
CreateEffect
(
c
)
e2
:
SetType
(
EFFECT_TYPE_FIELD
+
EFFECT_TYPE_GRANT
)
e2
:
SetRange
(
LOCATION_FZONE
)
e2
:
SetTargetRange
(
LOCATION_MZONE
,
0
)
e2
:
SetTarget
(
c37900003
.
mattg
)
e2
:
SetLabelObject
(
e1
)
Duel
.
RegisterEffect
(
e2
,
tp
)
local
e3
=
Effect
.
CreateEffect
(
c
)
e3
:
SetType
(
EFFECT_TYPE_FIELD
+
EFFECT_TYPE_CONTINUOUS
)
e3
:
SetCode
(
EVENT_SUMMON_SUCCESS
)
e3
:
SetOperation
(
c37900003
.
reop
)
Duel
.
RegisterEffect
(
e3
,
tp
)
local
e4
=
e3
:
Clone
()
e4
:
SetCode
(
EVENT_SPSUMMON_SUCCESS
)
Duel
.
RegisterEffect
(
e4
,
tp
)
end
end
function
c37900003
.
mattg
(
e
,
c
)
return
c
:
IsFaceup
()
and
c
:
IsSetCard
(
0x389
)
end
function
c
m
.
reccon
(
e
,
tp
,
eg
)
return
eg
:
IsExists
(
cm
.
cfilter
,
1
,
nil
,
tp
)
function
c
37900003
.
q
(
c
)
return
c
:
IsSetCard
(
0x389
)
and
not
c
:
IsAttack
(
0
)
end
function
cm
.
recop
(
e
,
tp
,
eg
)
local
rg
=
eg
:
Filter
(
cm
.
cfilter
,
nil
,
tp
)
if
#
rg
<=
0
then
return
end
rshint
.
Card
(
m
)
if
#
rg
>
1
then
rshint
.
Select
(
tp
,
HINTMSG_FACEUP
)
rg
=
rg
:
Select
(
tp
,
1
,
1
,
nil
)
function
c37900003
.
reop
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
g
=
eg
:
Filter
(
c37900003
.
q
,
nil
)
if
g
:
GetCount
()
>
0
then
local
tc
=
g
:
GetFirst
()
while
tc
do
local
atk
=
tc
:
GetAttack
()
Duel
.
Recover
(
tp
,
atk
,
REASON_EFFECT
)
local
e1
=
Effect
.
CreateEffect
(
e
:
GetHandler
())
e1
:
SetType
(
EFFECT_TYPE_SINGLE
)
e1
:
SetCode
(
EFFECT_SET_ATTACK_FINAL
)
e1
:
SetValue
(
0
)
e1
:
SetReset
(
RESET_EVENT
+
RESETS_STANDARD
)
tc
:
RegisterEffect
(
e1
)
end
Duel
.
HintSelection
(
rg
)
local
rc
=
rg
:
GetFirst
()
if
Duel
.
Recover
(
tp
,
rc
:
GetAttack
(),
REASON_EFFECT
)
>
0
then
local
e1
=
rscf
.
QuickBuff
({
e
:
GetHandler
(),
rc
},
"fatk"
,
0
)
end
end
\ No newline at end of file
expansions/script/c37900004.lua
View file @
328435de
--现世的神隐事件
if
not
pcall
(
function
()
dofile
(
"expansions/script/c37900000.lua"
)
end
)
then
dofile
(
"script/c37900000.lua"
)
end
local
m
,
cm
=
rscf
.
DefineCard
(
37900004
,
"ShenYing"
)
function
cm
.
initial_effect
(
c
)
local
e1
=
rsef
.
A
(
c
,
nil
,
nil
,{
1
,
m
},
"sp,se,th"
,
nil
,
nil
,
nil
,
rsop
.
target
({
cm
.
spfilter
,
"sp"
,
LOCATION_HAND
},{
aux
.
TRUE
,
"dum"
,
LOCATION_DECK
,
0
,
5
}),
cm
.
act
)
local
e2
=
rsef
.
FTO
(
c
,
EVENT_PHASE
+
PHASE_END
,
"set"
,{
1
,
m
},
"set"
,
nil
,
LOCATION_GRAVE
,
nil
,
aux
.
bfgcost
,
rsop
.
target
(
cm
.
setfilter
,
"set"
,
LOCATION_DECK
),
cm
.
setop
)
function
c37900004
.
initial_effect
(
c
)
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetType
(
EFFECT_TYPE_ACTIVATE
)
e1
:
SetCode
(
EVENT_FREE_CHAIN
)
e1
:
SetCategory
(
CATEGORY_SPECIAL_SUMMON
+
CATEGORY_SEARCH
+
CATEGORY_TOHAND
)
e1
:
SetCountLimit
(
1
,
37900004
)
e1
:
SetTarget
(
c37900004
.
tg
)
e1
:
SetOperation
(
c37900004
.
op
)
c
:
RegisterEffect
(
e1
)
local
e2
=
Effect
.
CreateEffect
(
c
)
e2
:
SetType
(
EFFECT_TYPE_FIELD
+
EFFECT_TYPE_TRIGGER_O
)
e2
:
SetCode
(
EVENT_PHASE
+
PHASE_END
)
e2
:
SetCategory
(
CATEGORY_SPECIAL_SUMMON
+
CATEGORY_SEARCH
+
CATEGORY_TOHAND
)
e2
:
SetRange
(
LOCATION_GRAVE
)
e2
:
SetCountLimit
(
1
,
37900004
)
e2
:
SetCost
(
aux
.
bfgcost
)
e2
:
SetTarget
(
c37900004
.
tg2
)
e2
:
SetOperation
(
c37900004
.
op2
)
c
:
RegisterEffect
(
e2
)
end
function
c
m
.
spfilter
(
c
,
e
,
tp
)
return
c
:
Is
SetCard
(
0x389
)
and
rscf
.
spfilter2
()(
c
,
e
,
tp
)
function
c
37900004
.
q
(
c
,
e
,
tp
)
return
c
:
Is
CanBeSpecialSummoned
(
e
,
0
,
tp
,
false
,
false
)
and
Duel
.
GetLocationCount
(
tp
,
LOCATION_MZONE
)
>
0
and
c
:
IsSetCard
(
0x389
)
end
function
cm
.
thfilter
(
c
)
function
c37900004
.
tg
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
local
g
=
Duel
.
GetDecktopGroup
(
tp
,
5
)
if
chk
==
0
then
return
Duel
.
IsExistingMatchingCard
(
c37900004
.
q
,
tp
,
LOCATION_HAND
,
0
,
1
,
nil
,
e
,
tp
)
and
g
:
GetCount
()
==
5
end
Duel
.
SetOperationInfo
(
0
,
CATEGORY_SPECIAL_SUMMON
,
nil
,
1
,
tp
,
LOCATION_HAND
)
end
function
c37900004
.
thfilter
(
c
)
return
c
:
IsSetCard
(
0x389
)
and
c
:
IsAbleToHand
()
and
c
:
IsType
(
TYPE_MONSTER
)
end
function
c
m
.
act
(
e
,
t
p
)
local
e1
=
rsef
.
FV_Player
({
e
:
GetHandler
(),
tp
},
"sp~"
,
nil
,
cm
.
sptg
,{
1
,
0
},
nil
,
nil
,
nil
,
rsrst
.
ep
)
if
rsop
.
SelectSpecialSummon
(
tp
,
cm
.
spfilter
,
tp
,
LOCATION_HAND
,
0
,
1
,
1
,
nil
,{},
e
,
tp
)
<=
0
then
return
end
if
Duel
.
GetFieldGroupCount
(
tp
,
LOCATION_DECK
,
0
)
<=
4
then
return
end
Duel
.
ConfirmDecktop
(
tp
,
5
)
local
g
=
Duel
.
GetDecktopGroup
(
tp
,
5
)
local
ct
=#
g
if
ct
>
0
and
g
:
FilterCount
(
cm
.
thfilter
,
nil
)
>
0
and
rshint
.
SelectYesNo
(
tp
,
"th"
)
then
Duel
.
DisableShuffleCheck
(
)
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_ATOHAND
)
local
sg
=
g
:
FilterSelect
(
tp
,
cm
.
thfilter
,
1
,
1
,
nil
)
Duel
.
SendtoHand
(
sg
,
nil
,
REASON_EFFECT
)
Duel
.
ConfirmCards
(
1
-
tp
,
sg
)
Duel
.
ShuffleHand
(
tp
)
ct
=#
g
-#
sg
end
if
ct
>
0
then
Duel
.
SortDecktop
(
tp
,
tp
,
ct
)
for
i
=
1
,
ct
do
local
mg
=
Duel
.
GetDecktopGroup
(
tp
,
1
)
Duel
.
MoveSequence
(
mg
:
GetFirst
(),
1
)
end
end
function
c
37900004
.
op
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
r
p
)
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_SPSUMMON
)
local
g
=
Duel
.
SelectMatchingCard
(
tp
,
c37900004
.
q
,
tp
,
LOCATION_HAND
,
0
,
1
,
1
,
nil
,
e
,
tp
)
if
g
:
GetCount
()
>
0
and
Duel
.
SpecialSummon
(
g
,
0
,
tp
,
tp
,
false
,
false
,
POS_FACEUP
)
>
0
then
local
g
=
Duel
.
GetDecktopGroup
(
tp
,
2
)
if
g
:
GetCount
()
==
5
then
Duel
.
ConfirmDecktop
(
tp
,
5
)
if
g
:
IsExists
(
c37900004
.
thfilter
,
1
,
nil
)
and
Duel
.
SelectYesNo
(
tp
,
aux
.
Stringid
(
37900004
,
0
)
)
then
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_ATOHAND
)
local
sg
=
g
:
FilterSelect
(
tp
,
c37900004
.
thfilter
,
1
,
1
,
nil
)
if
Duel
.
SendtoHand
(
sg
,
nil
,
REASON_EFFECT
)
then
Duel
.
ConfirmCards
(
1
-
tp
,
sg
)
Duel
.
ShuffleHand
(
tp
)
g
:
Sub
(
sg
)
end
end
Duel
.
SortDecktop
(
tp
,
tp
,
#
g
-
1
)
for
i
=
1
,
#
g
-
1
do
local
dg
=
Duel
.
GetDecktopGroup
(
tp
,
1
)
Duel
.
MoveSequence
(
dg
:
GetFirst
(),
SEQ_DECKBOTTOM
)
end
end
end
end
function
c
m
.
sptg
(
e
,
c
)
return
not
c
:
IsSetCard
(
0x389
)
function
c
37900004
.
setfilter
(
c
,
tp
)
return
c
:
IsType
(
TYPE_SPELL
+
TYPE_TRAP
)
and
c
:
IsSSetable
()
and
Duel
.
GetLocationCount
(
tp
,
LOCATION_SZONE
)
>
0
and
not
c
:
IsCode
(
37900004
)
and
c
:
IsSetCard
(
0x389
)
end
function
c
m
.
setfilter
(
c
,
e
,
tp
)
return
not
c
:
IsCode
(
m
)
and
c
:
IsSetCard
(
0x389
)
and
c
:
IsType
(
TYPE_SPELL
+
TYPE_TRAP
)
and
c
:
IsSSetable
()
function
c
37900004
.
tg2
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
Duel
.
IsExistingMatchingCard
(
c37900004
.
setfilter
,
tp
,
LOCATION_DECK
,
0
,
1
,
nil
,
tp
)
end
end
function
cm
.
setop
(
e
,
tp
)
rsop
.
SelectSSet
(
tp
,
cm
.
setfilter
,
tp
,
LOCATION_DECK
,
0
,
1
,
1
,
nil
,{})
function
c37900004
.
op2
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_SET
)
local
g
=
Duel
.
SelectMatchingCard
(
tp
,
c37900004
.
setfilter
,
tp
,
LOCATION_DECK
,
0
,
1
,
1
,
nil
,
tp
)
if
g
:
GetCount
()
>
0
then
Duel
.
SSet
(
tp
,
g
)
end
end
\ No newline at end of file
expansions/script/c37900006.lua
View file @
328435de
--神隐事件·符卡重构
if
not
pcall
(
function
()
dofile
(
"expansions/script/c37900000.lua"
)
end
)
then
dofile
(
"script/c37900000.lua"
)
end
local
m
,
cm
=
rscf
.
DefineCard
(
37900006
)
function
cm
.
initial_effect
(
c
)
local
e2
=
rsef
.
I
(
c
,
"td"
,{
1
,
m
},
"td,dr"
,
nil
,
LOCATION_GRAVE
,
nil
,
nil
,
rsop
.
target
(
Card
.
IsAbleToDeck
,
"td"
),
cm
.
tdop
)
--Activate
function
c37900006
.
initial_effect
(
c
)
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetCategory
(
CATEGORY_DRAW
)
e1
:
SetType
(
EFFECT_TYPE_ACTIVATE
)
e1
:
SetProperty
(
EFFECT_FLAG_PLAYER_TARGET
)
e1
:
SetCode
(
EVENT_FREE_CHAIN
)
e1
:
SetCountLimit
(
1
,
m
)
e1
:
SetCost
(
c
m
.
cost
)
e1
:
SetTarget
(
c
m
.
target
)
e1
:
SetOperation
(
c
m
.
activate
)
e1
:
SetCountLimit
(
1
,
37900006
)
e1
:
SetCost
(
c
37900006
.
cost
)
e1
:
SetTarget
(
c
37900006
.
target
)
e1
:
SetOperation
(
c
37900006
.
activate
)
c
:
RegisterEffect
(
e1
)
local
e2
=
Effect
.
CreateEffect
(
c
)
e2
:
SetCategory
(
CATEGORY_TODECK
+
CATEGORY_DRAW
+
CATEGORY_GRAVE_ACTION
)
e2
:
SetType
(
EFFECT_TYPE_IGNITION
)
e2
:
SetCode
(
EVENT_FREE_CHAIN
)
e2
:
SetRange
(
LOCATION_GRAVE
)
e2
:
SetCountLimit
(
1
,
37900006
)
e2
:
SetTarget
(
c37900006
.
tg2
)
e2
:
SetOperation
(
c37900006
.
op2
)
c
:
RegisterEffect
(
e2
)
end
function
cm
.
tdop
(
e
,
tp
)
local
c
=
rscf
.
GetSelf
(
e
)
if
not
c
or
Duel
.
SendtoDeck
(
c
,
nil
,
2
,
REASON_EFFECT
)
<=
0
or
not
Duel
.
IsExistingMatchingCard
(
Card
.
IsAbleToDeck
,
tp
,
LOCATION_HAND
,
0
,
1
,
nil
)
or
not
Duel
.
IsPlayerCanDraw
(
tp
,
1
)
or
not
rshint
.
SelectYesNo
(
tp
,
"td"
)
then
return
end
if
rsop
.
SelectToDeck
(
tp
,
Card
.
IsAbleToDeck
,
tp
,
LOCATION_HAND
,
0
,
1
,
1
,
nil
,{})
>
0
then
rsop
.
ToDeckDraw
(
tp
,
1
)
function
c37900006
.
q
(
c
)
return
c
:
IsDiscardable
()
and
c
:
IsType
(
TYPE_MONSTER
)
and
c
:
IsSetCard
(
0x389
)
end
function
c37900006
.
cost
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
Duel
.
IsExistingMatchingCard
(
c37900006
.
q
,
tp
,
LOCATION_HAND
,
0
,
1
,
e
:
GetHandler
())
end
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_DISCARD
)
local
g
=
Duel
.
SelectMatchingCard
(
tp
,
c37900006
.
q
,
tp
,
LOCATION_HAND
,
0
,
1
,
1
,
e
:
GetHandler
())
if
g
:
GetCount
()
>
0
then
Duel
.
SendtoGrave
(
g
,
REASON_COST
+
REASON_DISCARD
)
end
end
function
cm
.
filter
(
c
)
return
c
:
IsSetCard
(
0x389
)
and
c
:
IsType
(
TYPE_MONSTER
)
and
c
:
IsDiscardable
()
end
function
cm
.
cost
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
Duel
.
IsExistingMatchingCard
(
cm
.
filter
,
tp
,
LOCATION_HAND
,
0
,
1
,
nil
)
end
Duel
.
DiscardHand
(
tp
,
cm
.
filter
,
1
,
1
,
REASON_COST
+
REASON_DISCARD
)
end
function
cm
.
target
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
function
c37900006
.
target
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
Duel
.
IsPlayerCanDraw
(
tp
,
2
)
end
Duel
.
SetTargetPlayer
(
tp
)
Duel
.
SetTargetParam
(
2
)
Duel
.
SetOperationInfo
(
0
,
CATEGORY_DRAW
,
nil
,
0
,
tp
,
2
)
end
function
c
m
.
activate
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
function
c
37900006
.
activate
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
p
,
d
=
Duel
.
GetChainInfo
(
0
,
CHAININFO_TARGET_PLAYER
,
CHAININFO_TARGET_PARAM
)
Duel
.
Draw
(
p
,
d
,
REASON_EFFECT
)
end
function
c37900006
.
tg2
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
local
c
=
e
:
GetHandler
()
if
chk
==
0
then
return
c
:
IsAbleToDeck
()
end
Duel
.
SetOperationInfo
(
0
,
CATEGORY_TODECK
,
c
,
1
,
tp
,
LOCATION_GRAVE
)
end
function
c37900006
.
op2
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
c
=
e
:
GetHandler
()
if
c
:
IsRelateToEffect
(
e
)
then
if
Duel
.
SendtoDeck
(
c
,
nil
,
2
,
REASON_EFFECT
)
>
0
and
Duel
.
IsExistingMatchingCard
(
Card
.
IsAbleToDeck
,
tp
,
LOCATION_HAND
,
0
,
1
,
nil
)
and
Duel
.
IsPlayerCanDraw
(
tp
,
1
)
and
Duel
.
SelectYesNo
(
tp
,
aux
.
Stringid
(
37900006
,
0
))
then
Duel
.
BreakEffect
()
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_TODECK
)
local
g
=
Duel
.
SelectMatchingCard
(
tp
,
Card
.
IsAbleToDeck
,
tp
,
LOCATION_HAND
,
0
,
1
,
1
,
nil
)
if
g
:
GetCount
()
>
0
and
Duel
.
SendtoDeck
(
g
,
nil
,
2
,
REASON_EFFECT
)
>
0
then
Duel
.
Draw
(
tp
,
1
,
REASON_EFFECT
)
end
end
end
end
\ No newline at end of file
expansions/script/c37900007.lua
View file @
328435de
--神隐之乡的日常生活
function
c37900007
.
initial_effect
(
c
)
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetType
(
EFFECT_TYPE_ACTIVATE
)
e1
:
SetDescription
(
aux
.
Stringid
(
37900007
,
0
))
e1
:
SetCategory
(
CATEGORY_TOHAND
+
CATEGORY_SEARCH
)
e1
:
SetType
(
EFFECT_TYPE_IGNITION
)
e1
:
SetCode
(
EVENT_FREE_CHAIN
)
c
:
RegisterEffect
(
e1
)
--e2
e1
:
SetRange
(
LOCATION_SZONE
)
e1
:
SetCountLimit
(
1
,
37900007
)
e1
:
SetTarget
(
c37900007
.
tg
)
e1
:
SetOperation
(
c37900007
.
op
)
c
:
RegisterEffect
(
e1
)
local
e2
=
Effect
.
CreateEffect
(
c
)
e2
:
SetDescription
(
aux
.
Stringid
(
37900007
,
0
))
e2
:
SetCategory
(
CATEGORY_
TOHAND
+
CATEGORY_SEARCH
)
e2
:
SetDescription
(
aux
.
Stringid
(
37900007
,
1
))
e2
:
SetCategory
(
CATEGORY_
SPECIAL_SUMMON
+
CATEGORY_GRAVE_SPSUMMON
)
e2
:
SetType
(
EFFECT_TYPE_IGNITION
)
e2
:
SetCode
(
EVENT_FREE_CHAIN
)
e2
:
SetRange
(
LOCATION_SZONE
)
e2
:
SetCountLimit
(
1
,
37900007
)
e2
:
SetTarget
(
function
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
local
c
=
e
:
GetHandler
()
if
chk
==
0
then
return
Duel
.
GetFieldGroupCount
(
tp
,
LOCATION_DECK
,
0
)
>=
3
end
Duel
.
SetOperationInfo
(
0
,
CATEGORY_TOHAND
,
nil
,
1
,
0
,
LOCATION_DECK
)
end
)
e2
:
SetOperation
(
function
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
if
not
e
:
GetHandler
():
IsRelateToEffect
(
e
)
then
return
end
e2
:
SetTarget
(
c37900007
.
tg2
)
e2
:
SetOperation
(
c37900007
.
op2
)
c
:
RegisterEffect
(
e2
)
local
e3
=
Effect
.
CreateEffect
(
c
)
e3
:
SetCategory
(
CATEGORY_SPECIAL_SUMMON
+
CATEGORY_GRAVE_SPSUMMON
)
e3
:
SetType
(
EFFECT_TYPE_SINGLE
+
EFFECT_TYPE_TRIGGER_O
)
e3
:
SetCode
(
EVENT_TO_GRAVE
)
e3
:
SetProperty
(
EFFECT_FLAG_DELAY
)
e3
:
SetCondition
(
c37900007
.
con3
)
e3
:
SetTarget
(
c37900007
.
tg3
)
e3
:
SetOperation
(
c37900007
.
op3
)
c
:
RegisterEffect
(
e3
)
end
function
c37900007
.
q
(
c
)
return
c
:
IsSetCard
(
0x389
)
and
c
:
IsAbleToHand
()
end
function
c37900007
.
tg
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
local
g
=
Duel
.
GetDecktopGroup
(
tp
,
3
)
local
sg
=
g
:
Filter
(
Card
.
IsAbleToHand
,
nil
)
if
chk
==
0
then
return
sg
:
GetCount
()
==
3
end
end
function
c37900007
.
op
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
g
=
Duel
.
GetDecktopGroup
(
tp
,
3
)
local
sg
=
g
:
Filter
(
Card
.
IsAbleToHand
,
nil
)
if
sg
:
GetCount
()
==
3
then
Duel
.
ConfirmDecktop
(
tp
,
3
)
local
g
=
Duel
.
GetDecktopGroup
(
tp
,
3
)
if
g
:
GetCount
()
>
0
then
if
g
:
IsExists
(
c37900007
.
opf2
,
1
,
nil
)
then
Duel
.
Hint
(
HINT_SELECTMSG
,
p
,
HINTMSG_ATOHAND
)
local
sg
=
g
:
FilterSelect
(
tp
,
c37900007
.
opf2
,
1
,
1
,
nil
)
Duel
.
DisableShuffleCheck
()
if
g
:
IsExists
(
c37900007
.
q
,
1
,
nil
)
then
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_ATOHAND
)
local
sg
=
g
:
FilterSelect
(
tp
,
c37900007
.
q
,
1
,
1
,
nil
)
Duel
.
SendtoHand
(
sg
,
nil
,
REASON_EFFECT
)
Duel
.
ConfirmCards
(
1
-
tp
,
sg
)
Duel
.
ShuffleHand
(
tp
)
g
:
Sub
(
sg
)
end
Duel
.
ShuffleDeck
(
tp
)
end
end
)
c
:
RegisterEffect
(
e2
)
--e3
local
e3
=
Effect
.
CreateEffect
(
c
)
e3
:
SetDescription
(
aux
.
Stringid
(
37900007
,
1
))
e3
:
SetCategory
(
CATEGORY_SPECIAL_SUMMON
)
e3
:
SetType
(
EFFECT_TYPE_IGNITION
)
e3
:
SetRange
(
LOCATION_SZONE
)
e3
:
SetCountLimit
(
1
,
37900007
)
e3
:
SetTarget
(
function
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
,
chkc
)
if
chk
==
0
then
return
Duel
.
GetLocationCount
(
tp
,
LOCATION_MZONE
)
>
0
and
Duel
.
IsExistingMatchingCard
(
c37900007
.
tgf3
,
tp
,
LOCATION_GRAVE
+
LOCATION_HAND
,
0
,
1
,
nil
,
e
,
tp
)
end
Duel
.
SetOperationInfo
(
0
,
CATEGORY_SPECIAL_SUMMON
,
nil
,
1
,
tp
,
LOCATION_GRAVE
+
LOCATION_HAND
)
end
)
e3
:
SetOperation
(
function
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
if
Duel
.
GetLocationCount
(
tp
,
LOCATION_MZONE
)
<=
0
then
return
end
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_SPSUMMON
)
local
g
=
Duel
.
SelectMatchingCard
(
tp
,
aux
.
NecroValleyFilter
(
c37900007
.
tgf3
),
tp
,
LOCATION_GRAVE
+
LOCATION_HAND
,
0
,
1
,
1
,
nil
,
e
,
tp
)
if
g
:
GetCount
()
>
0
then
Duel
.
SpecialSummon
(
g
,
0
,
tp
,
tp
,
false
,
false
,
POS_FACEUP
)
end
end
)
c
:
RegisterEffect
(
e3
)
--e4
local
e4
=
Effect
.
CreateEffect
(
c
)
e4
:
SetCategory
(
CATEGORY_TOHAND
)
e4
:
SetType
(
EFFECT_TYPE_SINGLE
+
EFFECT_TYPE_TRIGGER_O
)
e4
:
SetCode
(
EVENT_TO_GRAVE
)
e4
:
SetProperty
(
EFFECT_FLAG_DAMAGE_STEP
+
EFFECT_FLAG_DELAY
)
e4
:
SetCondition
(
function
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
return
e
:
GetHandler
():
IsPreviousLocation
(
LOCATION_ONFIELD
)
end
)
e4
:
SetTarget
(
function
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
Duel
.
GetLocationCount
(
tp
,
LOCATION_MZONE
)
>
0
and
Duel
.
IsExistingMatchingCard
(
c37900007
.
tgf4
,
tp
,
LOCATION_GRAVE
,
0
,
1
,
nil
,
e
,
tp
)
end
Duel
.
SetOperationInfo
(
0
,
CATEGORY_SPECIAL_SUMMON
,
nil
,
1
,
0
,
LOCATION_GRAVE
)
end
)
e4
:
SetOperation
(
function
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
ft
=
Duel
.
GetLocationCount
(
tp
,
LOCATION_MZONE
)
local
tg
=
Duel
.
GetMatchingGroup
(
c37900007
.
tgf4
,
tp
,
LOCATION_GRAVE
,
0
,
nil
,
e
,
tp
)
if
ft
<=
0
or
tg
:
GetCount
()
==
0
then
return
end
if
Duel
.
IsPlayerAffectedByEffect
(
tp
,
59822133
)
then
ft
=
1
end
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_SPSUMMON
)
local
g
=
tg
:
Select
(
tp
,
ft
,
ft
,
nil
)
local
c
=
e
:
GetHandler
()
local
tc
=
g
:
GetFirst
()
while
tc
do
Duel
.
SpecialSummonStep
(
tc
,
0
,
tp
,
tp
,
false
,
false
,
POS_FACEUP
)
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetType
(
EFFECT_TYPE_SINGLE
)
e1
:
SetCode
(
EFFECT_DISABLE
)
e1
:
SetReset
(
RESET_EVENT
+
RESETS_STANDARD
)
tc
:
RegisterEffect
(
e1
)
local
e2
=
Effect
.
CreateEffect
(
c
)
e2
:
SetType
(
EFFECT_TYPE_SINGLE
)
e2
:
SetCode
(
EFFECT_DISABLE_EFFECT
)
e2
:
SetReset
(
RESET_EVENT
+
RESETS_STANDARD
)
tc
:
RegisterEffect
(
e2
)
tc
=
g
:
GetNext
()
end
Duel
.
SpecialSummonComplete
()
end
)
c
:
RegisterEffect
(
e4
)
end
end
--e2
function
c37900007
.
opf2
(
c
)
return
c
:
IsSetCard
(
0x389
)
and
c
:
IsAbleToHand
()
function
c37900007
.
w
(
c
,
e
,
tp
)
return
c
:
IsSetCard
(
0x389
)
and
c
:
IsCanBeSpecialSummoned
(
e
,
0
,
tp
,
false
,
false
)
and
Duel
.
GetLocationCount
(
tp
,
LOCATION_MZONE
)
>
0
end
--e3
function
c37900007
.
tgf3
(
c
,
e
,
tp
)
return
c
:
IsType
(
TYPE_MONSTER
)
and
c
:
IsSetCard
(
0x389
)
and
c
:
IsCanBeSpecialSummoned
(
e
,
0
,
tp
,
false
,
false
)
function
c37900007
.
tg2
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
Duel
.
IsExistingMatchingCard
(
c37900007
.
w
,
tp
,
LOCATION_GRAVE
+
LOCATION_HAND
,
0
,
1
,
nil
,
e
,
tp
)
end
Duel
.
SetOperationInfo
(
0
,
CATEGORY_SPECIAL_SUMMON
,
nil
,
1
,
tp
,
LOCATION_GRAVE
+
LOCATION_HAND
)
end
--e4
function
c37900007
.
tgf4
(
c
,
e
,
sp
)
return
c
:
IsType
(
TYPE_MONSTER
)
and
c
:
IsSetCard
(
0x389
)
and
c
:
IsCanBeSpecialSummoned
(
e
,
0
,
sp
,
false
,
false
)
and
not
Duel
.
IsExistingMatchingCard
(
Card
.
IsCode
,
tp
,
LOCATION_MZONE
,
0
,
1
,
nil
,
c
:
GetCode
())
function
c37900007
.
op2
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_SPSUMMON
)
local
g
=
Duel
.
SelectMatchingCard
(
tp
,
aux
.
NecroValleyFilter
(
c37900007
.
w
,
e
,
tp
),
tp
,
LOCATION_GRAVE
+
LOCATION_HAND
,
0
,
1
,
nil
,
e
,
tp
)
if
g
:
GetCount
()
>
0
then
Duel
.
SpecialSummon
(
g
,
0
,
tp
,
tp
,
false
,
false
,
POS_FACEUP
)
end
end
function
c37900007
.
con3
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
c
=
e
:
GetHandler
()
return
c
:
IsPreviousLocation
(
LOCATION_ONFIELD
)
end
function
c37900007
.
tg3
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
Duel
.
IsExistingMatchingCard
(
c37900007
.
w
,
tp
,
LOCATION_GRAVE
+
LOCATION_HAND
,
0
,
1
,
nil
,
e
,
tp
)
end
Duel
.
SetOperationInfo
(
0
,
CATEGORY_SPECIAL_SUMMON
,
nil
,
1
,
tp
,
LOCATION_GRAVE
)
end
function
c37900007
.
op4
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
c
=
e
:
GetHandler
()
local
ct
=
Duel
.
GetLocationCount
(
tp
,
LOCATION_MZONE
)
local
g
=
Duel
.
GetMatchingGroup
(
c37900007
.
w
,
tp
,
LOCATION_GRAVE
,
0
,
nil
,
e
,
tp
)
if
ct
<=
0
or
g
:
GetCount
()
==
0
then
return
end
ct
=
math.min
(
ct
,
g
:
GetClassCount
(
Card
.
GetCode
))
if
Duel
.
IsPlayerAffectedByEffect
(
tp
,
59822133
)
then
ct
=
1
end
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_SPSUMMON
)
local
sg
=
g
:
SelectSubGroup
(
tp
,
aux
.
dncheck
,
false
,
ct
,
ct
)
if
sg
and
sg
:
GetCount
()
>
0
then
if
Duel
.
SpecialSummon
(
sg
,
0
,
tp
,
tp
,
false
,
false
,
POS_FACEUP
)
>
0
then
local
tc
=
sg
:
GetFirst
()
while
tc
do
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetType
(
EFFECT_TYPE_SINGLE
)
e1
:
SetCode
(
EFFECT_DISABLE
)
e1
:
SetReset
(
RESET_EVENT
+
RESETS_STANDARD
)
tc
:
RegisterEffect
(
e1
,
true
)
local
e2
=
Effect
.
CreateEffect
(
c
)
e2
:
SetType
(
EFFECT_TYPE_SINGLE
)
e2
:
SetCode
(
EFFECT_DISABLE_EFFECT
)
e2
:
SetValue
(
RESET_TURN_SET
)
e2
:
SetReset
(
RESET_EVENT
+
RESETS_STANDARD
)
tc
:
RegisterEffect
(
e2
,
true
)
tc
=
sg
:
GetNext
()
end
end
end
end
\ No newline at end of file
expansions/script/c37900008.lua
View file @
328435de
--欢迎来到神隐之乡
local
m
=
37900008
local
cm
=
_G
[
"c"
..
m
]
Duel
.
LoadScript
(
"c16199990.lua"
)
function
cm
.
initial_effect
(
c
)
local
e1
=
rsef
.
ACT
(
c
,
nil
,
nil
,{
1
,
m
,
1
},
"se,th,sp"
,
nil
,
nil
,
nil
,
cm
.
tg
,
cm
.
thop
)
--sset
function
c37900008
.
initial_effect
(
c
)
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetCategory
(
CATEGORY_TOHAND
+
CATEGORY_SEARCH
+
CATEGORY_DECKDES
)
e1
:
SetType
(
EFFECT_TYPE_ACTIVATE
)
e1
:
SetCode
(
EVENT_FREE_CHAIN
)
e1
:
SetCountLimit
(
1
,
37900008
+
EFFECT_COUNT_CODE_OATH
)
e1
:
SetOperation
(
c37900008
.
activate
)
c
:
RegisterEffect
(
e1
)
local
e2
=
Effect
.
CreateEffect
(
c
)
e2
:
SetDescription
(
aux
.
Stringid
(
m
,
3
))
e2
:
SetCategory
(
CATEGORY_TOHAND
+
CATEGORY_SEARCH
)
e2
:
SetType
(
EFFECT_TYPE_IGNITION
)
e2
:
SetCode
(
EVENT_FREE_CHAIN
)
e2
:
SetRange
(
LOCATION_SZONE
)
e2
:
SetCountLimit
(
1
,
m
+
100
)
e2
:
SetCost
(
c
m
.
ss
cost
)
e2
:
SetTarget
(
c
m
.
ss
tg
)
e2
:
SetOperation
(
c
m
.
ss
op
)
e2
:
SetCountLimit
(
1
,
47900008
)
e2
:
SetCost
(
c
37900008
.
cost
)
e2
:
SetTarget
(
c
37900008
.
tg
)
e2
:
SetOperation
(
c
37900008
.
op
)
c
:
RegisterEffect
(
e2
)
--
local
e4
=
Effect
.
CreateEffect
(
c
)
e4
:
SetDescription
(
aux
.
Stringid
(
m
,
4
))
e4
:
SetCategory
(
CATEGORY_DAMAGE
+
CATEGORY_DEFCHANGE
)
e4
:
SetType
(
EFFECT_TYPE_FIELD
+
EFFECT_TYPE_TRIGGER_F
)
e4
:
SetRange
(
LOCATION_SZONE
)
e4
:
SetCountLimit
(
1
)
e4
:
SetOperation
(
cm
.
desop
)
c
:
RegisterEffect
(
e4
)
end
function
c
m
.
filter
(
c
,
e
,
tp
)
return
(
c
:
IsSetCard
(
0x389
)
and
c
:
IsCanBeSpecialSummoned
(
e
,
0
,
tp
,
false
,
false
)
and
Duel
.
GetLocationCount
(
tp
,
LOCATION_MZONE
)
>
0
)
or
(
c
:
IsSetCard
(
0xce0
)
and
c
:
IsAbleToHand
()
)
function
c
37900008
.
q
(
c
)
return
c
:
IsSetCard
(
0xce0
)
and
c
:
IsAbleToHand
(
)
end
function
cm
.
tg
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
true
end
Duel
.
SetOperationInfo
(
0
,
CATEGORY_SPECIAL_SUMMON
,
nil
,
1
,
0
,
0
)
Duel
.
SetOperationInfo
(
0
,
CATEGORY_TOHAND
,
nil
,
1
,
tp
,
LOCATION_DECK
)
function
c37900008
.
w
(
c
,
e
,
tp
)
return
c
:
IsSetCard
(
0x389
)
and
c
:
IsCanBeSpecialSummoned
(
e
,
0
,
tp
,
false
,
false
)
and
Duel
.
GetLocationCount
(
tp
,
LOCATION_MZONE
)
>
0
end
function
cm
.
thop
(
e
,
tp
)
if
Duel
.
IsExistingMatchingCard
(
cm
.
filter
,
tp
,
LOCATION_DECK
,
0
,
1
,
nil
,
e
,
tp
)
and
Duel
.
SelectYesNo
(
tp
,
aux
.
Stringid
(
m
,
0
))
then
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_SELECT
)
local
sg
=
Duel
.
SelectMatchingCard
(
tp
,
cm
.
filter
,
tp
,
LOCATION_DECK
,
0
,
1
,
1
,
nil
,
e
,
tp
)
if
sg
:
GetCount
()
>
0
then
local
tc
=
sg
:
GetFirst
()
local
op
=
0
local
a
=
tc
:
IsCanBeSpecialSummoned
(
e
,
0
,
tp
,
false
,
false
)
and
Duel
.
GetLocationCount
(
tp
,
LOCATION_MZONE
)
>
0
and
tc
:
IsSetCard
(
0x389
)
local
b
=
tc
:
IsAbleToHand
()
and
tc
:
IsSetCard
(
0xce0
)
if
a
and
b
then
op
=
Duel
.
SelectOption
(
tp
,
aux
.
Stringid
(
m
,
1
),
aux
.
Stringid
(
m
,
2
))
elseif
a
then
op
=
Duel
.
SelectOption
(
tp
,
aux
.
Stringid
(
m
,
1
))
elseif
b
then
op
=
Duel
.
SelectOption
(
tp
,
aux
.
Stringid
(
m
,
2
))
+
1
function
c37900008
.
activate
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
c
=
e
:
GetHandler
()
if
(
Duel
.
IsExistingMatchingCard
(
c37900008
.
q
,
tp
,
LOCATION_DECK
,
0
,
1
,
nil
)
or
Duel
.
IsExistingMatchingCard
(
c37900008
.
w
,
tp
,
LOCATION_DECK
,
0
,
1
,
nil
,
e
,
tp
))
and
Duel
.
SelectEffectYesNo
(
tp
,
c
,
aux
.
Stringid
(
37900008
,
2
))
then
if
Duel
.
IsExistingMatchingCard
(
c37900008
.
q
,
tp
,
LOCATION_DECK
,
0
,
1
,
nil
)
and
not
Duel
.
IsExistingMatchingCard
(
c37900008
.
w
,
tp
,
LOCATION_DECK
,
0
,
1
,
nil
,
e
,
tp
)
then
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_ATOHAND
)
local
g
=
Duel
.
SelectMatchingCard
(
tp
,
c37900008
.
q
,
tp
,
LOCATION_DECK
,
0
,
1
,
1
,
nil
)
if
g
:
GetCount
()
>
0
then
Duel
.
SendtoHand
(
g
,
tp
,
REASON_EFFECT
)
Duel
.
ConfirmCards
(
1
-
tp
,
g
)
end
end
if
not
Duel
.
IsExistingMatchingCard
(
c37900008
.
q
,
tp
,
LOCATION_DECK
,
0
,
1
,
nil
)
and
Duel
.
IsExistingMatchingCard
(
c37900008
.
w
,
tp
,
LOCATION_DECK
,
0
,
1
,
nil
,
e
,
tp
)
then
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_SPSUMMON
)
local
g
=
Duel
.
SelectMatchingCard
(
tp
,
c37900008
.
w
,
tp
,
LOCATION_DECK
,
0
,
1
,
1
,
nil
,
e
,
tp
)
if
g
:
GetCount
()
>
0
then
if
Duel
.
SpecialSummon
(
g
,
0
,
tp
,
tp
,
false
,
false
,
POS_FACEUP
)
>
0
then
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetType
(
EFFECT_TYPE_SINGLE
)
e1
:
SetCode
(
EFFECT_DISABLE
)
e1
:
SetReset
(
RESET_EVENT
+
RESETS_STANDARD
)
g
:
GetFirst
():
RegisterEffect
(
e1
,
true
)
local
e2
=
Effect
.
CreateEffect
(
c
)
e2
:
SetType
(
EFFECT_TYPE_SINGLE
)
e2
:
SetCode
(
EFFECT_DISABLE_EFFECT
)
e2
:
SetValue
(
RESET_TURN_SET
)
e2
:
SetReset
(
RESET_EVENT
+
RESETS_STANDARD
)
g
:
GetFirst
():
RegisterEffect
(
e2
,
true
)
end
end
end
if
Duel
.
IsExistingMatchingCard
(
c37900008
.
q
,
tp
,
LOCATION_DECK
,
0
,
1
,
nil
)
and
Duel
.
IsExistingMatchingCard
(
c37900008
.
w
,
tp
,
LOCATION_DECK
,
0
,
1
,
nil
,
e
,
tp
)
then
local
op
=
Duel
.
SelectOption
(
tp
,
aux
.
Stringid
(
37900008
,
0
),
aux
.
Stringid
(
37900008
,
1
))
if
op
==
0
then
if
Duel
.
SpecialSummonStep
(
tc
,
0
,
tp
,
tp
,
false
,
false
,
POS_FACEUP
)
then
local
e1
=
Effect
.
CreateEffect
(
e
:
GetHandler
())
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_ATOHAND
)
local
g
=
Duel
.
SelectMatchingCard
(
tp
,
c37900008
.
q
,
tp
,
LOCATION_DECK
,
0
,
1
,
1
,
nil
)
if
g
:
GetCount
()
>
0
then
Duel
.
SendtoHand
(
g
,
tp
,
REASON_EFFECT
)
Duel
.
ConfirmCards
(
1
-
tp
,
g
)
end
end
if
op
==
1
then
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_SPSUMMON
)
local
g
=
Duel
.
SelectMatchingCard
(
tp
,
c37900008
.
w
,
tp
,
LOCATION_DECK
,
0
,
1
,
1
,
nil
,
e
,
tp
)
if
g
:
GetCount
()
>
0
then
if
Duel
.
SpecialSummon
(
g
,
0
,
tp
,
tp
,
false
,
false
,
POS_FACEUP
)
>
0
then
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetType
(
EFFECT_TYPE_SINGLE
)
e1
:
SetCode
(
EFFECT_DISABLE
)
e1
:
SetReset
(
RESET_EVENT
+
RESETS_STANDARD
+
RESET_PHASE
+
PHASE_END
)
tc
:
RegisterEffect
(
e1
)
local
e2
=
Effect
.
CreateEffect
(
e
:
GetHandler
()
)
e1
:
SetReset
(
RESET_EVENT
+
RESETS_STANDARD
)
g
:
GetFirst
():
RegisterEffect
(
e1
,
true
)
local
e2
=
Effect
.
CreateEffect
(
c
)
e2
:
SetType
(
EFFECT_TYPE_SINGLE
)
e2
:
SetCode
(
EFFECT_DISABLE_EFFECT
)
e2
:
SetReset
(
RESET_EVENT
+
RESETS_STANDARD
+
RESET_PHASE
+
PHASE_END
)
tc
:
RegisterEffect
(
e2
)
end
Duel
.
SpecialSummonComplete
()
else
Duel
.
SendtoHand
(
tc
,
tp
,
REASON_EFFECT
)
e2
:
SetValue
(
RESET_TURN_SET
)
e2
:
SetReset
(
RESET_EVENT
+
RESETS_STANDARD
)
g
:
GetFirst
():
RegisterEffect
(
e2
,
true
)
end
end
end
end
end
end
function
cm
.
solvefun
(
g
,
tp
)
local
tc
=
g
:
GetFirst
()
local
b1
=
tc
:
IsType
(
TYPE_MONSTER
)
and
tc
:
IsSetCard
(
0xce0
)
and
tc
:
IsAbleToHand
()
local
b2
=
tc
:
IsSetCard
(
0xce0
)
and
tc
:
IsAbleToGrave
()
if
b1
then
Duel
.
SendtoHand
(
tc
,
nil
,
REASON_EFFECT
)
Duel
.
ConfirmCards
(
1
-
tp
,
tc
)
else
Duel
.
SendtoGrave
(
tc
,
REASON_EFFECT
)
end
end
end
function
cm
.
sscost
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
Duel
.
IsExistingMatchingCard
(
Card
.
IsDiscardable
,
tp
,
LOCATION_HAND
,
0
,
1
,
nil
)
end
Duel
.
DiscardHand
(
tp
,
Card
.
IsDiscardable
,
1
,
1
,
REASON_COST
+
REASON_DISCARD
)
function
c37900008
.
cost
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
local
c
=
e
:
GetHandler
()
if
chk
==
0
then
return
Duel
.
IsExistingMatchingCard
(
Card
.
IsDiscardable
,
tp
,
LOCATION_HAND
,
0
,
1
,
c
)
end
Duel
.
DiscardHand
(
tp
,
Card
.
IsDiscardable
,
1
,
1
,
REASON_COST
+
REASON_DISCARD
,
nil
)
end
function
c
m
.
thcheck
(
c
)
return
(
c
:
IsSetCard
(
0x
ce0
)
or
c
:
IsSetCard
(
0x389
))
and
c
:
IsAbleToHand
()
function
c
37900008
.
e
(
c
)
return
(
c
:
IsSetCard
(
0x
389
)
or
c
:
IsSetCard
(
0xce0
))
and
c
:
IsAbleToHand
()
end
function
c
m
.
ss
tg
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
Duel
.
IsExistingMatchingCard
(
c
m
.
thcheck
,
tp
,
LOCATION_DECK
,
0
,
1
,
nil
)
end
function
c
37900008
.
tg
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
Duel
.
IsExistingMatchingCard
(
c
37900008
.
e
,
tp
,
LOCATION_DECK
,
0
,
1
,
nil
)
end
Duel
.
SetOperationInfo
(
0
,
CATEGORY_TOHAND
,
nil
,
1
,
tp
,
LOCATION_DECK
)
end
function
c
m
.
ss
op
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
function
c
37900008
.
op
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_ATOHAND
)
local
g
=
Duel
.
SelectMatchingCard
(
tp
,
c
m
.
thcheck
,
tp
,
LOCATION_DECK
,
0
,
1
,
1
,
nil
)
local
g
=
Duel
.
SelectMatchingCard
(
tp
,
c
37900008
.
e
,
tp
,
LOCATION_DECK
,
0
,
1
,
1
,
nil
)
if
g
:
GetCount
()
>
0
then
Duel
.
SendtoHand
(
g
,
tp
,
REASON_EFFECT
)
Duel
.
SendtoHand
(
g
,
nil
,
REASON_EFFECT
)
Duel
.
ConfirmCards
(
1
-
tp
,
g
)
end
end
\ No newline at end of file
expansions/script/c37900011.lua
View file @
328435de
--黑白魔法使
if
not
pcall
(
function
()
dofile
(
"expansions/script/c37900000.lua"
)
end
)
then
dofile
(
"script/c37900000.lua"
)
end
local
m
,
cm
=
rscf
.
DefineCard
(
37900011
)
function
cm
.
initial_effect
(
c
)
--xyz summon
aux
.
AddXyzProcedure
(
c
,
nil
,
6
,
2
,
cm
.
ovfilter
,
aux
.
Stringid
(
m
,
0
),
2
,
cm
.
xyzop
)
function
c37900011
.
initial_effect
(
c
)
aux
.
AddXyzProcedure
(
c
,
nil
,
6
,
2
,
c37900011
.
ovfilter
,
aux
.
Stringid
(
37900011
,
0
),
2
,
c37900011
.
xyzop
)
c
:
EnableReviveLimit
()
--recover
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetDescription
(
aux
.
Stringid
(
m
,
1
))
e1
:
SetCategory
(
CATEGORY_RECOVER
)
e1
:
SetType
(
EFFECT_TYPE_IGNITION
)
e1
:
SetProperty
(
EFFECT_FLAG_CARD_TARGET
)
e1
:
SetRange
(
LOCATION_MZONE
)
e1
:
SetCountLimit
(
1
)
e1
:
SetCost
(
rscost
.
rmxyz
(
1
)
)
e1
:
SetTarget
(
c
m
.
rec
tg
)
e1
:
SetOperation
(
c
m
.
rec
op
)
e1
:
SetCost
(
c37900011
.
cost
)
e1
:
SetTarget
(
c
37900011
.
tg
)
e1
:
SetOperation
(
c
37900011
.
op
)
c
:
RegisterEffect
(
e1
)
--Pos Change
local
e2
=
Effect
.
CreateEffect
(
c
)
e2
:
SetType
(
EFFECT_TYPE_FIELD
)
e2
:
SetCode
(
EFFECT_SET_POSITION
)
...
...
@@ -26,7 +19,6 @@ function cm.initial_effect(c)
e2
:
SetTargetRange
(
LOCATION_MZONE
,
0
)
e2
:
SetValue
(
POS_FACEUP_DEFENSE
)
c
:
RegisterEffect
(
e2
)
--
local
e3
=
Effect
.
CreateEffect
(
c
)
e3
:
SetType
(
EFFECT_TYPE_FIELD
)
e3
:
SetCode
(
EFFECT_DEFENSE_ATTACK
)
...
...
@@ -35,62 +27,57 @@ function cm.initial_effect(c)
e3
:
SetTarget
(
aux
.
TargetBoolFunction
(
Card
.
IsSetCard
,
0x389
))
e3
:
SetValue
(
1
)
c
:
RegisterEffect
(
e3
)
--material
local
e4
=
Effect
.
CreateEffect
(
c
)
e4
:
SetDescription
(
aux
.
Stringid
(
m
,
2
))
e4
:
SetType
(
EFFECT_TYPE_FIELD
+
EFFECT_TYPE_TRIGGER_O
)
e4
:
SetCode
(
EVENT_PHASE
+
PHASE_END
)
e4
:
SetRange
(
LOCATION_MZONE
)
e4
:
SetCountLimit
(
1
)
e4
:
SetTarget
(
c
m
.
mttg
)
e4
:
SetOperation
(
c
m
.
mtop
)
c
:
RegisterEffect
(
e4
)
e4
:
SetTarget
(
c
37900011
.
tg4
)
e4
:
SetOperation
(
c
37900011
.
op4
)
c
:
RegisterEffect
(
e4
)
end
function
c
m
.
ovfilter
(
c
)
function
c
37900011
.
ovfilter
(
c
)
return
c
:
IsFaceup
()
and
c
:
IsCode
(
37900096
)
end
function
c
m
.
xyzop
(
e
,
tp
,
chk
)
if
chk
==
0
then
return
Duel
.
GetFlagEffect
(
tp
,
m
)
==
0
end
Duel
.
RegisterFlagEffect
(
tp
,
m
,
RESET_PHASE
+
PHASE_END
,
EFFECT_FLAG_OATH
,
1
)
function
c
37900011
.
xyzop
(
e
,
tp
,
chk
)
if
chk
==
0
then
return
Duel
.
GetFlagEffect
(
tp
,
37900011
)
==
0
end
Duel
.
RegisterFlagEffect
(
tp
,
37900011
,
RESET_PHASE
+
PHASE_END
,
EFFECT_FLAG_OATH
,
1
)
end
function
cm
.
recfilter
(
c
)
function
c37900011
.
cost
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
e
:
GetHandler
():
CheckRemoveOverlayCard
(
tp
,
1
,
REASON_COST
)
end
e
:
GetHandler
():
RemoveOverlayCard
(
tp
,
1
,
1
,
REASON_COST
)
end
function
c37900011
.
recfilter
(
c
)
local
atk
,
def
=
c
:
GetAttack
(),
c
:
GetDefense
()
if
def
<=
0
then
def
=
0
end
return
c
:
IsFaceup
()
and
atk
+
def
>
0
end
function
cm
.
rectg
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
,
chkc
)
if
chkc
then
return
chkc
:
IsLocation
(
LOCATION_MZONE
)
and
cm
.
recfilter
(
chkc
)
end
if
chk
==
0
then
return
Duel
.
IsExistingTarget
(
cm
.
recfilter
,
tp
,
LOCATION_MZONE
,
LOCATION_MZONE
,
1
,
nil
)
end
function
c37900011
.
tg
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
Duel
.
IsExistingTarget
(
c37900011
.
recfilter
,
tp
,
LOCATION_MZONE
,
LOCATION_MZONE
,
1
,
nil
)
end
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_TARGET
)
local
g
=
Duel
.
SelectTarget
(
tp
,
cm
.
recfilter
,
tp
,
LOCATION_MZONE
,
LOCATION_MZONE
,
1
,
1
,
nil
)
local
tc
=
g
:
GetFirst
()
local
atk
,
def
=
tc
:
GetAttack
(),
tc
:
GetDefense
()
if
def
<=
0
then
def
=
0
end
Duel
.
SetOperationInfo
(
0
,
CATEGORY_RECOVER
,
nil
,
0
,
tp
,
atk
+
def
)
Duel
.
SetOperationInfo
(
0
,
CATEGORY_RECOVER
,
nil
,
0
,
tp
,
0
)
end
function
cm
.
recop
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
tc
=
Duel
.
GetFirstTarget
()
if
tc
:
IsRelateToEffect
(
e
)
and
tc
:
IsFaceup
()
then
local
atk
,
def
=
tc
:
GetAttack
(),
tc
:
GetDefense
()
if
def
<=
0
then
def
=
0
end
if
atk
+
def
>
0
then
Duel
.
Recover
(
tp
,
atk
+
def
,
REASON_EFFECT
)
end
function
c37900011
.
op
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_FACEUP
)
local
g
=
Duel
.
SelectMatchingCard
(
tp
,
c37900011
.
recfilter
,
tp
,
LOCATION_MZONE
,
LOCATION_MZONE
,
1
,
1
,
nil
)
if
g
:
GetCount
()
>
0
then
local
atk
,
def
=
g
:
GetFirst
():
GetAttack
(),
g
:
GetFirst
():
GetDefense
()
Duel
.
Recover
(
tp
,
atk
+
def
,
REASON_EFFECT
)
end
end
function
c
m
.
mtfilter
(
c
)
function
c
37900011
.
mtfilter
(
c
)
return
c
:
IsSetCard
(
0x389
)
and
c
:
IsType
(
TYPE_MONSTER
)
and
c
:
IsCanOverlay
()
end
function
c
m
.
mttg
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
function
c
37900011
.
tg4
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
e
:
GetHandler
():
IsType
(
TYPE_XYZ
)
and
Duel
.
IsExistingMatchingCard
(
c
m
.
mtfilter
,
tp
,
LOCATION_DECK
+
LOCATION_GRAVE
,
0
,
1
,
nil
)
end
and
Duel
.
IsExistingMatchingCard
(
c
37900011
.
mtfilter
,
tp
,
LOCATION_DECK
+
LOCATION_GRAVE
,
0
,
1
,
nil
)
end
end
function
c
m
.
mtop
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
function
c
37900011
.
op4
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
c
=
e
:
GetHandler
()
if
not
c
:
IsRelateToEffect
(
e
)
then
return
end
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_XMATERIAL
)
local
g
=
Duel
.
SelectMatchingCard
(
tp
,
cm
.
mtfilter
,
tp
,
LOCATION_DECK
+
LOCATION_GRAVE
,
0
,
1
,
1
,
nil
)
local
g
=
Duel
.
SelectMatchingCard
(
tp
,
aux
.
NecroValleyFilter
(
c37900011
.
mtfilter
)
,
tp
,
LOCATION_DECK
+
LOCATION_GRAVE
,
0
,
1
,
1
,
nil
)
if
g
:
GetCount
()
>
0
then
Duel
.
Overlay
(
c
,
g
)
end
end
end
\ No newline at end of file
expansions/script/c37900012.lua
View file @
328435de
--色彩艳丽的门卫
if
not
pcall
(
function
()
dofile
(
"expansions/script/c37900000.lua"
)
end
)
then
dofile
(
"script/c37900000.lua"
)
end
local
m
,
cm
=
rscf
.
DefineCard
(
37900012
)
function
cm
.
initial_effect
(
c
)
--xyz summon
aux
.
AddXyzProcedure
(
c
,
aux
.
FilterBoolFunction
(
Card
.
IsRace
,
RACE_WARRIOR
),
7
,
2
,
cm
.
ovfilter
,
aux
.
Stringid
(
m
,
0
),
2
,
cm
.
xyzop
)
--红魔馆门番·华人小姑娘
function
c37900012
.
initial_effect
(
c
)
aux
.
AddXyzProcedure
(
c
,
aux
.
FilterBoolFunction
(
Card
.
IsRace
,
RACE_WARRIOR
),
7
,
2
,
c37900012
.
ovfilter
,
aux
.
Stringid
(
37900012
,
1
),
2
,
c37900012
.
xyzop
)
c
:
EnableReviveLimit
()
local
e4
=
rsef
.
I
(
c
,
"des"
,
nil
,
"des,sp,dd"
,
nil
,
LOCATION_MZONE
,
nil
,
rscost
.
rmxyz
(
1
),
rsop
.
target
(
aux
.
TRUE
,
"des"
,
0
,
LOCATION_MZONE
,
true
),
cm
.
desop
)
--battle indes
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetType
(
EFFECT_TYPE_SINGLE
)
e1
:
SetProperty
(
EFFECT_FLAG_SINGLE_RANGE
)
e1
:
SetRange
(
LOCATION_MZONE
)
e1
:
SetCode
(
EFFECT_INDESTRUCTABLE_COUNT
)
e1
:
SetCountLimit
(
2
)
e1
:
SetValue
(
c
m
.
valcon
)
e1
:
SetValue
(
c
37900012
.
valcon
)
c
:
RegisterEffect
(
e1
)
--target/atk protection
local
e2
=
Effect
.
CreateEffect
(
c
)
e2
:
SetType
(
EFFECT_TYPE_FIELD
)
e2
:
SetRange
(
LOCATION_MZONE
)
e2
:
SetTargetRange
(
0
,
LOCATION_MZONE
)
e2
:
SetCode
(
EFFECT_CANNOT_SELECT_BATTLE_TARGET
)
e2
:
SetValue
(
c
m
.
atlimit
)
e2
:
SetValue
(
c
37900012
.
atlimit
)
c
:
RegisterEffect
(
e2
)
local
e3
=
Effect
.
CreateEffect
(
c
)
e3
:
SetType
(
EFFECT_TYPE_FIELD
)
...
...
@@ -29,38 +23,84 @@ function cm.initial_effect(c)
e3
:
SetProperty
(
EFFECT_FLAG_IGNORE_IMMUNE
+
EFFECT_FLAG_SET_AVAILABLE
)
e3
:
SetRange
(
LOCATION_MZONE
)
e3
:
SetTargetRange
(
LOCATION_MZONE
,
0
)
e3
:
SetTarget
(
c
m
.
tglimit
)
e3
:
SetTarget
(
c
37900012
.
tglimit
)
e3
:
SetValue
(
aux
.
tgoval
)
c
:
RegisterEffect
(
e3
)
local
e4
=
Effect
.
CreateEffect
(
c
)
e4
:
SetType
(
EFFECT_TYPE_IGNITION
)
e4
:
SetCode
(
EVENT_FREE_CHAIN
)
e4
:
SetCategory
(
CATEGORY_SPECIAL_SUMMON
+
CATEGORY_DESTROY
+
CATEGORY_DECKDES
)
e4
:
SetRange
(
LOCATION_MZONE
)
e4
:
SetCost
(
c37900012
.
cost
)
e4
:
SetTarget
(
c37900012
.
tg
)
e4
:
SetOperation
(
c37900012
.
op
)
c
:
RegisterEffect
(
e4
)
end
function
c
m
.
ovfilter
(
c
)
function
c
37900012
.
ovfilter
(
c
)
return
c
:
IsFaceup
()
and
c
:
IsCode
(
37900097
)
end
function
c
m
.
xyzop
(
e
,
tp
,
chk
)
if
chk
==
0
then
return
Duel
.
GetFlagEffect
(
tp
,
m
)
==
0
end
Duel
.
RegisterFlagEffect
(
tp
,
m
,
RESET_PHASE
+
PHASE_END
,
EFFECT_FLAG_OATH
,
1
)
function
c
37900012
.
xyzop
(
e
,
tp
,
chk
)
if
chk
==
0
then
return
Duel
.
GetFlagEffect
(
tp
,
37900012
)
==
0
end
Duel
.
RegisterFlagEffect
(
tp
,
37900012
,
RESET_PHASE
+
PHASE_END
,
EFFECT_FLAG_OATH
,
1
)
end
function
cm
.
atlimit
(
e
,
c
)
function
c37900012
.
valcon
(
e
,
re
,
r
,
rp
)
return
r
&
(
REASON_BATTLE
+
REASON_EFFECT
)
~=
0
end
function
c37900012
.
atlimit
(
e
,
c
)
return
c
~=
e
:
GetHandler
()
end
function
c
m
.
tglimit
(
e
,
c
)
function
c
37900012
.
tglimit
(
e
,
c
)
return
c
~=
e
:
GetHandler
()
end
function
cm
.
valcon
(
e
,
re
,
r
,
rp
)
return
r
&
(
REASON_BATTLE
+
REASON_EFFECT
)
~=
0
function
c37900012
.
cost
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
e
:
GetHandler
():
CheckRemoveOverlayCard
(
tp
,
1
,
REASON_COST
)
end
e
:
GetHandler
():
RemoveOverlayCard
(
tp
,
1
,
1
,
REASON_COST
)
end
function
c37900012
.
tg
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
local
g
=
Duel
.
GetFieldGroup
(
tp
,
0
,
LOCATION_MZONE
)
if
chk
==
0
then
return
g
:
GetCount
()
>
0
end
Duel
.
SetOperationInfo
(
0
,
CATEGORY_DESTROY
,
g
,
g
:
GetCount
(),
1
-
tp
,
LOCATION_MZONE
)
Duel
.
SetOperationInfo
(
0
,
CATEGORY_SPECIAL_SUMMON
,
nil
,
1
,
1
-
tp
,
LOCATION_DECK
)
end
function
cm
.
desop
(
e
,
tp
)
local
g
=
Duel
.
GetFieldGroup
(
tp
,
0
,
LOCATION_MZONE
)
local
ct
=
Duel
.
Destroy
(
g
,
REASON_EFFECT
)
if
ct
<=
0
then
return
end
local
sg
=
Duel
.
GetMatchingGroup
(
cm
.
spfilter
,
tp
,
0
,
LOCATION_DECK
,
nil
,
e
,
tp
)
local
ft
=
Duel
.
GetLocationCount
(
1
-
tp
,
LOCATION_MZONE
)
if
#
sg
<=
0
or
ft
<=
0
then
return
end
local
sct
=
math.min
(
#
sg
,
ft
,
ct
)
if
rscon
.
bsdcheck
(
1
-
tp
)
then
sct
=
1
end
if
not
rshint
.
SelectYesNo
(
1
-
tp
,
"sp"
)
then
return
end
rsgf
.
SelectSpecialSummon
(
sg
,
1
-
tp
,
aux
.
TRUE
,
sct
,
sct
,
nil
,{
0
,
1
-
tp
,
1
-
tp
,
false
,
false
,
POS_FACEUP_ATTACK
,
nil
,{
"dis,dise"
,
"fatk"
,
0
}},
e
,
tp
)
function
c37900012
.
t
(
c
,
e
,
tp
)
return
c
:
IsCanBeSpecialSummoned
(
e
,
0
,
tp
,
false
,
false
)
end
function
cm
.
spfilter
(
c
,
e
,
tp
)
return
c
:
IsCanBeSpecialSummoned
(
e
,
0
,
1
-
tp
,
false
,
false
,
POS_FACEUP_ATTACK
,
1
-
tp
)
function
c37900012
.
op
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
c
=
e
:
GetHandler
()
local
g
=
Duel
.
GetFieldGroup
(
tp
,
0
,
LOCATION_MZONE
)
if
g
:
GetCount
()
>
0
then
local
ct
=
Duel
.
Destroy
(
g
,
REASON_EFFECT
)
local
sg
=
Duel
.
GetMatchingGroup
(
c37900012
.
t
,
tp
,
0
,
LOCATION_DECK
,
nil
,
e
,
tp
)
if
ct
>
0
and
sg
:
GetCount
()
>
0
and
Duel
.
GetLocationCount
(
1
-
tp
,
LOCATION_MZONE
)
>
0
and
Duel
.
SelectYesNo
(
1
-
tp
,
aux
.
Stringid
(
37900012
,
0
))
then
Duel
.
BreakEffect
()
local
ct2
=
Duel
.
GetLocationCount
(
1
-
tp
,
LOCATION_MZONE
)
if
ct
>
ct2
then
ct
=
ct2
end
if
ct
>
1
and
Duel
.
IsPlayerAffectedByEffect
(
tp
,
59822133
)
then
ct
=
1
end
Duel
.
Hint
(
HINT_SELECTMSG
,
1
-
tp
,
HINTMSG_SPSUMMON
)
local
gg
=
Duel
.
SelectMatchingCard
(
1
-
tp
,
c37900012
.
t
,
tp
,
0
,
LOCATION_DECK
,
ct
,
ct
,
nil
,
e
,
tp
)
if
Duel
.
SpecialSummon
(
gg
,
0
,
1
-
tp
,
1
-
tp
,
false
,
false
,
POS_FACEUP
)
>
0
then
local
tc
=
gg
:
GetFirst
()
while
tc
do
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetType
(
EFFECT_TYPE_SINGLE
)
e1
:
SetCode
(
EFFECT_DISABLE
)
e1
:
SetReset
(
RESET_EVENT
+
RESETS_STANDARD
)
tc
:
RegisterEffect
(
e1
,
true
)
local
e2
=
Effect
.
CreateEffect
(
c
)
e2
:
SetType
(
EFFECT_TYPE_SINGLE
)
e2
:
SetCode
(
EFFECT_DISABLE_EFFECT
)
e2
:
SetValue
(
RESET_TURN_SET
)
e2
:
SetReset
(
RESET_EVENT
+
RESETS_STANDARD
)
tc
:
RegisterEffect
(
e2
,
true
)
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetType
(
EFFECT_TYPE_SINGLE
)
e1
:
SetCode
(
EFFECT_SET_ATTACK_FINAL
)
e1
:
SetValue
(
0
)
e1
:
SetReset
(
RESET_EVENT
+
RESETS_STANDARD
)
tc
:
RegisterEffect
(
e1
,
true
)
tc
=
gg
:
GetNext
()
end
end
end
end
end
\ No newline at end of file
expansions/script/c37900013.lua
View file @
328435de
--隐居地上的月球公主
if
not
pcall
(
function
()
dofile
(
"expansions/script/c37900000.lua"
)
end
)
then
dofile
(
"script/c37900000.lua"
)
end
local
m
,
cm
=
rscf
.
DefineCard
(
37900013
)
function
cm
.
initial_effect
(
c
)
c
:
SetSPSummonOnce
(
m
)
function
c37900013
.
initial_effect
(
c
)
c
:
SetSPSummonOnce
(
37900013
)
c
:
EnableReviveLimit
()
aux
.
AddLinkProcedure
(
c
,
aux
.
FilterBoolFunction
(
Card
.
IsLinkSetCard
,
0x389
),
3
,
3
)
local
e1
=
rsef
.
I
(
c
,
"td"
,
1
,
"td,se,th"
,
nil
,
LOCATION_MZONE
,
nil
,
nil
,
cm
.
tdtg
,
cm
.
tdop
)
local
e3
,
e4
=
rsef
.
SV_Card
(
c
,
"indb,rdamb"
,
1
,
"sr"
,
LOCATION_MZONE
)
local
e5
=
rsef
.
STO
(
c
,
EVENT_TO_GRAVE
,
"sp"
,
nil
,
"sp"
,
"de"
,
nil
,
nil
,
rsop
.
target
(
cm
.
spfilter
,
"sp"
,
rsloc
.
dg
),
cm
.
spop
)
local
e6
=
rsef
.
SV_Card
(
c
,
"lsmat~"
,
1
,
"cd"
)
--extra material
local
e0
=
Effect
.
CreateEffect
(
c
)
e0
:
SetDescription
(
aux
.
Stringid
(
37900013
,
0
))
e0
:
SetType
(
EFFECT_TYPE_FIELD
)
e0
:
SetProperty
(
EFFECT_FLAG_UNCOPYABLE
+
EFFECT_FLAG_IGNORE_IMMUNE
)
e0
:
SetCode
(
EFFECT_SPSUMMON_PROC
)
e0
:
SetRange
(
LOCATION_EXTRA
)
e0
:
SetCondition
(
c37900013
.
linkcon
)
e0
:
SetOperation
(
c37900013
.
linkop
)
e0
:
SetValue
(
SUMMON_TYPE_LINK
)
c
:
RegisterEffect
(
e0
)
local
e2
=
Effect
.
CreateEffect
(
c
)
e2
:
SetDescription
(
aux
.
Stringid
(
m
,
0
))
e2
:
SetType
(
EFFECT_TYPE_FIELD
)
e2
:
SetProperty
(
EFFECT_FLAG_UNCOPYABLE
+
EFFECT_FLAG_IGNORE_IMMUNE
)
e2
:
SetCode
(
EFFECT_SPSUMMON_PROC
)
e2
:
SetRange
(
LOCATION_EXTRA
)
e2
:
SetCondition
(
cm
.
linkcon
)
e2
:
SetOperation
(
cm
.
linkop
)
e2
:
SetValue
(
SUMMON_TYPE_LINK
)
e2
:
SetType
(
EFFECT_TYPE_SINGLE
)
e2
:
SetCode
(
EFFECT_INDESTRUCTABLE_BATTLE
)
e2
:
SetValue
(
1
)
c
:
RegisterEffect
(
e2
)
local
e3
=
e2
:
Clone
()
e3
:
SetCode
(
EFFECT_REFLECT_BATTLE_DAMAGE
)
c
:
RegisterEffect
(
e3
)
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetCategory
(
CATEGORY_SPECIAL_SUMMON
+
CATEGORY_GRAVE_SPSUMMON
)
e1
:
SetType
(
EFFECT_TYPE_SINGLE
+
EFFECT_TYPE_TRIGGER_O
)
e1
:
SetCode
(
EVENT_TO_GRAVE
)
e1
:
SetProperty
(
EFFECT_FLAG_DELAY
)
e1
:
SetTarget
(
c37900013
.
tgtg
)
e1
:
SetOperation
(
c37900013
.
tgop
)
c
:
RegisterEffect
(
e1
)
local
e4
=
Effect
.
CreateEffect
(
c
)
e4
:
SetType
(
EFFECT_TYPE_IGNITION
)
e4
:
SetCode
(
EVENT_FREE_CHAIN
)
e4
:
SetCategory
(
CATEGORY_TODECK
+
CATEGORY_SEARCH
+
CATEGORY_TOHAND
)
e4
:
SetRange
(
LOCATION_MZONE
)
e4
:
SetCountLimit
(
1
)
e4
:
SetTarget
(
c37900013
.
tg
)
e4
:
SetOperation
(
c37900013
.
op
)
c
:
RegisterEffect
(
e4
)
local
e6
=
Effect
.
CreateEffect
(
c
)
e6
:
SetType
(
EFFECT_TYPE_SINGLE
)
e6
:
SetProperty
(
EFFECT_FLAG_CANNOT_DISABLE
+
EFFECT_FLAG_UNCOPYABLE
)
e6
:
SetCode
(
EFFECT_CANNOT_BE_LINK_MATERIAL
)
e6
:
SetValue
(
1
)
c
:
RegisterEffect
(
e6
)
end
function
cm
.
spfilter
(
c
,
e
,
tp
)
return
rscf
.
spfilter2
()(
c
,
e
,
tp
)
and
c
:
IsCode
(
37900098
)
end
function
cm
.
spop
(
e
,
tp
)
rsop
.
SelectSpecialSummon
(
tp
,
aux
.
NecroValleyFilter
(
cm
.
spfilter
),
tp
,
rsloc
.
dg
,
0
,
1
,
1
,
nil
,{},
e
,
tp
)
end
function
cm
.
lmfilter
(
c
,
lc
,
tp
,
og
,
lmat
)
function
c37900013
.
lmfilter
(
c
,
lc
,
tp
,
og
,
lmat
)
return
c
:
IsFaceup
()
and
c
:
IsCanBeLinkMaterial
(
lc
)
and
c
:
IsLinkCode
(
37900098
)
and
Duel
.
GetLocationCountFromEx
(
tp
,
tp
,
c
,
lc
)
>
0
and
aux
.
MustMaterialCheck
(
c
,
tp
,
EFFECT_MUST_BE_LMATERIAL
)
and
(
not
og
or
og
:
IsContains
(
c
))
and
(
not
lmat
or
lmat
==
c
)
end
function
c
m
.
linkcon
(
e
,
c
,
og
,
lmat
,
min
,
max
)
function
c
37900013
.
linkcon
(
e
,
c
,
og
,
lmat
,
min
,
max
)
if
c
==
nil
then
return
true
end
local
tp
=
c
:
GetControler
()
return
Duel
.
IsExistingMatchingCard
(
c
m
.
lmfilter
,
tp
,
LOCATION_MZONE
,
0
,
1
,
nil
,
c
,
tp
,
og
,
lmat
)
return
Duel
.
IsExistingMatchingCard
(
c
37900013
.
lmfilter
,
tp
,
LOCATION_MZONE
,
0
,
1
,
nil
,
c
,
tp
,
og
,
lmat
)
end
function
c
m
.
linkop
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
c
,
og
,
lmat
,
min
,
max
)
local
mg
=
Duel
.
SelectMatchingCard
(
tp
,
c
m
.
lmfilter
,
tp
,
LOCATION_MZONE
,
0
,
1
,
1
,
nil
,
c
,
tp
,
og
,
lmat
)
function
c
37900013
.
linkop
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
c
,
og
,
lmat
,
min
,
max
)
local
mg
=
Duel
.
SelectMatchingCard
(
tp
,
c
37900013
.
lmfilter
,
tp
,
LOCATION_MZONE
,
0
,
1
,
1
,
nil
,
c
,
tp
,
og
,
lmat
)
c
:
SetMaterial
(
mg
)
Duel
.
SendtoGrave
(
mg
,
REASON_MATERIAL
+
REASON_LINK
)
end
function
cm
.
tdtg
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
Duel
.
GetFieldGroupCount
(
tp
,
LOCATION_DECK
,
0
)
>=
3
and
Duel
.
IsExistingMatchingCard
(
Card
.
IsAbleToDeck
,
tp
,
LOCATION_HAND
,
0
,
1
,
nil
)
end
Duel
.
SetTargetPlayer
(
tp
)
Duel
.
SetOperationInfo
(
0
,
CATEGORY_TODECK
,
nil
,
1
,
0
,
LOCATION_HAND
)
Duel
.
SetOperationInfo
(
0
,
CATEGORY_TOHAND
,
nil
,
1
,
0
,
LOCATION_DECK
)
function
c37900013
.
tgfilter
(
c
,
e
,
tp
)
return
c
:
IsCode
(
37900098
)
and
c
:
IsCanBeSpecialSummoned
(
e
,
0
,
tp
,
false
,
false
)
and
Duel
.
GetLocationCount
(
tp
,
LOCATION_MZONE
)
>
0
end
function
cm
.
thfilter
(
c
)
return
c
:
IsSetCard
(
0x389
)
and
c
:
IsAbleToHand
()
function
c37900013
.
tgtg
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
Duel
.
IsExistingMatchingCard
(
c37900013
.
tgfilter
,
tp
,
LOCATION_DECK
+
LOCATION_GRAVE
,
0
,
1
,
nil
,
e
,
tp
)
end
Duel
.
SetOperationInfo
(
0
,
CATEGORY_SPECIAL_SUMMON
,
nil
,
1
,
tp
,
LOCATION_DECK
+
LOCATION_GRAVE
)
end
function
cm
.
tdop
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
rsop
.
SelectToDeck
(
tp
,
Card
.
IsAbleToDeck
,
tp
,
LOCATION_HAND
,
0
,
1
,
1
,
nil
,{
nil
,
1
,
REASON_EFFECT
})
if
not
rsop
.
CheckOperateSuccess
(
LOCATION_DECK
)
then
return
end
Duel
.
ShuffleDeck
(
tp
)
local
p
=
Duel
.
GetChainInfo
(
0
,
CHAININFO_TARGET_PLAYER
)
Duel
.
ConfirmDecktop
(
p
,
3
)
local
g
=
Duel
.
GetDecktopGroup
(
p
,
3
)
local
sg
=
g
:
Filter
(
cm
.
thfilter
,
nil
)
if
#
sg
>
0
then
Duel
.
SendtoHand
(
sg
,
nil
,
REASON_EFFECT
)
Duel
.
ConfirmCards
(
1
-
p
,
sg
)
Duel
.
ShuffleHand
(
p
)
function
c37900013
.
tgop
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_SPSUMMON
)
local
g
=
Duel
.
SelectMatchingCard
(
tp
,
aux
.
NecroValleyFilter
(
c37900013
.
tgfilter
,
e
,
tp
),
tp
,
LOCATION_DECK
+
LOCATION_GRAVE
,
0
,
1
,
1
,
nil
,
e
,
tp
)
if
g
:
GetCount
()
>
0
then
Duel
.
SpecialSummon
(
g
,
0
,
tp
,
tp
,
false
,
false
,
POS_FACEUP
)
end
Duel
.
ShuffleDeck
(
p
)
end
function
c37900013
.
tg
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
local
g
=
Duel
.
GetDecktopGroup
(
tp
,
3
)
local
fg
=
g
:
Filter
(
Card
.
IsAbleToHand
,
nil
)
if
chk
==
0
then
return
Duel
.
IsExistingMatchingCard
(
Card
.
IsAbleToDeck
,
tp
,
LOCATION_HAND
,
0
,
1
,
nil
)
and
fg
:
GetCount
()
==
3
end
Duel
.
SetOperationInfo
(
0
,
CATEGORY_TODECK
,
nil
,
1
,
tp
,
LOCATION_HAND
)
end
function
c37900013
.
q
(
c
)
return
c
:
IsAbleToHand
()
and
c
:
IsSetCard
(
0x389
)
end
function
c37900013
.
op
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
ag
=
Duel
.
GetDecktopGroup
(
tp
,
3
)
local
fg
=
ag
:
Filter
(
Card
.
IsAbleToHand
,
nil
)
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_TODECK
)
local
g
=
Duel
.
SelectMatchingCard
(
tp
,
Card
.
IsAbleToDeck
,
tp
,
LOCATION_HAND
,
0
,
1
,
1
,
nil
)
if
g
:
GetCount
()
>
0
and
Duel
.
SendtoDeck
(
g
,
tp
,
1
,
REASON_EFFECT
)
>
0
and
fg
:
GetCount
()
==
3
then
Duel
.
ConfirmDecktop
(
tp
,
3
)
Duel
.
DisableShuffleCheck
()
if
fg
:
IsExists
(
c37900013
.
q
,
1
,
nil
)
then
local
sg
=
fg
:
Filter
(
c37900013
.
q
,
nil
)
Duel
.
SendtoHand
(
sg
,
nil
,
REASON_EFFECT
)
Duel
.
ConfirmCards
(
1
-
tp
,
sg
)
Duel
.
ShuffleHand
(
tp
)
g
:
Sub
(
sg
)
end
Duel
.
ShuffleDeck
(
tp
)
end
end
\ No newline at end of file
expansions/script/c37900014.lua
View file @
328435de
--永远的巫女
if
not
pcall
(
function
()
dofile
(
"expansions/script/c37900000.lua"
)
end
)
then
dofile
(
"script/c37900000.lua"
)
end
local
m
,
cm
=
rscf
.
DefineCard
(
37900014
)
function
cm
.
initial_effect
(
c
)
--xyz summon
aux
.
AddXyzProcedure
(
c
,
nil
,
6
,
2
,
cm
.
ovfilter
,
aux
.
Stringid
(
m
,
0
),
2
,
cm
.
xyzop
)
function
c37900014
.
initial_effect
(
c
)
aux
.
AddXyzProcedure
(
c
,
nil
,
6
,
2
,
c37900014
.
ovfilter
,
aux
.
Stringid
(
37900014
,
0
),
2
,
c37900014
.
xyzop
)
c
:
EnableReviveLimit
()
local
e3
=
rsef
.
I
(
c
,
nil
,
1
,
nil
,
nil
,
LOCATION_MZONE
,
nil
,
rscost
.
rmxmat
(
1
),
nil
,
cm
.
op
)
--
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetType
(
EFFECT_TYPE_SINGLE
)
e1
:
SetCode
(
EFFECT_INDESTRUCTABLE_BATTLE
)
...
...
@@ -17,44 +11,58 @@ function cm.initial_effect(c)
e2
:
SetType
(
EFFECT_TYPE_SINGLE
)
e2
:
SetCode
(
EFFECT_AVOID_BATTLE_DAMAGE
)
e2
:
SetValue
(
1
)
c
:
RegisterEffect
(
e2
)
--def Up
c
:
RegisterEffect
(
e2
)
local
e3
=
Effect
.
CreateEffect
(
c
)
e3
:
SetType
(
EFFECT_TYPE_IGNITION
)
e3
:
SetCode
(
EVENT_FREE_CHAIN
)
e3
:
SetRange
(
LOCATION_MZONE
)
e3
:
SetCountLimit
(
1
)
e3
:
SetCost
(
c37900014
.
cost
)
e3
:
SetTarget
(
c37900014
.
tg
)
e3
:
SetOperation
(
c37900014
.
op
)
c
:
RegisterEffect
(
e3
)
local
e4
=
Effect
.
CreateEffect
(
c
)
e4
:
SetDescription
(
aux
.
Stringid
(
m
,
0
))
e4
:
SetCategory
(
CATEGORY_DEFCHANGE
)
e4
:
SetType
(
EFFECT_TYPE_SINGLE
+
EFFECT_TYPE_TRIGGER_F
)
e4
:
SetCode
(
EVENT_BATTLE_DESTROYING
)
e4
:
SetCondition
(
aux
.
bdocon
)
e4
:
SetOperation
(
c
m
.
defop
)
c
:
RegisterEffect
(
e4
)
e4
:
SetOperation
(
c
37900014
.
op4
)
c
:
RegisterEffect
(
e4
)
end
function
cm
.
defop
(
e
,
tp
)
local
c
=
rscf
.
GetFaceUpSelf
(
e
)
if
not
c
then
return
end
local
e1
=
rscf
.
QuickBuff
(
c
,
"def+"
,
1000
)
end
function
cm
.
ovfilter
(
c
)
function
c37900014
.
ovfilter
(
c
)
return
c
:
IsFaceup
()
and
c
:
IsCode
(
37900092
)
end
function
c
m
.
xyzop
(
e
,
tp
,
chk
)
if
chk
==
0
then
return
Duel
.
GetFlagEffect
(
tp
,
m
)
==
0
end
Duel
.
RegisterFlagEffect
(
tp
,
m
,
RESET_PHASE
+
PHASE_END
,
EFFECT_FLAG_OATH
,
1
)
function
c
37900014
.
xyzop
(
e
,
tp
,
chk
)
if
chk
==
0
then
return
Duel
.
GetFlagEffect
(
tp
,
37900014
)
==
0
end
Duel
.
RegisterFlagEffect
(
tp
,
37900014
,
RESET_PHASE
+
PHASE_END
,
EFFECT_FLAG_OATH
,
1
)
end
function
cm
.
op
(
e
,
tp
)
local
c
=
e
:
GetHandler
()
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetType
(
EFFECT_TYPE_FIELD
)
e1
:
SetCode
(
EFFECT_INDESTRUCTABLE_COUNT
)
e1
:
SetTargetRange
(
0
,
LOCATION_MZONE
)
e1
:
SetReset
(
rsrst
.
ep
)
e1
:
SetValue
(
cm
.
indct
)
--Duel.RegisterEffect(e1,tp)
function
c37900014
.
op4
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
c
=
e
:
GetHandler
()
if
c
:
IsRelateToEffect
(
e
)
and
c
:
IsFaceup
()
then
local
e2
=
rscf
.
QuickBuff
(
c
,
"atka"
,
1
,
"rst"
,
rsrst
.
std_ep
)
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetType
(
EFFECT_TYPE_SINGLE
)
e1
:
SetCode
(
EFFECT_UPDATE_DEFENSE
)
e1
:
SetValue
(
1000
)
e1
:
SetReset
(
RESET_EVENT
+
RESETS_STANDARD
+
RESET_DISABLE
)
c
:
RegisterEffect
(
e1
)
end
end
function
cm
.
indct
(
e
,
re
,
r
,
rp
)
if
bit
.
band
(
r
,
REASON_BATTLE
)
~=
0
then
return
1
else
return
0
end
function
c37900014
.
cost
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
e
:
GetHandler
():
CheckRemoveOverlayCard
(
tp
,
1
,
REASON_COST
)
end
e
:
GetHandler
():
RemoveOverlayCard
(
tp
,
1
,
1
,
REASON_COST
)
end
function
c37900014
.
tg
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
true
end
end
function
c37900014
.
op
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
c
=
e
:
GetHandler
()
if
c
:
IsRelateToEffect
(
e
)
and
c
:
IsFaceup
()
then
local
e4
=
Effect
.
CreateEffect
(
c
)
e4
:
SetType
(
EFFECT_TYPE_SINGLE
)
e4
:
SetCode
(
EFFECT_ATTACK_ALL
)
e4
:
SetProperty
(
EFFECT_FLAG_CANNOT_DISABLE
)
e4
:
SetValue
(
1
)
e4
:
SetReset
(
RESET_EVENT
+
RESETS_STANDARD
+
RESET_PHASE
+
PHASE_END
)
c
:
RegisterEffect
(
e4
)
end
end
\ No newline at end of file
expansions/script/c37900015.lua
View file @
328435de
--幽人的庭师
if
not
pcall
(
function
()
dofile
(
"expansions/script/c37900000.lua"
)
end
)
then
dofile
(
"script/c37900000.lua"
)
end
local
m
,
cm
=
rscf
.
DefineCard
(
37900015
)
function
cm
.
initial_effect
(
c
)
--xyz summon
aux
.
AddXyzProcedure
(
c
,
aux
.
FilterBoolFunction
(
Card
.
IsRace
,
RACE_WARRIOR
),
7
,
2
,
cm
.
ovfilter
,
aux
.
Stringid
(
m
,
0
),
2
,
cm
.
xyzop
)
function
c37900015
.
initial_effect
(
c
)
aux
.
AddXyzProcedure
(
c
,
aux
.
FilterBoolFunction
(
Card
.
IsRace
,
RACE_WARRIOR
),
7
,
2
,
c37900015
.
ovfilter
,
aux
.
Stringid
(
37900015
,
0
),
2
,
c37900015
.
xyzop
)
c
:
EnableReviveLimit
()
local
e1
=
rsef
.
SV_Card
(
c
,
"im"
,
cm
.
imval
,
"sr"
,
LOCATION_MZONE
)
local
e2
=
rsef
.
SV_Card
(
c
,
"indb"
,
cm
.
dval
,
"sr"
,
LOCATION_MZONE
)
local
e3
=
rsef
.
I
(
c
,
"pos"
,
1
,
"pos"
,
nil
,
LOCATION_MZONE
,
nil
,
rscost
.
rmxmat
(
1
),
rsop
.
target
(
cm
.
pfilter
,
"pos"
,
LOCATION_MZONE
,
LOCATION_MZONE
,
true
,
true
,
c
),
cm
.
pop
)
local
e4
=
rsef
.
STO
(
c
,
EVENT_BATTLE_DESTROYING
,
"def"
,
nil
,
"def"
,
nil
,
aux
.
bdcon
,
nil
,
nil
,
cm
.
bdop
)
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetType
(
EFFECT_TYPE_SINGLE
)
e1
:
SetCode
(
EFFECT_IMMUNE_EFFECT
)
e1
:
SetProperty
(
EFFECT_FLAG_SINGLE_RANGE
)
e1
:
SetRange
(
LOCATION_MZONE
)
e1
:
SetValue
(
c37900015
.
ind2
)
c
:
RegisterEffect
(
e1
)
local
e2
=
Effect
.
CreateEffect
(
c
)
e2
:
SetType
(
EFFECT_TYPE_SINGLE
)
e2
:
SetCode
(
EFFECT_INDESTRUCTABLE_EFFECT
)
e2
:
SetValue
(
c37900015
.
ind1
)
c
:
RegisterEffect
(
e2
)
local
e3
=
Effect
.
CreateEffect
(
c
)
e3
:
SetType
(
EFFECT_TYPE_IGNITION
)
e3
:
SetCode
(
EVENT_FREE_CHAIN
)
e3
:
SetRange
(
LOCATION_MZONE
)
e3
:
SetCountLimit
(
1
)
e3
:
SetCost
(
c37900015
.
cost
)
e3
:
SetTarget
(
c37900015
.
tg
)
e3
:
SetOperation
(
c37900015
.
op
)
c
:
RegisterEffect
(
e3
)
end
function
c
m
.
ovfilter
(
c
)
function
c
37900015
.
ovfilter
(
c
)
return
c
:
IsFaceup
()
and
c
:
IsCode
(
37900095
)
end
function
c
m
.
xyzop
(
e
,
tp
,
chk
)
if
chk
==
0
then
return
Duel
.
GetFlagEffect
(
tp
,
m
)
==
0
end
Duel
.
RegisterFlagEffect
(
tp
,
m
,
RESET_PHASE
+
PHASE_END
,
EFFECT_FLAG_OATH
,
1
)
function
c
37900015
.
xyzop
(
e
,
tp
,
chk
)
if
chk
==
0
then
return
Duel
.
GetFlagEffect
(
tp
,
37900015
)
==
0
end
Duel
.
RegisterFlagEffect
(
tp
,
37900015
,
RESET_PHASE
+
PHASE_END
,
EFFECT_FLAG_OATH
,
1
)
end
function
cm
.
imval
(
e
,
re
)
local
def1
,
def2
=
re
:
GetHandler
():
GetBaseDefense
(),
e
:
GetHandler
():
GetDefense
()
if
def1
<
0
or
def2
<
0
then
return
false
end
return
re
:
IsActiveType
(
TYPE_MONSTER
)
and
def1
<
def2
function
c37900015
.
ind1
(
e
,
c
)
local
def1
=
e
:
GetHandler
():
GetDefense
()
return
c
:
GetDefense
()
>
def1
and
c
:
IsFaceup
()
end
function
cm
.
dval
(
e
,
c
)
local
def
=
e
:
GetHandler
():
GetDefense
()
if
def
<
0
then
return
false
end
if
c
:
IsDefensePos
()
and
Duel
.
GetAttacker
()
==
c
then
return
c
:
IsAttackAbove
(
def
+
1
)
else
return
c
:
IsDefenseAbove
(
def
+
1
)
end
function
c37900015
.
ind2
(
e
,
te
)
return
te
:
IsActiveType
(
TYPE_MONSTER
)
and
te
:
GetHandler
():
GetBaseDefense
()
<
e
:
GetHandler
():
GetDefense
()
end
function
cm
.
pfilter
(
c
)
return
not
c
:
IsAttackPos
()
and
c
:
IsCanChangePosition
()
and
c
:
IsType
(
TYPE_EFFECT
)
function
c37900015
.
cost
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
e
:
GetHandler
():
CheckRemoveOverlayCard
(
tp
,
1
,
REASON_COST
)
end
e
:
GetHandler
():
RemoveOverlayCard
(
tp
,
1
,
1
,
REASON_COST
)
end
function
cm
.
pop
(
e
,
tp
)
local
c
=
rscf
.
GetFaceUpSelf
(
e
)
local
g
=
Duel
.
GetMatchingGroup
(
cm
.
pfilter
,
tp
,
LOCATION_MZONE
,
LOCATION_MZONE
,
c
)
if
#
g
<=
0
or
Duel
.
ChangePosition
(
g
,
POS_FACEUP_ATTACK
)
<=
0
or
not
c
then
return
end
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetType
(
EFFECT_TYPE_SINGLE
+
EFFECT_TYPE_CONTINUOUS
)
e1
:
SetCode
(
EVENT_BATTLE_START
)
e1
:
SetCondition
(
cm
.
tdcon
)
e1
:
SetOperation
(
cm
.
tdop
)
e1
:
SetReset
(
rsrst
.
std_ep
)
c
:
RegisterEffect
(
e1
)
function
c37900015
.
q
(
c
)
return
c
:
IsFaceup
()
and
c
:
IsType
(
TYPE_EFFECT
)
and
c
:
IsPosition
(
POS_FACEUP_DEFENSE
)
and
c
:
IsCanChangePosition
()
end
function
c
m
.
tdcon
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
c
=
e
:
GetHandler
()
local
tc
=
c
:
GetBattleTarget
(
)
local
def
=
math.max
(
c
:
GetDefense
()
-
1
,
0
)
return
tc
and
tc
:
IsFaceup
()
and
(
tc
:
IsDefenseBelow
(
def
)
or
tc
:
IsAttackBelow
(
def
))
function
c
37900015
.
tg
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
local
c
=
e
:
GetHandler
()
local
g
=
Duel
.
GetMatchingGroup
(
c37900015
.
q
,
tp
,
LOCATION_MZONE
,
LOCATION_MZONE
,
c
)
if
chk
==
0
then
return
g
:
GetCount
()
>
0
end
Duel
.
SetOperationInfo
(
0
,
CATEGORY_POSITION
,
g
,
g
:
GetCount
(),
0
,
0
)
end
function
cm
.
tdop
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
rshint
.
Card
(
m
)
local
tc
=
e
:
GetHandler
():
GetBattleTarget
()
local
atk
=
tc
:
GetBaseAttack
()
if
Duel
.
SendtoDeck
(
tc
,
nil
,
2
,
REASON_EFFECT
)
>
0
and
tc
:
IsLocation
(
rsloc
.
de
)
and
atk
>
0
then
Duel
.
BreakEffect
()
Duel
.
Damage
(
1
-
tp
,
atk
,
REASON_EFFECT
)
function
c37900015
.
op
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
c
=
e
:
GetHandler
()
local
g
=
Duel
.
GetMatchingGroup
(
c37900015
.
q
,
tp
,
LOCATION_MZONE
,
LOCATION_MZONE
,
c
)
if
g
:
GetCount
()
>
0
then
if
Duel
.
ChangePosition
(
g
,
POS_FACEUP_ATTACK
)
>
0
and
c
:
IsRelateToEffect
(
e
)
and
c
:
IsFaceup
()
then
local
e3
=
Effect
.
CreateEffect
(
c
)
e3
:
SetType
(
EFFECT_TYPE_SINGLE
+
EFFECT_TYPE_CONTINUOUS
)
e3
:
SetCode
(
EVENT_BATTLE_START
)
e3
:
SetProperty
(
EFFECT_FLAG_CANNOT_DISABLE
)
e3
:
SetCondition
(
c37900015
.
condition
)
e3
:
SetTarget
(
c37900015
.
target
)
e3
:
SetOperation
(
c37900015
.
thop
)
e3
:
SetReset
(
RESET_EVENT
+
RESETS_STANDARD
+
RESET_PHASE
+
PHASE_END
)
c
:
RegisterEffect
(
e3
)
end
end
end
function
cm
.
bdop
(
e
,
tp
)
local
c
=
rscf
.
GetFaceUpSelf
(
e
)
if
not
c
then
return
end
local
e1
=
rscf
.
QuickBuff
(
c
,
"def+"
,
1000
)
function
c37900015
.
cfilter
(
c
)
return
(
c
:
IsFaceup
()
or
c
:
IsLocation
(
LOCATION_GRAVE
))
and
c
:
IsCode
(
89631139
)
end
function
c37900015
.
condition
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
c
=
e
:
GetHandler
()
local
bc
=
c
:
GetBattleTarget
()
return
c
:
GetDefense
()
>
bc
:
GetAttack
()
or
(
not
bc
:
IsType
(
TYPE_LINK
)
and
c
:
GetDefense
()
>
bc
:
GetDefense
())
end
function
c37900015
.
target
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
local
c
=
e
:
GetHandler
()
local
bc
=
c
:
GetBattleTarget
()
if
chk
==
0
then
return
bc
:
IsAbleToDeck
()
end
Duel
.
SetOperationInfo
(
0
,
CATEGORY_TODECK
,
bc
,
1
,
1
-
tp
,
LOCATION_MZONE
)
end
function
c37900015
.
thop
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
c
=
e
:
GetHandler
()
local
bc
=
c
:
GetBattleTarget
()
if
bc
:
IsRelateToBattle
(
e
)
then
if
Duel
.
SendtoDeck
(
bc
,
nil
,
2
,
REASON_EFFECT
)
>
0
then
local
atk
=
bc
:
GetBaseAttack
()
if
atk
>
0
then
Duel
.
Damage
(
1
-
tp
,
atk
,
REASON_EFFECT
)
end
end
end
end
\ No newline at end of file
expansions/script/c37900016.lua
View file @
328435de
--完美潇洒的女仆长
if
not
pcall
(
function
()
dofile
(
"expansions/script/c37900000.lua"
)
end
)
then
dofile
(
"script/c37900000.lua"
)
end
local
m
,
cm
=
rscf
.
DefineCard
(
37900016
)
function
cm
.
initial_effect
(
c
)
c
:
SetSPSummonOnce
(
m
)
function
c37900016
.
initial_effect
(
c
)
c
:
SetSPSummonOnce
(
37900016
)
c
:
EnableReviveLimit
()
aux
.
AddLinkProcedure
(
c
,
aux
.
FilterBoolFunction
(
Card
.
IsLinkSetCard
,
0x389
),
3
,
3
)
local
e1
=
rsef
.
SV_Card
(
c
,
"lsmat~"
,
1
,
"cd"
)
local
e3
=
rsef
.
FV_Player
(
c
,
"act~"
,
1
,
nil
,{
0
,
1
},
nil
,
LOCATION_MZONE
,
rscon
.
phbp
)
local
e6
=
rsef
.
I
(
c
,
"sp"
,
1
,
"td,sp"
,
nil
,
LOCATION_MZONE
,
nil
,
nil
,
rsop
.
target
({
Card
.
IsAbleToDeck
,
"td"
,
LOCATION_HAND
},
{
cm
.
spfilter
,
"sp"
,
rsloc
.
hg
}),
cm
.
spop
)
--extra material
local
e2
=
Effect
.
CreateEffect
(
c
)
e2
:
SetDescription
(
aux
.
Stringid
(
m
,
0
))
e2
:
SetDescription
(
aux
.
Stringid
(
37900016
,
0
))
e2
:
SetType
(
EFFECT_TYPE_FIELD
)
e2
:
SetProperty
(
EFFECT_FLAG_UNCOPYABLE
+
EFFECT_FLAG_IGNORE_IMMUNE
)
e2
:
SetCode
(
EFFECT_SPSUMMON_PROC
)
e2
:
SetRange
(
LOCATION_EXTRA
)
e2
:
SetCondition
(
c
m
.
linkcon
)
e2
:
SetOperation
(
c
m
.
linkop
)
e2
:
SetCondition
(
c
37900016
.
linkcon
)
e2
:
SetOperation
(
c
37900016
.
linkop
)
e2
:
SetValue
(
SUMMON_TYPE_LINK
)
c
:
RegisterEffect
(
e2
)
--battle
local
e4
=
Effect
.
CreateEffect
(
c
)
e4
:
SetType
(
EFFECT_TYPE_SINGLE
)
e4
:
SetCode
(
EFFECT_REFLECT_BATTLE_DAMAGE
)
...
...
@@ -33,27 +23,66 @@ function cm.initial_effect(c)
e5
:
SetCode
(
EFFECT_INDESTRUCTABLE_BATTLE
)
e5
:
SetValue
(
1
)
c
:
RegisterEffect
(
e5
)
local
e3
=
Effect
.
CreateEffect
(
c
)
e3
:
SetType
(
EFFECT_TYPE_FIELD
)
e3
:
SetProperty
(
EFFECT_FLAG_PLAYER_TARGET
)
e3
:
SetCode
(
EFFECT_CANNOT_ACTIVATE
)
e3
:
SetRange
(
LOCATION_MZONE
)
e3
:
SetTargetRange
(
0
,
1
)
e3
:
SetCondition
(
c37900016
.
actcon
)
e3
:
SetValue
(
1
)
c
:
RegisterEffect
(
e3
)
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetType
(
EFFECT_TYPE_IGNITION
)
e1
:
SetCode
(
EVENT_FREE_CHAIN
)
e1
:
SetCategory
(
CATEGORY_TOHAND
+
CATEGORY_GRAVE_SPSUMMON
+
CATEGORY_SPECIAL_SUMMON
)
e1
:
SetRange
(
LOCATION_MZONE
)
e1
:
SetCountLimit
(
1
)
e1
:
SetTarget
(
c37900016
.
tg
)
e1
:
SetOperation
(
c37900016
.
op
)
c
:
RegisterEffect
(
e1
)
local
e6
=
Effect
.
CreateEffect
(
c
)
e6
:
SetType
(
EFFECT_TYPE_SINGLE
)
e6
:
SetProperty
(
EFFECT_FLAG_CANNOT_DISABLE
+
EFFECT_FLAG_UNCOPYABLE
)
e6
:
SetCode
(
EFFECT_CANNOT_BE_LINK_MATERIAL
)
e6
:
SetValue
(
1
)
c
:
RegisterEffect
(
e6
)
end
function
c
m
.
lmfilter
(
c
,
lc
,
tp
,
og
,
lmat
)
function
c
37900016
.
lmfilter
(
c
,
lc
,
tp
,
og
,
lmat
)
return
c
:
IsFaceup
()
and
c
:
IsCanBeLinkMaterial
(
lc
)
and
c
:
IsLinkCode
(
37900093
)
and
Duel
.
GetLocationCountFromEx
(
tp
,
tp
,
c
,
lc
)
>
0
and
aux
.
MustMaterialCheck
(
c
,
tp
,
EFFECT_MUST_BE_LMATERIAL
)
and
(
not
og
or
og
:
IsContains
(
c
))
and
(
not
lmat
or
lmat
==
c
)
end
function
c
m
.
linkcon
(
e
,
c
,
og
,
lmat
,
min
,
max
)
function
c
37900016
.
linkcon
(
e
,
c
,
og
,
lmat
,
min
,
max
)
if
c
==
nil
then
return
true
end
local
tp
=
c
:
GetControler
()
return
Duel
.
IsExistingMatchingCard
(
c
m
.
lmfilter
,
tp
,
LOCATION_MZONE
,
0
,
1
,
nil
,
c
,
tp
,
og
,
lmat
)
return
Duel
.
IsExistingMatchingCard
(
c
37900016
.
lmfilter
,
tp
,
LOCATION_MZONE
,
0
,
1
,
nil
,
c
,
tp
,
og
,
lmat
)
end
function
c
m
.
linkop
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
c
,
og
,
lmat
,
min
,
max
)
local
mg
=
Duel
.
SelectMatchingCard
(
tp
,
c
m
.
lmfilter
,
tp
,
LOCATION_MZONE
,
0
,
1
,
1
,
nil
,
c
,
tp
,
og
,
lmat
)
function
c
37900016
.
linkop
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
c
,
og
,
lmat
,
min
,
max
)
local
mg
=
Duel
.
SelectMatchingCard
(
tp
,
c
37900016
.
lmfilter
,
tp
,
LOCATION_MZONE
,
0
,
1
,
1
,
nil
,
c
,
tp
,
og
,
lmat
)
c
:
SetMaterial
(
mg
)
Duel
.
SendtoGrave
(
mg
,
REASON_MATERIAL
+
REASON_LINK
)
end
function
cm
.
spfilter
(
c
,
e
,
tp
)
return
c
:
IsSetCard
(
0x389
)
and
rscf
.
spfilter2
()(
c
,
e
,
tp
)
function
c37900016
.
actcon
(
e
)
local
ph
=
Duel
.
GetCurrentPhase
()
return
Duel
.
GetTurnPlayer
()
==
e
:
GetHandler
():
GetControler
()
and
ph
>=
PHASE_BATTLE_START
and
ph
<=
PHASE_BATTLE
end
function
cm
.
spop
(
e
,
tp
)
if
rsop
.
SelectOperate
(
"tdb"
,
tp
,
Card
.
IsAbleToDeck
,
tp
,
LOCATION_HAND
,
0
,
1
,
1
,
nil
,{})
>
0
and
rsop
.
CheckOperateCorrectly
(
LOCATION_DECK
)
then
rsop
.
SelectOperate
(
"sp"
,
tp
,
aux
.
NecroValleyFilter
(
cm
.
spfilter
),
tp
,
rsloc
.
hg
,
0
,
1
,
1
,
nil
,{},
e
,
tp
)
end
function
c37900016
.
q
(
c
,
e
,
tp
)
return
c
:
IsSetCard
(
0x389
)
and
c
:
IsCanBeSpecialSummoned
(
e
,
0
,
tp
,
false
,
false
)
and
Duel
.
GetLocationCount
(
tp
,
LOCATION_MZONE
)
>
0
end
function
c37900016
.
tg
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
Duel
.
IsExistingMatchingCard
(
Card
.
IsAbleToDeck
,
tp
,
LOCATION_HAND
,
0
,
1
,
nil
)
and
Duel
.
IsExistingMatchingCard
(
c37900016
.
q
,
tp
,
LOCATION_GRAVE
+
LOCATION_HAND
,
0
,
1
,
nil
,
e
,
tp
)
end
Duel
.
SetOperationInfo
(
0
,
CATEGORY_TODECK
,
nil
,
1
,
tp
,
LOCATION_HAND
)
Duel
.
SetOperationInfo
(
0
,
CATEGORY_SPECIAL_SUMMON
,
nil
,
1
,
tp
,
LOCATION_GRAVE
+
LOCATION_HAND
)
end
function
c37900016
.
op
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_TODECK
)
local
g
=
Duel
.
SelectMatchingCard
(
tp
,
Card
.
IsAbleToDeck
,
tp
,
LOCATION_HAND
,
0
,
1
,
1
,
nil
)
if
g
:
GetCount
()
>
0
and
Duel
.
SendtoDeck
(
g
,
tp
,
SEQ_DECKBOTTOM
,
REASON_EFFECT
)
>
0
and
Duel
.
IsExistingMatchingCard
(
c37900016
.
q
,
tp
,
LOCATION_GRAVE
+
LOCATION_HAND
,
0
,
1
,
nil
,
e
,
tp
)
then
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_SPSUMMON
)
local
sg
=
Duel
.
SelectMatchingCard
(
tp
,
aux
.
NecroValleyFilter
(
c37900016
.
q
,
e
,
tp
),
tp
,
LOCATION_GRAVE
+
LOCATION_HAND
,
0
,
1
,
1
,
nil
,
e
,
tp
)
if
sg
:
GetCount
()
>
0
then
Duel
.
SpecialSummon
(
sg
,
0
,
tp
,
tp
,
false
,
false
,
POS_FACEUP
)
end
end
end
\ No newline at end of file
expansions/script/c37900017.lua
View file @
328435de
--不明的魔法之元
if
not
pcall
(
function
()
dofile
(
"expansions/script/c37900000.lua"
)
end
)
then
dofile
(
"script/c37900000.lua"
)
end
local
m
,
cm
=
rscf
.
DefineCard
(
37900017
)
function
cm
.
initial_effect
(
c
)
--xyz summon
aux
.
AddXyzProcedure
(
c
,
nil
,
6
,
2
,
cm
.
ovfilter
,
aux
.
Stringid
(
m
,
0
),
2
,
cm
.
xyzop
)
function
c37900017
.
initial_effect
(
c
)
aux
.
AddXyzProcedure
(
c
,
nil
,
6
,
2
,
c37900017
.
ovfilter
,
aux
.
Stringid
(
37900017
,
0
),
2
,
c37900017
.
xyzop
)
c
:
EnableReviveLimit
()
--[[local e1 = rsef.QO(c,nil,"axmat",1,nil,nil,LOCATION_MZONE,nil,
rscost.rmxmat(1),rsop.target({Card.IsCanOverlay,"axmat",
LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,c},
{cm.xyzfilter,"dum"}),cm.matop)]]
--
local
e1
=
rsef
.
I
(
c
,
"atk"
,
1
,
"atk"
,
nil
,
LOCATION_MZONE
,
nil
,
rscost
.
rmxmat
(
1
),
nil
,
cm
.
atkop
)
local
e2
=
rsef
.
FV_Card
(
c
,
"im"
,
cm
.
imval
,
aux
.
TargetBoolFunction
(
Card
.
IsType
,
TYPE_SPELL
+
TYPE_TRAP
),
{
LOCATION_ONFIELD
,
0
},
nil
,
LOCATION_MZONE
)
local
e3
=
rsef
.
SV_Card
(
c
,
"indct"
,
rsval
.
indbae
(),
"sr"
,
LOCATION_MZONE
,
nil
,
nil
,
nil
,
2
)
end
function
cm
.
atkop
(
e
,
tp
)
local
e1
=
rsef
.
FV_Card
({
e
:
GetHandler
(),
tp
},
"def+"
,
500
,
aux
.
TargetBoolFunction
(
Card
.
IsSetCard
,
0x389
),{
LOCATION_MZONE
,
0
})
end
function
cm
.
ovfilter
(
c
)
local
e0
=
Effect
.
CreateEffect
(
c
)
e0
:
SetType
(
EFFECT_TYPE_SINGLE
)
e0
:
SetProperty
(
EFFECT_FLAG_SINGLE_RANGE
)
e0
:
SetRange
(
LOCATION_MZONE
)
e0
:
SetCode
(
EFFECT_INDESTRUCTABLE_COUNT
)
e0
:
SetCountLimit
(
2
)
e0
:
SetValue
(
c37900017
.
valcon
)
c
:
RegisterEffect
(
e0
)
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetDescription
(
aux
.
Stringid
(
37900017
,
1
))
e1
:
SetType
(
EFFECT_TYPE_SINGLE
)
e1
:
SetCode
(
EFFECT_IMMUNE_EFFECT
)
e1
:
SetProperty
(
EFFECT_FLAG_SINGLE_RANGE
+
EFFECT_FLAG_CLIENT_HINT
)
e1
:
SetRange
(
LOCATION_SZONE
)
e1
:
SetValue
(
c37900017
.
efilter
)
local
e2
=
Effect
.
CreateEffect
(
c
)
e2
:
SetType
(
EFFECT_TYPE_FIELD
+
EFFECT_TYPE_GRANT
)
e2
:
SetRange
(
LOCATION_MZONE
)
e2
:
SetTargetRange
(
LOCATION_SZONE
,
0
)
e2
:
SetTarget
(
c37900017
.
mattg
)
e2
:
SetLabelObject
(
e1
)
c
:
RegisterEffect
(
e2
)
local
e3
=
Effect
.
CreateEffect
(
c
)
e3
:
SetType
(
EFFECT_TYPE_IGNITION
)
e3
:
SetCode
(
EVENT_FREE_CHAIN
)
e3
:
SetRange
(
LOCATION_MZONE
)
e3
:
SetCost
(
c37900017
.
cost
)
e3
:
SetTarget
(
c37900017
.
tg
)
e3
:
SetOperation
(
c37900017
.
op
)
c
:
RegisterEffect
(
e3
)
end
function
c37900017
.
ovfilter
(
c
)
return
c
:
IsFaceup
()
and
c
:
IsCode
(
37900094
)
end
function
cm
.
xyzop
(
e
,
tp
,
chk
)
if
chk
==
0
then
return
Duel
.
GetFlagEffect
(
tp
,
m
)
==
0
end
Duel
.
RegisterFlagEffect
(
tp
,
m
,
RESET_PHASE
+
PHASE_END
,
EFFECT_FLAG_OATH
,
1
)
function
c37900017
.
xyzop
(
e
,
tp
,
chk
)
if
chk
==
0
then
return
Duel
.
GetFlagEffect
(
tp
,
37900017
)
==
0
end
Duel
.
RegisterFlagEffect
(
tp
,
37900017
,
RESET_PHASE
+
PHASE_END
,
EFFECT_FLAG_OATH
,
1
)
end
function
c37900017
.
valcon
(
e
,
re
,
r
,
rp
)
return
r
&
(
REASON_BATTLE
+
REASON_EFFECT
)
~=
0
end
function
c37900017
.
mattg
(
e
,
c
)
return
c
:
IsSetCard
(
0x389
)
and
c
:
IsType
(
TYPE_SPELL
+
TYPE_TRAP
)
and
c
:
IsFaceup
()
end
function
c37900017
.
efilter
(
e
,
te
)
return
not
te
:
GetOwner
():
IsSetCard
(
0x389
)
end
function
c37900017
.
cost
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
e
:
GetHandler
():
CheckRemoveOverlayCard
(
tp
,
1
,
REASON_COST
)
end
e
:
GetHandler
():
RemoveOverlayCard
(
tp
,
1
,
1
,
REASON_COST
)
end
function
c37900017
.
tg
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
true
end
end
function
c
m
.
xyzfilter
(
c
)
return
c
:
Is
Type
(
TYPE_XYZ
)
function
c
37900017
.
q
(
c
)
return
c
:
Is
Faceup
()
and
c
:
IsSetCard
(
0x389
)
end
function
cm
.
matop
(
e
,
tp
)
local
c
=
rscf
.
GetFaceUpSelf
(
e
)
if
not
c
or
not
c
:
IsType
(
TYPE_XYZ
)
then
return
end
local
og
,
tc
=
rsop
.
SelectCards
(
"axmat"
,
tp
,
cm
.
matfilter
,
tp
,
LOCATION_ONFIELD
,
LOCATION_ONFIELD
,
1
,
1
,
nil
,
e
)
if
tc
then
rsop
.
Overlay
(
e
,
c
,
tc
)
end
function
c37900017
.
op
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
c
=
e
:
GetHandler
()
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetType
(
EFFECT_TYPE_FIELD
)
e1
:
SetTargetRange
(
LOCATION_MZONE
,
0
)
e1
:
SetCode
(
EFFECT_UPDATE_ATTACK
)
e1
:
SetTarget
(
c37900017
.
ttg
)
e1
:
SetValue
(
500
)
Duel
.
RegisterEffect
(
e1
,
tp
)
end
function
c
m
.
matfilter
(
c
,
e
)
return
c
:
Is
CanOverlay
()
and
not
c
:
IsImmuneToEffect
(
e
)
function
c
37900017
.
ttg
(
e
,
c
)
return
c
:
Is
Faceup
()
and
c
:
IsSetCard
(
0x389
)
end
function
cm
.
imval
(
e
,
re
)
local
rc
=
re
:
GetHandler
()
return
rsval
.
imes
(
e
,
re
)
and
rc
~=
e
:
GetOwner
()
and
rc
:
IsSetCard
(
0x389
)
end
\ No newline at end of file
expansions/script/c37900029.lua
View file @
328435de
--不老不死的魔女
if
not
pcall
(
function
()
dofile
(
"expansions/script/c37900000.lua"
)
end
)
then
dofile
(
"script/c37900000.lua"
)
end
local
m
,
cm
=
rscf
.
DefineCard
(
37900029
)
function
cm
.
initial_effect
(
c
)
function
c37900029
.
initial_effect
(
c
)
c
:
EnableReviveLimit
()
local
e1
=
rsef
.
FC
(
c
,
EVENT_TO_GRAVE
,
nil
,
nil
,
nil
,
LOCATION_MZONE
,
nil
,
cm
.
ctop
)
local
e2
=
rsef
.
QO
(
c
,
nil
,
"ae"
,
1
,
nil
,
nil
,
LOCATION_MZONE
,
nil
,
rscost
.
reglabel
(
100
),
cm
.
tg
,
cm
.
op
)
local
e3
=
rsef
.
STO
(
c
,
EVENT_TO_GRAVE
,
"sp"
,{
1
,
m
},
"sp"
,
"de"
,
nil
,
nil
,
rsop
.
target
(
rscf
.
spfilter2
(),
"sp"
),
cm
.
spop
)
local
e0
=
Effect
.
CreateEffect
(
c
)
e0
:
SetType
(
EFFECT_TYPE_CONTINUOUS
+
EFFECT_TYPE_FIELD
)
e0
:
SetCode
(
EVENT_TO_GRAVE
)
e0
:
SetRange
(
LOCATION_MZONE
)
e0
:
SetOperation
(
c37900029
.
op0
)
c
:
RegisterEffect
(
e0
)
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetType
(
EFFECT_TYPE_QUICK_O
)
e1
:
SetCode
(
EVENT_FREE_CHAIN
)
e1
:
SetRange
(
LOCATION_MZONE
)
e1
:
SetProperty
(
EFFECT_FLAG_DAMAGE_CAL
+
EFFECT_FLAG_DAMAGE_STEP
)
e1
:
SetHintTiming
(
0
,
TIMING_END_PHASE
+
TIMING_MAIN_END
+
TIMINGS_CHECK_MONSTER
+
TIMING_SSET
)
e1
:
SetCountLimit
(
1
)
e1
:
SetTarget
(
c37900029
.
tg
)
e1
:
SetOperation
(
c37900029
.
op
)
c
:
RegisterEffect
(
e1
)
local
e2
=
Effect
.
CreateEffect
(
c
)
e2
:
SetType
(
EFFECT_TYPE_SINGLE
+
EFFECT_TYPE_TRIGGER_O
)
e2
:
SetCode
(
EVENT_TO_GRAVE
)
e2
:
SetCategory
(
CATEGORY_SPECIAL_SUMMON
+
CATEGORY_GRAVE_SPSUMMON
)
e2
:
SetRange
(
LOCATION_GRAVE
)
e2
:
SetProperty
(
EFFECT_FLAG_DELAY
)
e2
:
SetCountLimit
(
1
,
37900029
)
e2
:
SetTarget
(
c37900029
.
tg2
)
e2
:
SetOperation
(
c37900029
.
op2
)
c
:
RegisterEffect
(
e2
)
end
function
cm
.
spcon
(
e
)
return
e
:
GetHandler
():
IsReason
(
REASON_DESTROY
)
function
c37900029
.
op0
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
if
eg
:
GetCount
()
>
0
then
local
ag
=
Duel
.
GetMatchingGroup
(
Card
.
IsFaceup
,
tp
,
LOCATION_ONFIELD
,
LOCATION_ONFIELD
,
nil
)
if
ag
:
GetCount
()
>
0
then
local
tc
=
ag
:
GetFirst
()
while
tc
do
tc
:
AddCounter
(
0x1389
,
eg
:
GetCount
())
tc
=
ag
:
GetNext
()
end
end
end
end
function
cm
.
spop
(
e
,
tp
)
local
c
=
rscf
.
GetSelf
(
e
)
if
c
then
Duel
.
SpecialSummon
(
c
,
0
,
tp
,
tp
,
false
,
false
,
POS_FACEUP
)
function
c37900029
.
tg
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
local
c
=
e
:
GetHandler
()
if
chk
==
0
then
return
Duel
.
IsCanRemoveCounter
(
tp
,
1
,
1
,
0x1389
,
4
,
REASON_COST
)
end
local
ct
=
Duel
.
GetCounter
(
tp
,
1
,
1
,
0x1389
)
local
op
=
100
if
ct
<
8
then
Duel
.
RemoveCounter
(
tp
,
1
,
1
,
0x1389
,
4
,
REASON_COST
)
e
:
SetValue
(
4
)
end
if
ct
>=
8
and
ct
<
12
then
op
=
Duel
.
SelectOption
(
tp
,
aux
.
Stringid
(
37900029
,
5
),
aux
.
Stringid
(
37900029
,
6
))
end
if
ct
>=
12
and
ct
<
16
then
op
=
Duel
.
SelectOption
(
tp
,
aux
.
Stringid
(
37900029
,
5
),
aux
.
Stringid
(
37900029
,
6
),
aux
.
Stringid
(
37900029
,
7
))
end
if
ct
>=
16
and
ct
<
20
then
op
=
Duel
.
SelectOption
(
tp
,
aux
.
Stringid
(
37900029
,
5
),
aux
.
Stringid
(
37900029
,
6
),
aux
.
Stringid
(
37900029
,
7
),
aux
.
Stringid
(
37900029
,
8
))
end
if
ct
>=
20
then
op
=
Duel
.
SelectOption
(
tp
,
aux
.
Stringid
(
37900029
,
5
),
aux
.
Stringid
(
37900029
,
6
),
aux
.
Stringid
(
37900029
,
7
),
aux
.
Stringid
(
37900029
,
8
),
aux
.
Stringid
(
37900029
,
9
))
end
if
op
==
0
then
Duel
.
RemoveCounter
(
tp
,
1
,
1
,
0x1389
,
4
,
REASON_COST
)
e
:
SetValue
(
4
)
end
if
op
==
1
then
Duel
.
RemoveCounter
(
tp
,
1
,
1
,
0x1389
,
8
,
REASON_COST
)
e
:
SetValue
(
8
)
end
if
op
==
2
then
Duel
.
RemoveCounter
(
tp
,
1
,
1
,
0x1389
,
12
,
REASON_COST
)
e
:
SetValue
(
12
)
e
:
SetCategory
(
CATEGORY_ATKCHANGE
)
Duel
.
SetOperationInfo
(
0
,
CATEGORY_ATKCHANGE
,
c
,
0
,
0
,
4000
)
end
if
op
==
3
then
Duel
.
RemoveCounter
(
tp
,
1
,
1
,
0x1389
,
16
,
REASON_COST
)
e
:
SetValue
(
16
)
e
:
SetCategory
(
CATEGORY_ATKCHANGE
+
CATEGORY_DEFCHANGE
)
Duel
.
SetOperationInfo
(
0
,
CATEGORY_ATKCHANGE
,
c
,
0
,
0
,
4000
)
Duel
.
SetOperationInfo
(
0
,
CATEGORY_DEFCHANGE
,
c
,
0
,
0
,
4000
)
end
if
op
==
4
then
Duel
.
RemoveCounter
(
tp
,
1
,
1
,
0x1389
,
20
,
REASON_COST
)
e
:
SetValue
(
20
)
Duel
.
SetOperationInfo
(
0
,
CATEGORY_ATKCHANGE
,
c
,
0
,
0
,
4000
)
Duel
.
SetOperationInfo
(
0
,
CATEGORY_DEFCHANGE
,
c
,
0
,
0
,
4000
)
e
:
SetCategory
(
CATEGORY_ATKCHANGE
+
CATEGORY_DEFCHANGE
+
CATEGORY_SPECIAL_SUMMON
+
CATEGORY_DRAW
)
Duel
.
SetOperationInfo
(
0
,
CATEGORY_SPECIAL_SUMMON
,
nil
,
1
,
tp
,
LOCATION_EXTRA
)
Duel
.
SetOperationInfo
(
0
,
CATEGORY_DRAW
,
nil
,
0
,
tp
,
1
)
end
end
function
c
m
.
cfilter
(
c
)
return
c
:
IsFaceup
()
and
c
:
IsCanAddCounter
(
0x1389
,
1
)
function
c
37900029
.
q
(
c
,
e
,
tp
)
return
not
c
:
IsType
(
TYPE_EFFECT
)
and
c
:
IsType
(
TYPE_LINK
)
and
c
:
IsCanBeSpecialSummoned
(
e
,
0
,
tp
,
false
,
false
)
and
Duel
.
GetLocationCountFromEx
(
tp
)
>
0
end
function
cm
.
ctop
(
e
,
tp
,
eg
)
local
g
=
Duel
.
GetMatchingGroup
(
cm
.
cfilter
,
tp
,
LOCATION_ONFIELD
,
LOCATION_ONFIELD
,
nil
)
for
tc
in
aux
.
Next
(
g
)
do
tc
:
AddCounter
(
0x1389
,
#
eg
)
function
c37900029
.
op
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
c
=
e
:
GetHandler
()
local
rct
=
e
:
GetValue
()
if
c
:
IsRelateToEffect
(
e
)
and
c
:
IsFaceup
()
then
if
rct
>=
4
then
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetDescription
(
aux
.
Stringid
(
37900029
,
0
))
e1
:
SetType
(
EFFECT_TYPE_SINGLE
)
e1
:
SetProperty
(
EFFECT_FLAG_SINGLE_RANGE
+
EFFECT_FLAG_CLIENT_HINT
)
e1
:
SetRange
(
LOCATION_MZONE
)
e1
:
SetCode
(
EFFECT_INDESTRUCTABLE_BATTLE
)
e1
:
SetValue
(
1
)
e1
:
SetReset
(
RESET_EVENT
+
RESETS_STANDARD
+
RESET_PHASE
+
PHASE_END
)
c
:
RegisterEffect
(
e1
)
end
end
function
cm
.
tg
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
local
c
=
e
:
GetHandler
()
if
chk
==
0
then
if
e
:
GetLabel
()
~=
100
then
return
false
end
e
:
SetLabel
(
0
)
return
Duel
.
IsCanRemoveCounter
(
tp
,
1
,
1
,
0x1389
,
4
,
REASON_EFFECT
)
end
local
ct
=
Duel
.
GetCounter
(
tp
,
1
,
1
,
0x1389
)
ct
=
math.min
(
ct
,
20
)
local
list
=
{
}
for
i
=
4
,
ct
do
if
Duel
.
IsCanRemoveCounter
(
tp
,
1
,
1
,
0x1389
,
ct
,
REASON_EFFECT
)
then
table.insert
(
list
,
ct
)
end
if
rct
>=
8
then
local
e2
=
Effect
.
CreateEffect
(
c
)
e2
:
SetDescription
(
aux
.
Stringid
(
37900029
,
1
))
e2
:
SetType
(
EFFECT_TYPE_SINGLE
)
e2
:
SetCode
(
EFFECT_IMMUNE_EFFECT
)
e2
:
SetProperty
(
EFFECT_FLAG_SINGLE_RANGE
+
EFFECT_FLAG_CLIENT_HINT
)
e2
:
SetRange
(
LOCATION_SZONE
)
e2
:
SetValue
(
c37900029
.
efilter
)
e2
:
SetReset
(
RESET_EVENT
+
RESETS_STANDARD
+
RESET_PHASE
+
PHASE_END
)
c
:
RegisterEffect
(
e2
)
end
local
rct
=
Duel
.
AnnounceNumber
(
tp
,
table.unpack
(
list
))
Duel
.
RemoveCounter
(
tp
,
1
,
1
,
0x1389
,
rct
,
REASON_EFFECT
)
local
cate
=
0
if
rct
>=
12
then
cate
=
cate
|
CATEGORY_ATKCHANGE
if
rct
>=
12
then
local
atk
=
c
:
GetBaseAttack
()
*
2
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetType
(
EFFECT_TYPE_SINGLE
)
e1
:
SetCode
(
EFFECT_SET_ATTACK_FINAL
)
e1
:
SetValue
(
atk
)
e1
:
SetProperty
(
EFFECT_FLAG_SINGLE_RANGE
)
e1
:
SetReset
(
RESET_EVENT
+
RESETS_STANDARD
+
RESET_DISABLE
+
RESET_PHASE
+
PHASE_END
)
c
:
RegisterEffect
(
e1
)
local
e3
=
Effect
.
CreateEffect
(
c
)
e3
:
SetDescription
(
aux
.
Stringid
(
37900029
,
2
))
e3
:
SetType
(
EFFECT_TYPE_SINGLE
)
e3
:
SetCode
(
EFFECT_ATTACK_ALL
)
e3
:
SetProperty
(
EFFECT_FLAG_CLIENT_HINT
)
e3
:
SetValue
(
1
)
e3
:
SetReset
(
RESET_EVENT
+
RESETS_STANDARD
+
RESET_PHASE
+
PHASE_END
)
c
:
RegisterEffect
(
e3
)
end
if
rct
>=
16
then
cate
=
cate
|
CATEGORY_DEFCHANGE
if
rct
>=
16
then
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetType
(
EFFECT_TYPE_SINGLE
)
e1
:
SetCode
(
EFFECT_UPDATE_ATTACK
)
e1
:
SetProperty
(
EFFECT_FLAG_SINGLE_RANGE
)
e1
:
SetValue
(
rct
*
100
)
e1
:
SetReset
(
RESET_EVENT
+
RESETS_STANDARD
+
RESET_PHASE
+
PHASE_END
)
c
:
RegisterEffect
(
e1
)
local
e2
=
e1
:
Clone
()
e2
:
SetCode
(
EFFECT_UPDATE_DEFENSE
)
c
:
RegisterEffect
(
e2
)
end
if
rct
>=
20
and
Duel
.
IsExistingMatchingCard
(
c37900029
.
q
,
tp
,
LOCATION_EXTRA
,
0
,
1
,
nil
,
e
,
tp
)
and
Duel
.
SelectYesNo
(
tp
,
aux
.
Stringid
(
37900029
,
3
))
then
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
HINTMSG_SPSUMMON
)
local
g
=
Duel
.
SelectMatchingCard
(
tp
,
c37900029
.
q
,
tp
,
LOCATION_EXTRA
,
0
,
1
,
1
,
nil
,
e
,
tp
)
if
g
:
GetCount
()
>
0
and
Duel
.
SpecialSummon
(
g
,
0
,
tp
,
tp
,
false
,
false
,
POS_FACEUP
)
>
0
then
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetType
(
EFFECT_TYPE_FIELD
+
EFFECT_TYPE_CONTINUOUS
)
e1
:
SetCode
(
EVENT_PHASE
+
PHASE_END
)
e1
:
SetRange
(
LOCATION_MZONE
)
e1
:
SetDescription
(
aux
.
Stringid
(
37900029
,
4
))
e1
:
SetProperty
(
EFFECT_FLAG_CANNOT_DISABLE
+
EFFECT_FLAG_CLIENT_HINT
)
e1
:
SetOperation
(
c37900029
.
opr
)
e1
:
SetReset
(
RESET_EVENT
+
RESETS_STANDARD
+
RESET_PHASE
+
PHASE_END
)
g
:
GetFirst
():
RegisterEffect
(
e1
,
true
)
if
Duel
.
IsPlayerCanDraw
(
tp
,
1
)
then
Duel
.
Draw
(
tp
,
1
,
REASON_EFFECT
)
end
end
end
if
rct
>=
20
then
cate
=
cate
|
(
CATEGORY_SPECIAL_SUMMON
+
CATEGORY_DRAW
)
end
e
:
SetCategory
(
cate
)
e
:
SetValue
(
rct
)
end
function
cm
.
op
(
e
,
tp
)
local
rct
=
e
:
GetValue
()
local
c
=
rscf
.
GetFaceUpSelf
(
e
)
if
rct
>=
4
and
c
then
local
e1
=
rsef
.
SV_Card
(
c
,
"indb"
,
1
,
nil
,
nil
,
nil
,
rsrst
.
std_ep
)
end
if
rct
>=
8
and
c
then
local
e2
=
rsef
.
SV_Card
(
c
,
"im"
,
rsval
.
imes
,
nil
,
nil
,
nil
,
rsrst
.
std_ep
)
end
if
rct
>=
12
and
c
then
local
e3
=
rsef
.
SV_Card
(
c
,
"fatk"
,
c
:
GetAttack
()
*
2
,
nil
,
nil
,
nil
,
rsrst
.
std_dis
+
rsrst
.
ep
)
local
e4
=
rsef
.
SV_Card
(
c
,
"atka"
,
1
,
nil
,
nil
,
nil
,
rsrst
.
std_ep
)
end
if
rct
>=
16
and
c
then
local
e5
,
e6
=
rsef
.
SV_Card
(
c
,
"atk+,def+"
,
rct
*
100
,
nil
,
nil
,
nil
,
rsrst
.
std_dis
+
rsrst
.
ep
)
end
if
rct
>=
20
then
local
sg
=
Duel
.
GetMatchingGroup
(
cm
.
spfilter
,
tp
,
LOCATION_EXTRA
,
0
,
nil
,
e
,
tp
)
if
#
sg
>
0
and
Duel
.
IsPlayerCanDraw
(
tp
,
1
)
and
rshint
.
SelectYesNo
(
tp
,
"sp"
)
then
if
rsgf
.
SelectSpecialSummon
(
sg
,
tp
,
aux
.
TRUE
,
1
,
1
,
nil
,{
0
,
tp
,
tp
,
false
,
false
,
POS_FACEUP
,
nil
,
nil
,
"td"
},
e
,
tp
)
>
0
then
Duel
.
BreakEffect
()
Duel
.
Draw
(
tp
,
1
,
REASON_EFFECT
)
end
end
function
c37900029
.
efilter
(
e
,
te
)
return
te
:
GetOwner
()
~=
e
:
GetOwner
()
end
function
c37900029
.
opr
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
c
=
e
:
GetHandler
()
if
c
:
IsAbleToDeck
()
then
Duel
.
SendtoDeck
(
c
,
nil
,
2
,
REASON_RULE
)
end
end
function
cm
.
spfilter
(
c
,
e
,
tp
)
return
rscf
.
spfilter2
()(
c
,
e
,
tp
)
and
c
:
IsType
(
TYPE_LINK
)
and
not
c
:
IsType
(
TYPE_EFFECT
)
function
c37900029
.
tg2
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
local
c
=
e
:
GetHandler
()
if
chk
==
0
then
return
c
:
IsCanBeSpecialSummoned
(
e
,
0
,
tp
,
false
,
false
)
and
Duel
.
GetLocationCount
(
tp
,
LOCATION_MZONE
)
>
0
end
Duel
.
SetOperationInfo
(
0
,
CATEGORY_SPECIAL_SUMMON
,
c
,
1
,
tp
,
LOCATION_GRAVE
)
end
function
c37900029
.
op2
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
c
=
e
:
GetHandler
()
if
c
:
IsRelateToEffect
(
e
)
and
Duel
.
GetLocationCount
(
tp
,
LOCATION_MZONE
)
>
0
then
Duel
.
SpecialSummon
(
c
,
0
,
tp
,
tp
,
false
,
false
,
POS_FACEUP
)
end
end
\ No newline at end of file
expansions/script/c37900030.lua
View file @
328435de
--护界神·提露密努斯·艾斯特
if
not
pcall
(
function
()
dofile
(
"expansions/script/c37900000.lua"
)
end
)
then
dofile
(
"script/c37900000.lua"
)
end
local
m
,
cm
=
rscf
.
DefineCard
(
37900030
)
function
cm
.
initial_effect
(
c
)
--xyz summon
aux
.
AddXyzProcedure
(
c
,
nil
,
8
,
2
,
cm
.
ovfilter
,
aux
.
Stringid
(
m
,
0
))
function
c37900030
.
initial_effect
(
c
)
aux
.
AddXyzProcedure
(
c
,
nil
,
8
,
3
,
c37900030
.
ovfilter
,
aux
.
Stringid
(
37900030
,
0
))
c
:
EnableReviveLimit
()
--atk
local
e3
=
Effect
.
CreateEffect
(
c
)
e3
:
SetType
(
EFFECT_TYPE_SINGLE
)
e3
:
SetProperty
(
EFFECT_FLAG_CANNOT_DISABLE
+
EFFECT_FLAG_UNCOPYABLE
)
e3
:
SetCode
(
EFFECT_CANNOT_BE_XYZ_MATERIAL
)
e3
:
SetValue
(
1
)
c
:
RegisterEffect
(
e3
)
local
e0
=
Effect
.
CreateEffect
(
c
)
e0
:
SetType
(
EFFECT_TYPE_SINGLE
)
e0
:
SetProperty
(
EFFECT_FLAG_SINGLE_RANGE
)
e0
:
SetRange
(
LOCATION_MZONE
)
e0
:
SetCode
(
EFFECT_INDESTRUCTABLE_COUNT
)
e0
:
SetCountLimit
(
2
)
e0
:
SetValue
(
c37900030
.
valcon
)
c
:
RegisterEffect
(
e0
)
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetDescription
(
aux
.
Stringid
(
m
,
1
))
e1
:
SetCategory
(
CATEGORY_ATKCHANGE
)
e1
:
SetCategory
(
CATEGORY_ATKCHANGE
+
CATEGORY_DEFCHANGE
)
e1
:
SetType
(
EFFECT_TYPE_TRIGGER_O
+
EFFECT_TYPE_SINGLE
)
e1
:
SetCode
(
EVENT_SPSUMMON_SUCCESS
)
e1
:
SetCondition
(
rscon
.
sumtypes
(
"xyz"
)
)
e1
:
SetCost
(
c
m
.
atkcost
)
e1
:
SetOperation
(
c
m
.
atkop
)
e1
:
SetCondition
(
c37900030
.
atkcon
)
e1
:
SetCost
(
c
37900030
.
atkcost
)
e1
:
SetOperation
(
c
37900030
.
atkop
)
c
:
RegisterEffect
(
e1
)
--pos change
local
e2
=
Effect
.
CreateEffect
(
c
)
e2
:
SetCategory
(
CATEGORY_POSITION
)
e2
:
SetDescription
(
aux
.
Stringid
(
m
,
2
))
e2
:
SetType
(
EFFECT_TYPE_IGNITION
)
e2
:
SetCountLimit
(
1
)
e2
:
SetRange
(
LOCATION_MZONE
)
e2
:
SetCost
(
rscost
.
rmxyz
(
1
)
)
e2
:
SetTarget
(
c
m
.
target
)
e2
:
SetOperation
(
c
m
.
operation
)
--e2:SetCost(c37900030.cost
)
e2
:
SetTarget
(
c
37900030
.
tg
)
e2
:
SetOperation
(
c
37900030
.
op
)
c
:
RegisterEffect
(
e2
)
--battle indes
local
e3
=
Effect
.
CreateEffect
(
c
)
e3
:
SetType
(
EFFECT_TYPE_SINGLE
)
e3
:
SetProperty
(
EFFECT_FLAG_SINGLE_RANGE
)
e3
:
SetRange
(
LOCATION_MZONE
)
e3
:
SetCode
(
EFFECT_INDESTRUCTABLE_COUNT
)
e3
:
SetCountLimit
(
2
)
e3
:
SetValue
(
cm
.
valcon
)
c
:
RegisterEffect
(
e3
)
end
function
c
m
.
ovfilter
(
c
)
function
c
37900030
.
ovfilter
(
c
)
return
c
:
IsFaceup
()
and
c
:
IsRank
(
7
)
and
c
:
IsSetCard
(
0x389
,
0x381
)
end
function
cm
.
atkcost
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
function
c37900030
.
valcon
(
e
,
re
,
r
,
rp
)
return
r
&
(
REASON_BATTLE
+
REASON_EFFECT
)
~=
0
end
function
c37900030
.
atkcon
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
return
e
:
GetHandler
():
IsSummonType
(
SUMMON_TYPE_XYZ
)
end
function
c37900030
.
atkcost
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
Duel
.
GetLP
(
tp
)
>
1000
end
local
lp
=
Duel
.
GetLP
(
tp
)
e
:
SetLabel
(
lp
-
1000
)
Duel
.
PayLPCost
(
tp
,
lp
-
1000
)
end
function
c
m
.
atkop
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
function
c
37900030
.
atkop
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
c
=
e
:
GetHandler
()
if
c
:
IsFaceup
()
and
c
:
IsRelateToEffect
(
e
)
then
local
e1
=
Effect
.
CreateEffect
(
c
)
...
...
@@ -61,32 +65,45 @@ function cm.atkop(e,tp,eg,ep,ev,re,r,rp)
c
:
RegisterEffect
(
e2
)
end
end
function
cm
.
pfilter
(
c
)
return
c
:
IsAttackPos
()
and
c
:
IsType
(
TYPE_EFFECT
)
and
c
:
IsCanChangePosition
()
end
function
cm
.
target
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
Duel
.
IsExistingMatchingCard
(
cm
.
pfilter
,
tp
,
LOCATION_MZONE
,
LOCATION_MZONE
,
1
,
e
:
GetHandler
())
end
function
c37900030
.
cost
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
e
:
GetHandler
():
CheckRemoveOverlayCard
(
tp
,
1
,
REASON_COST
)
end
e
:
GetHandler
():
RemoveOverlayCard
(
tp
,
1
,
1
,
REASON_COST
)
end
function
cm
.
operation
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
c
=
rscf
.
GetSelf
(
e
)
local
g
=
Duel
.
GetMatchingGroup
(
cm
.
pfilter
,
tp
,
LOCATION_MZONE
,
LOCATION_MZONE
,
c
)
Duel
.
ChangePosition
(
g
,
POS_FACEUP_DEFENSE
)
if
not
c
then
return
end
local
e1
=
rsef
.
SC
(
c
,
EVENT_BATTLE_START
,
nil
,
nil
,
nil
,
cm
.
tgcon
,
cm
.
tgop
,
rsrst
.
std_ep
)
function
c37900030
.
pfilter
(
c
)
return
c
:
IsPosition
(
POS_FACEUP_ATTACK
)
and
c
:
IsType
(
TYPE_EFFECT
)
and
c
:
IsCanChangePosition
()
end
function
cm
.
tgcon
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
c
=
e
:
GetHandler
()
local
a
=
Duel
.
GetAttackTarget
()
if
not
a
then
return
false
end
local
atk
,
def
=
a
:
GetAttack
(),
a
:
GetDefense
()
if
atk
>=
0
and
c
:
IsAttackAbove
(
atk
+
1
)
then
return
true
end
if
def
>=
0
and
c
:
IsAttackAbove
(
def
+
1
)
then
return
true
end
return
false
function
c37900030
.
tg
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
local
c
=
e
:
GetHandler
()
local
g
=
Duel
.
GetMatchingGroup
(
c37900030
.
pfilter
,
tp
,
LOCATION_MZONE
,
LOCATION_MZONE
,
c
)
if
chk
==
0
then
return
g
:
GetCount
()
>
0
end
end
function
cm
.
tgop
(
e
,
tp
)
rshint
.
Card
(
m
)
Duel
.
SendtoGrave
(
Duel
.
GetAttackTarget
(),
REASON_RULE
)
function
c37900030
.
op
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
c
=
e
:
GetHandler
()
local
g
=
Duel
.
GetMatchingGroup
(
c37900030
.
pfilter
,
tp
,
LOCATION_MZONE
,
LOCATION_MZONE
,
c
)
if
g
:
GetCount
()
>
0
then
if
Duel
.
ChangePosition
(
g
,
POS_FACEUP_DEFENSE
)
>
0
then
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetType
(
EFFECT_TYPE_SINGLE
+
EFFECT_TYPE_CONTINUOUS
)
e1
:
SetCode
(
EVENT_BATTLE_START
)
e1
:
SetRange
(
LOCATION_MZONE
)
e1
:
SetDescription
(
aux
.
Stringid
(
37900030
,
1
))
e1
:
SetCondition
(
c37900030
.
con22
)
e1
:
SetProperty
(
EFFECT_FLAG_CLIENT_HINT
)
e1
:
SetOperation
(
c37900030
.
op22
)
e1
:
SetReset
(
RESET_EVENT
+
RESETS_STANDARD
+
RESET_PHASE
+
PHASE_END
)
c
:
RegisterEffect
(
e1
)
end
end
end
function
cm
.
valcon
(
e
,
re
,
r
,
rp
)
return
r
&
(
REASON_BATTLE
+
REASON_EFFECT
)
~=
0
function
c37900030
.
con22
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
c
=
e
:
GetHandler
()
local
bc
=
c
:
GetBattleTarget
()
return
c
:
GetAttack
()
>
bc
:
GetAttack
()
or
(
not
bc
:
IsType
(
TYPE_LINK
)
and
c
:
GetAttack
()
>
bc
:
GetDefense
())
end
function
c37900030
.
op22
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
c
=
e
:
GetHandler
()
local
bc
=
c
:
GetBattleTarget
()
if
bc
:
IsRelateToBattle
(
e
)
and
bc
:
IsAbleToGrave
()
then
Duel
.
SendtoGrave
(
bc
,
REASON_RULE
,
1
-
tp
)
end
end
\ No newline at end of file
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