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
Nguyễn Anh Kiệt
ygopro-222DIY-cards
Commits
66eb67ce
Commit
66eb67ce
authored
Aug 04, 2024
by
聖園ミカ
🐟
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
byd
parent
046043bb
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
635 additions
and
106 deletions
+635
-106
expansions/FiNALE.cdb
expansions/FiNALE.cdb
+0
-0
expansions/pics/33701499.jpg
expansions/pics/33701499.jpg
+0
-0
expansions/pics/33701500.jpg
expansions/pics/33701500.jpg
+0
-0
expansions/script/c33701499.lua
expansions/script/c33701499.lua
+73
-0
expansions/script/c33701500.lua
expansions/script/c33701500.lua
+17
-70
expansions/script/glitchylib_regeff.lua
expansions/script/glitchylib_regeff.lua
+105
-2
expansions/script/glitchylib_soundstage.lua
expansions/script/glitchylib_soundstage.lua
+210
-0
expansions/script/glitchylib_vsnemo.lua
expansions/script/glitchylib_vsnemo.lua
+230
-34
No files found.
expansions/FiNALE.cdb
View file @
66eb67ce
No preview for this file type
expansions/pics/33701499.jpg
0 → 100644
View file @
66eb67ce
13.9 KB
expansions/pics/33701500.jpg
View replaced file @
046043bb
View file @
66eb67ce
16.3 KB
|
W:
|
H:
13.9 KB
|
W:
|
H:
2-up
Swipe
Onion skin
expansions/script/c33701499.lua
0 → 100644
View file @
66eb67ce
--【背景音台】POP TEAM EPIC - old
--function c33701499.initial_effect(c)
--card,code,oathcount,bgmHintID(卡片,卡号,契约回合,音乐提示)
--card,code,oathcount,bgmHintID(<cardname>,<cardID>,<contractTurn>,<BGMFileName>)
--bgmhandle(c,33701499,6,1)
--end
function
bgmhandle
(
c
,
code
,
count
,
bgmid
,
con
,
cost
,
tg
,
op
)
--Activate
local
e0
=
Effect
.
CreateEffect
(
c
)
e0
:
SetType
(
EFFECT_TYPE_ACTIVATE
)
e0
:
SetCode
(
EVENT_FREE_CHAIN
)
if
con
then
e0
:
SetCondition
(
con
)
end
e0
:
SetCost
((
cost
and
{
cost
}
or
{
function
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
true
end
if
bgmid
then
Duel
.
Hint
(
HINT_MUSIC
,
0
,
aux
.
Stringid
(
code
,
bgmid
))
end
end
})[
1
])
if
tg
then
e0
:
SetTarget
(
tg
)
end
if
op
then
e0
:
SetOperation
(
op
)
end
--indes
local
e2
=
Effect
.
CreateEffect
(
c
)
e2
:
SetType
(
EFFECT_TYPE_SINGLE
)
e2
:
SetProperty
(
EFFECT_FLAG_SINGLE_RANGE
)
e2
:
SetRange
(
LOCATION_FZONE
)
e2
:
SetCode
(
EFFECT_INDESTRUCTABLE_EFFECT
)
e2
:
SetValue
(
1
)
--Cannot activate
local
e3
=
Effect
.
CreateEffect
(
c
)
e3
:
SetType
(
EFFECT_TYPE_FIELD
)
e3
:
SetCode
(
EFFECT_CANNOT_ACTIVATE
)
e3
:
SetRange
(
LOCATION_FZONE
)
e3
:
SetProperty
(
EFFECT_FLAG_PLAYER_TARGET
+
EFFECT_FLAG_CANNOT_DISABLE
+
EFFECT_FLAG_CANNOT_NEGATE
)
e3
:
SetTargetRange
(
1
,
0
)
e3
:
SetValue
(
function
(
e
,
re
,
tp
)
return
re
:
GetHandler
():
IsType
(
TYPE_FIELD
)
and
re
:
IsHasType
(
EFFECT_TYPE_ACTIVATE
)
end
)
--cannot set
local
e4
=
Effect
.
CreateEffect
(
c
)
e4
:
SetType
(
EFFECT_TYPE_FIELD
)
e4
:
SetCode
(
EFFECT_CANNOT_SSET
)
e4
:
SetProperty
(
EFFECT_FLAG_PLAYER_TARGET
)
e4
:
SetRange
(
LOCATION_FZONE
)
e4
:
SetTargetRange
(
1
,
0
)
e4
:
SetTarget
(
function
(
e
,
c
)
return
c
:
IsType
(
TYPE_FIELD
)
end
)
c
:
RegisterEffect
(
e4
)
--Auto oath count
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetType
(
EFFECT_TYPE_FIELD
+
EFFECT_TYPE_CONTINUOUS
)
e1
:
SetCode
(
EVENT_PHASE
+
PHASE_END
)
e1
:
SetProperty
(
EFFECT_FLAG_CANNOT_DISABLE
)
e1
:
SetCountLimit
(
1
)
e1
:
SetRange
(
LOCATION_FZONE
)
e1
:
SetCondition
(
function
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
return
tp
~=
Duel
.
GetTurnPlayer
()
end
)
e1
:
SetOperation
(
function
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
c
=
e
:
GetHandler
()
if
c
:
GetFlagEffect
(
1082946
)
==
0
then
c
:
RegisterFlagEffect
(
1082946
,
RESET_PHASE
+
PHASE_END
+
RESET_SELF_TURN
,
0
,
count
)
c
:
SetTurnCounter
(
0
)
end
local
ct
=
c
:
GetTurnCounter
()
ct
=
ct
+
1
c
:
SetTurnCounter
(
ct
)
if
ct
>=
count
then
Duel
.
Destroy
(
c
,
REASON_RULE
)
c
:
ResetFlagEffect
(
1082946
)
end
end
)
c
:
RegisterEffect
(
e0
)
c
:
RegisterEffect
(
e1
)
c
:
RegisterEffect
(
e2
)
c
:
RegisterEffect
(
e3
)
c
:
RegisterEffect
(
e4
)
_G
[
"c"
..
code
][
c
]
=
e1
end
\ No newline at end of file
expansions/script/c33701500.lua
View file @
66eb67ce
--【背景音台】POP TEAM EPIC
--【背景音台】POP TEAM EPIC
function
c33701500
.
initial_effect
(
c
)
local
s
,
id
=
GetID
()
--card,code,oathcount,bgmHintID(卡片,卡号,契约回合,音乐提示)
if
not
GLITCHYLIB_LOADED
then
--card,code,oathcount,bgmHintID(<cardname>,<cardID>,<contractTurn>,<BGMFileName>)
Duel
.
LoadScript
(
"glitchylib_vsnemo.lua"
)
bgmhandle
(
c
,
33701500
,
6
,
1
)
end
end
function
bgmhandle
(
c
,
code
,
count
,
bgmid
,
con
,
cost
,
tg
,
op
)
if
not
TYPE_SOUNDSTAGE
then
--Activate
Duel
.
LoadScript
(
"glitchylib_soundstage.lua"
)
local
e0
=
Effect
.
CreateEffect
(
c
)
end
e0
:
SetType
(
EFFECT_TYPE_ACTIVATE
)
function
s
.
initial_effect
(
c
)
e0
:
SetCode
(
EVENT_FREE_CHAIN
)
--[[Template to add a Sound Stage procedure
if
con
then
e0
:
SetCondition
(
con
)
end
1) Card the procedure will be registered to
e0
:
SetCost
((
cost
and
{
cost
}
or
{
function
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
2) Activation effect of the card (must be EFFECT_TYPE_ACTIVATE)
if
chk
==
0
then
return
true
end
3) ID of the card
if
bgmid
then
Duel
.
Hint
(
HINT_MUSIC
,
0
,
aux
.
Stringid
(
code
,
bgmid
))
end
4) Contract turns of the card
end
})[
1
])
5) Description string ID that contains the name of the music file that plays when the card is activated (aux.Stringid is called by passing the arguments (3) and (5))
if
tg
then
e0
:
SetTarget
(
tg
)
end
aux.AddSoundStageProc(c,卡片发动效果,卡号,契约回合数,音乐文件名CDB提示ID)
if
op
then
e0
:
SetOperation
(
op
)
end
]]
--indes
local
e2
=
Effect
.
CreateEffect
(
c
)
aux
.
AddSoundStageProc
(
c
,
c
:
Activation
(),
id
,
6
,
1
)
e2
:
SetType
(
EFFECT_TYPE_SINGLE
)
e2
:
SetProperty
(
EFFECT_FLAG_SINGLE_RANGE
)
e2
:
SetRange
(
LOCATION_FZONE
)
e2
:
SetCode
(
EFFECT_INDESTRUCTABLE_EFFECT
)
e2
:
SetValue
(
1
)
--Cannot activate
local
e3
=
Effect
.
CreateEffect
(
c
)
e3
:
SetType
(
EFFECT_TYPE_FIELD
)
e3
:
SetCode
(
EFFECT_CANNOT_ACTIVATE
)
e3
:
SetRange
(
LOCATION_FZONE
)
e3
:
SetProperty
(
EFFECT_FLAG_PLAYER_TARGET
+
EFFECT_FLAG_CANNOT_DISABLE
)
e3
:
SetTargetRange
(
1
,
0
)
e3
:
SetValue
(
function
(
e
,
re
,
tp
)
return
re
:
GetHandler
():
IsType
(
TYPE_FIELD
)
and
re
:
IsHasType
(
EFFECT_TYPE_ACTIVATE
)
end
)
--cannot set
local
e4
=
Effect
.
CreateEffect
(
c
)
e4
:
SetType
(
EFFECT_TYPE_FIELD
)
e4
:
SetCode
(
EFFECT_CANNOT_SSET
)
e4
:
SetProperty
(
EFFECT_FLAG_PLAYER_TARGET
)
e4
:
SetRange
(
LOCATION_FZONE
)
e4
:
SetTargetRange
(
1
,
0
)
e4
:
SetTarget
(
function
(
e
,
c
)
return
c
:
IsType
(
TYPE_FIELD
)
end
)
c
:
RegisterEffect
(
e4
)
--Auto oath count
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetType
(
EFFECT_TYPE_FIELD
+
EFFECT_TYPE_CONTINUOUS
)
e1
:
SetCode
(
EVENT_PHASE
+
PHASE_END
)
e1
:
SetProperty
(
EFFECT_FLAG_CANNOT_DISABLE
)
e1
:
SetCountLimit
(
1
)
e1
:
SetRange
(
LOCATION_FZONE
)
e1
:
SetCondition
(
function
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
return
tp
~=
Duel
.
GetTurnPlayer
()
end
)
e1
:
SetOperation
(
function
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
c
=
e
:
GetHandler
()
if
c
:
GetFlagEffect
(
1082946
)
==
0
then
c
:
RegisterFlagEffect
(
1082946
,
RESET_PHASE
+
PHASE_END
+
RESET_SELF_TURN
,
0
,
count
)
c
:
SetTurnCounter
(
0
)
end
local
ct
=
c
:
GetTurnCounter
()
ct
=
ct
+
1
c
:
SetTurnCounter
(
ct
)
if
ct
>=
count
then
Duel
.
Destroy
(
c
,
REASON_RULE
)
c
:
ResetFlagEffect
(
1082946
)
end
end
)
c
:
RegisterEffect
(
e0
)
c
:
RegisterEffect
(
e1
)
c
:
RegisterEffect
(
e2
)
c
:
RegisterEffect
(
e3
)
c
:
RegisterEffect
(
e4
)
_G
[
"c"
..
code
][
c
]
=
e1
end
end
\ No newline at end of file
expansions/script/glitchylib_regeff.lua
View file @
66eb67ce
EFFECT_NO_RECOVER
=
33720228
--Affected player cannot gain LP by card effects
aux
.
EnabledRegisteredEffectMods
=
{}
--EFFECT TABLES
--EFFECT TABLES
function
Auxiliary
.
CheckAlreadyRegisteredEffects
()
if
aux
.
CheckAlreadyRegisteredEffectsFlag
then
return
end
aux
.
CheckAlreadyRegisteredEffectsFlag
=
true
local
e1
=
Effect
.
GlobalEffect
()
e1
:
SetType
(
EFFECT_TYPE_FIELD
|
EFFECT_TYPE_CONTINUOUS
)
e1
:
SetProperty
(
EFFECT_FLAG_NO_TURN_RESET
)
e1
:
SetCode
(
EVENT_PREDRAW
)
e1
:
OPT
()
e1
:
SetOperation
(
function
(
e
)
local
g
=
Duel
.
Group
(
aux
.
TRUE
,
0
,
LOCATION_ALL
,
LOCATION_ALL
,
nil
)
for
tc
in
aux
.
Next
(
g
)
do
if
not
global_card_effect_table
[
tc
]
then
local
code
=
tc
:
GetOriginalCode
()
Duel
.
SetMetatable
(
tc
,
_G
[
"c"
..
code
])
tc
:
ReplaceEffect
(
CARD_CYBER_HARPIE_LADY
,
0
,
0
)
tc
:
SetStatus
(
STATUS_EFFECT_REPLACED
,
false
)
local
s
=
getmetatable
(
c
)
s
.
initial_effect
(
tc
)
end
end
end
)
Duel
.
RegisterEffect
(
e1
,
0
)
end
function
Effect
.
GLGetTargetRange
(
e
)
if
not
global_target_range_effect_table
[
e
]
then
return
false
,
false
end
local
s
=
global_target_range_effect_table
[
e
][
1
]
local
o
=
global_target_range_effect_table
[
e
][
2
]
return
s
,
o
end
--Global Card Effect Table
--Global Card Effect Table
function
Card
.
GetEffects
(
c
)
local
eset
=
global_card_effect_table
[
c
]
if
not
eset
then
return
{}
end
-- local ct=#eset
-- for i = 1,ct do
-- local e=eset[i]
-- if e and e:WasReset(c) then
-- table.remove(global_card_effect_table[c],i)
-- end
-- end
return
global_card_effect_table
[
c
]
end
if
not
global_card_effect_table_global_check
then
if
not
global_card_effect_table_global_check
then
global_card_effect_table_global_check
=
true
global_card_effect_table_global_check
=
true
global_card_effect_table
=
{}
global_card_effect_table
=
{}
...
@@ -9,10 +58,53 @@ if not global_card_effect_table_global_check then
...
@@ -9,10 +58,53 @@ if not global_card_effect_table_global_check then
table.insert
(
global_card_effect_table
[
self
],
e
)
table.insert
(
global_card_effect_table
[
self
],
e
)
local
code
=
e
:
GetCode
()
local
code
=
e
:
GetCode
()
local
selfp
,
oppo
=
e
:
GLGetTargetRange
()
local
condition
,
cost
,
tg
,
op
,
val
=
e
:
GetCondition
(),
e
:
GetCost
(),
e
:
GetTarget
(),
e
:
GetOperation
(),
e
:
GetValue
()
local
condition
,
cost
,
tg
,
op
,
val
=
e
:
GetCondition
(),
e
:
GetCost
(),
e
:
GetTarget
(),
e
:
GetOperation
(),
e
:
GetValue
()
--Damage Replacement Effects (necessary for cards like Sepialife - Passive On Pink)
--Damage Replacement Effects (necessary for cards like Sepialife - Passive On Pink)
if
code
==
EFFECT_REVERSE_DAMAGE
or
code
==
EFFECT_REFLECT_DAMAGE
then
if
code
==
EFFECT_REVERSE_DAMAGE
then
local
newcon
=
function
(
e
)
local
tp
=
e
:
GetHandlerPlayer
()
return
(
not
condition
or
condition
(
e
))
and
not
aux
.
IsChangedDamage
and
not
aux
.
IsReplacedDamage
end
e
:
SetCondition
(
newcon
)
--Fix interaction between EFFECT_NO_RECOVER and damage-recovery swap effects (such as Muscle Medic)
if
aux
.
EnabledRegisteredEffectMods
[
EFFECT_NO_RECOVER
]
then
local
newval
=
function
(
e
,
re
,
r
,
rp
,
rc
)
local
res0
=
val
if
type
(
val
)
==
"function"
then
res0
=
val
(
e
,
re
,
r
,
rp
,
rc
)
end
if
aux
.
IsDamageFunctionCalled
then
return
res0
end
local
tp
=
e
:
GetHandlerPlayer
()
local
dam0
,
dam1
=
Duel
.
GetBattleDamage
(
0
),
Duel
.
GetBattleDamage
(
1
)
local
p
=
dam0
>
0
and
0
or
dam1
>
0
and
1
or
nil
if
not
p
then
return
res0
end
local
eset
=
{
Duel
.
IsPlayerAffectedByEffect
(
p
,
EFFECT_NO_RECOVER
)}
if
#
eset
==
0
then
return
res0
else
if
(
selfp
==
0
and
p
==
tp
)
or
(
oppo
==
0
and
p
==
1
-
tp
)
then
return
res0
end
for
_
,
ce
in
ipairs
(
eset
)
do
local
res
=
ce
:
Evaluate
(
p
,
0
,
r
)
if
res
then
return
false
end
end
return
res0
end
end
e
:
SetValue
(
newval
)
end
elseif
code
==
EFFECT_REFLECT_DAMAGE
then
local
newcon
=
function
(
...
)
local
newcon
=
function
(
...
)
return
(
not
condition
or
condition
(
...
))
and
not
aux
.
IsChangedDamage
and
not
aux
.
IsReplacedDamage
return
(
not
condition
or
condition
(
...
))
and
not
aux
.
IsChangedDamage
and
not
aux
.
IsReplacedDamage
end
end
...
@@ -99,6 +191,7 @@ if not global_card_effect_table_global_check then
...
@@ -99,6 +191,7 @@ if not global_card_effect_table_global_check then
end
end
end
end
if
aux
.
PreventSecondRegistration
then
return
end
return
self
.
register_global_card_effect_table
(
self
,
e
,
forced
)
return
self
.
register_global_card_effect_table
(
self
,
e
,
forced
)
end
end
end
end
...
@@ -116,11 +209,20 @@ if not global_duel_effect_table_global_check then
...
@@ -116,11 +209,20 @@ if not global_duel_effect_table_global_check then
local
condition
,
cost
,
tg
,
op
,
val
=
e
:
GetCondition
(),
e
:
GetCost
(),
e
:
GetTarget
(),
e
:
GetOperation
(),
e
:
GetValue
()
local
condition
,
cost
,
tg
,
op
,
val
=
e
:
GetCondition
(),
e
:
GetCost
(),
e
:
GetTarget
(),
e
:
GetOperation
(),
e
:
GetValue
()
--Damage Replacement Effects
--Damage Replacement Effects
if
code
==
EFFECT_REVERSE_DAMAGE
or
code
==
EFFECT_REFLECT_DAMAGE
then
if
code
==
EFFECT_REVERSE_DAMAGE
then
local
newcon
=
function
(
e
,
...
)
local
tp
=
e
:
GetHandlerPlayer
()
return
(
not
condition
or
condition
(
...
))
and
not
aux
.
IsChangedDamage
and
not
aux
.
IsReplacedDamage
and
not
Duel
.
IsPlayerAffectedByEffect
(
tp
,
EFFECT_NO_RECOVER
)
end
e
:
SetCondition
(
newcon
)
elseif
code
==
EFFECT_REFLECT_DAMAGE
then
local
newcon
=
function
(
...
)
local
newcon
=
function
(
...
)
return
(
not
condition
or
condition
(
...
))
and
not
aux
.
IsChangedDamage
and
not
aux
.
IsReplacedDamage
return
(
not
condition
or
condition
(
...
))
and
not
aux
.
IsChangedDamage
and
not
aux
.
IsReplacedDamage
end
end
e
:
SetCondition
(
newcon
)
e
:
SetCondition
(
newcon
)
elseif
code
==
EFFECT_CHANGE_DAMAGE
then
elseif
code
==
EFFECT_CHANGE_DAMAGE
then
local
newcon
=
function
(
...
)
local
newcon
=
function
(
...
)
return
(
not
condition
or
condition
(
...
))
and
not
aux
.
IsReplacedDamage
return
(
not
condition
or
condition
(
...
))
and
not
aux
.
IsReplacedDamage
...
@@ -202,6 +304,7 @@ if not global_duel_effect_table_global_check then
...
@@ -202,6 +304,7 @@ if not global_duel_effect_table_global_check then
end
end
end
end
if
aux
.
PreventSecondRegistration
then
return
end
return
Duel
.
register_global_duel_effect_table
(
e
,
tp
)
return
Duel
.
register_global_duel_effect_table
(
e
,
tp
)
end
end
end
end
\ No newline at end of file
expansions/script/glitchylib_soundstage.lua
0 → 100644
View file @
66eb67ce
--Library for Sound Stage Cards
TYPE_SOUNDSTAGE
=
0x2000000000
FLAG_SOUNDSTAGE_CONTRACT
=
1082946
--Handle card type overwriting
Auxiliary
.
SoundStage
=
{}
local
get_type
,
get_orig_type
,
get_prev_type_field
,
get_active_type
,
is_active_type
,
get_reason
,
get_fusion_type
,
get_synchro_type
,
get_xyz_type
,
get_link_type
,
get_ritual_type
=
Card
.
GetType
,
Card
.
GetOriginalType
,
Card
.
GetPreviousTypeOnField
,
Effect
.
GetActiveType
,
Effect
.
IsActiveType
,
Card
.
GetReason
,
Card
.
GetFusionType
,
Card
.
GetSynchroType
,
Card
.
GetXyzType
,
Card
.
GetLinkType
,
Card
.
GetRitualType
Card
.
GetType
=
function
(
c
,
scard
,
sumtype
,
p
)
local
tpe
=
scard
and
get_type
(
c
,
scard
,
sumtype
,
p
)
or
get_type
(
c
)
if
Auxiliary
.
SoundStage
[
c
]
then
tpe
=
(
tpe
&
(
~
TYPE_FIELD
))
|
TYPE_SOUNDSTAGE
end
return
tpe
end
Card
.
GetOriginalType
=
function
(
c
)
local
tpe
=
get_orig_type
(
c
)
if
Auxiliary
.
SoundStage
[
c
]
then
tpe
=
(
tpe
&
(
~
TYPE_FIELD
))
|
TYPE_SOUNDSTAGE
end
return
tpe
end
Card
.
GetPreviousTypeOnField
=
function
(
c
)
local
tpe
=
get_prev_type_field
(
c
)
if
Auxiliary
.
SoundStage
[
c
]
then
tpe
=
(
tpe
&
(
~
TYPE_FIELD
))
|
TYPE_SOUNDSTAGE
end
return
tpe
end
Effect
.
GetActiveType
=
function
(
e
)
local
tpe
=
get_active_type
(
e
)
local
c
=
e
:
GetType
()
&
0x7f0
>
0
and
e
:
GetHandler
()
or
e
:
GetOwner
()
if
not
(
e
:
IsHasType
(
EFFECT_TYPE_ACTIVATE
)
and
c
:
IsType
(
TYPE_PENDULUM
))
and
c
:
IsType
(
TYPE_SOUNDSTAGE
)
then
tpe
=
(
tpe
&
(
~
TYPE_FIELD
))
|
TYPE_SOUNDSTAGE
end
return
tpe
end
Effect
.
IsActiveType
=
function
(
e
,
typ
)
return
e
:
GetActiveType
()
&
typ
>
0
end
Card
.
GetReason
=
function
(
c
)
local
rs
=
get_reason
(
c
)
local
rc
=
c
:
GetReasonCard
()
if
rc
and
Auxiliary
.
SoundStage
[
rc
]
then
rs
=
rs
|
REASON_DRIVE
end
return
rs
end
Card
.
GetFusionType
=
function
(
c
)
local
tpe
=
get_fusion_type
(
c
)
if
Auxiliary
.
SoundStage
[
c
]
then
tpe
=
(
tpe
&
(
~
TYPE_FIELD
))
|
TYPE_SOUNDSTAGE
end
return
tpe
end
Card
.
GetSynchroType
=
function
(
c
)
local
tpe
=
get_synchro_type
(
c
)
if
Auxiliary
.
SoundStage
[
c
]
then
tpe
=
(
tpe
&
(
~
TYPE_FIELD
))
|
TYPE_SOUNDSTAGE
end
return
tpe
end
Card
.
GetXyzType
=
function
(
c
)
local
tpe
=
get_xyz_type
(
c
)
if
Auxiliary
.
SoundStage
[
c
]
then
tpe
=
(
tpe
&
(
~
TYPE_FIELD
))
|
TYPE_SOUNDSTAGE
end
return
tpe
end
Card
.
GetLinkType
=
function
(
c
)
local
tpe
=
get_link_type
(
c
)
if
Auxiliary
.
SoundStage
[
c
]
then
tpe
=
(
tpe
&
(
~
TYPE_FIELD
))
|
TYPE_SOUNDSTAGE
end
return
tpe
end
Card
.
GetRitualType
=
function
(
c
)
local
res
=
get_ritual_type
(
c
)
if
Auxiliary
.
SoundStage
[
c
]
then
tpe
=
(
tpe
&
(
~
TYPE_FIELD
))
|
TYPE_SOUNDSTAGE
end
return
tpe
end
function
Auxiliary
.
AddOrigSoundStageType
(
c
)
Auxiliary
.
SoundStage
[
c
]
=
true
end
--Add Sound Stage procedure
function
Auxiliary
.
AddSoundStageProc
(
c
,
e
,
id
,
count
,
bgmid
)
Auxiliary
.
SoundStage
[
c
]
=
true
if
id
and
bgmid
then
local
cost
=
e
:
GetCost
()
e
:
SetCost
(
function
(
_e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
not
cost
or
cost
(
_e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
end
Duel
.
Hint
(
HINT_MUSIC
,
0
,
aux
.
Stringid
(
id
,
bgmid
))
end
)
end
--Cannot be destroyed
local
e2
=
Effect
.
CreateEffect
(
c
)
e2
:
SetType
(
EFFECT_TYPE_SINGLE
)
e2
:
SetProperty
(
EFFECT_FLAG_SINGLE_RANGE
|
EFFECT_FLAG_CANNOT_DISABLE
|
EFFECT_FLAG_UNCOPYABLE
)
e2
:
SetRange
(
LOCATION_FZONE
)
e2
:
SetCode
(
EFFECT_INDESTRUCTABLE
)
e2
:
SetValue
(
1
)
c
:
RegisterEffect
(
e2
)
--Cannot be replaced by activating/Setting Field Spells
local
e3
=
Effect
.
CreateEffect
(
c
)
e3
:
SetType
(
EFFECT_TYPE_FIELD
)
e3
:
SetProperty
(
EFFECT_FLAG_PLAYER_TARGET
|
EFFECT_FLAG_CANNOT_DISABLE
|
EFFECT_FLAG_UNCOPYABLE
)
e3
:
SetCode
(
EFFECT_CANNOT_ACTIVATE
)
e3
:
SetRange
(
LOCATION_FZONE
)
e3
:
SetTargetRange
(
1
,
0
)
e3
:
SetValue
(
function
(
_e
,
re
,
tp
)
return
re
:
GetHandler
():
IsType
(
TYPE_FIELD
|
TYPE_SOUNDSTAGE
)
and
re
:
IsHasType
(
EFFECT_TYPE_ACTIVATE
)
end
)
c
:
RegisterEffect
(
e3
)
local
e4
=
Effect
.
CreateEffect
(
c
)
e4
:
SetType
(
EFFECT_TYPE_FIELD
)
e4
:
SetCode
(
EFFECT_CANNOT_SSET
)
e4
:
SetProperty
(
EFFECT_FLAG_PLAYER_TARGET
|
EFFECT_FLAG_CANNOT_DISABLE
|
EFFECT_FLAG_UNCOPYABLE
)
e4
:
SetRange
(
LOCATION_FZONE
)
e4
:
SetTargetRange
(
1
,
0
)
e4
:
SetTarget
(
aux
.
TargetBoolFunction
(
Card
.
IsType
,
TYPE_FIELD
|
TYPE_SOUNDSTAGE
))
c
:
RegisterEffect
(
e4
)
--Send to GY after contract expiration
local
e6
=
Effect
.
CreateEffect
(
c
)
e6
:
SetType
(
EFFECT_TYPE_FIELD
|
EFFECT_TYPE_CONTINUOUS
)
e6
:
SetCode
(
EVENT_PHASE
|
PHASE_END
)
e6
:
SetProperty
(
EFFECT_FLAG_CANNOT_DISABLE
|
EFFECT_FLAG_UNCOPYABLE
)
e6
:
SetCountLimit
(
1
)
e6
:
SetRange
(
LOCATION_FZONE
)
e6
:
SetOperation
(
aux
.
SoundStageSelfToGY
(
count
))
c
:
RegisterEffect
(
e6
)
--Modify TCG/OCG cards (see e5)
if
not
aux
.
SoundStageModCheck
then
aux
.
SoundStageModCheck
=
true
local
ge1
=
Effect
.
GlobalEffect
()
ge1
:
SetType
(
EFFECT_TYPE_FIELD
|
EFFECT_TYPE_CONTINUOUS
)
ge1
:
SetProperty
(
EFFECT_FLAG_NO_TURN_RESET
)
ge1
:
SetCode
(
EVENT_PREDRAW
)
ge1
:
OPT
()
ge1
:
SetOperation
(
aux
.
SoundStageMod
)
Duel
.
RegisterEffect
(
ge1
,
0
)
end
return
e6
end
Auxiliary
.
SoundStageModCodes
=
{
[
73468603
]
=
173468603
;
--Set Rotation
[
47404795
]
=
147404795
;
--Abyss Actor - Super Producer
[
87498729
]
=
187498729
;
--Fallen of the Tistina
[
30676200
]
=
130676200
;
--Hero of the Ashened City
[
86239173
]
=
186239173
;
--Horned Saurus
[
30680659
]
=
130680659
;
--Water Enchantress of the Temple
[
30453613
]
=
130453613
;
--Awakening of Veidos
[
25964547
]
=
125964547
;
--Dream Mirror Hypnagogia
[
65305978
]
=
165305978
;
--Fire King Sanctuary
[
49568943
]
=
149568943
;
--Vaylantz World - Shinra Bansho
[
75952542
]
=
175952542
;
--Vaylantz World - Konig Wissen
}
function
Auxiliary
.
SoundStageMod
(
e
,
tp
)
local
g
=
Duel
.
GetMatchingGroup
(
function
(
c
)
return
aux
.
SoundStageModCodes
[
c
:
GetOriginalCode
()]
end
,
0
,
LOCATION_ALL
,
LOCATION_ALL
,
nil
)
for
tc
in
aux
.
Next
(
g
)
do
local
code
=
tc
:
GetOriginalCode
()
local
modcode
=
aux
.
SoundStageModCodes
[
code
]
tc
:
ReplaceEffect
(
modcode
,
0
,
0
)
end
end
function
Card
.
IsCanPlaceInFieldZone
(
c
,
placing_player
,
receiving_player
)
receiving_player
=
receiving_player
or
placing_player
local
fc
=
Duel
.
GetFieldGroup
(
receiving_player
,
LOCATION_FZONE
,
0
):
GetFirst
()
if
fc
and
fc
:
IsOriginalType
(
TYPE_SOUNDSTAGE
)
then
return
false
end
return
true
end
function
Auxiliary
.
SoundStageSelfToGY
(
count
)
return
function
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
c
=
e
:
GetHandler
()
if
c
:
GetFlagEffect
(
FLAG_SOUNDSTAGE_CONTRACT
)
==
0
then
c
:
RegisterFlagEffect
(
FLAG_SOUNDSTAGE_CONTRACT
,
RESET_EVENT
|
RESETS_STANDARD
|
RESET_PHASE
|
PHASE_END
,
0
,
count
)
c
:
SetTurnCounter
(
0
)
end
local
ct
=
c
:
GetTurnCounter
()
ct
=
ct
+
1
c
:
SetTurnCounter
(
ct
)
if
ct
>=
count
then
Duel
.
SendtoGrave
(
c
,
nil
,
REASON_RULE
)
end
end
end
expansions/script/glitchylib_vsnemo.lua
View file @
66eb67ce
...
@@ -2,10 +2,22 @@ GLITCHYLIB_LOADED = true
...
@@ -2,10 +2,22 @@ GLITCHYLIB_LOADED = true
self_reference_effect
=
nil
self_reference_effect
=
nil
self_reference_tp
=
nil
self_reference_tp
=
nil
Duel
.
LoadScript
(
"glitchylib_regeff.lua"
)
--Glitchylib imports
EFFECT_CHANGE_RECOVER
=
1508
--Modified functions
--Modified functions
local
duel_recover
,
duel_damage
,
aux_damcon1
=
Duel
.
Recover
,
Duel
.
Damage
,
Auxiliary
.
damcon1
local
duel_recover
,
duel_damage
,
aux_damcon1
=
Duel
.
Recover
,
Duel
.
Damage
,
Auxiliary
.
damcon1
Duel
.
Recover
=
function
(
p
,
v
,
r
,
...
)
Duel
.
Recover
=
function
(
p
,
v
,
r
,
...
)
aux
.
IsRecoverFunctionCalled
=
true
for
_
,
e
in
ipairs
({
Duel
.
IsPlayerAffectedByEffect
(
p
,
EFFECT_NO_RECOVER
)})
do
if
e
:
Evaluate
(
p
,
v
,
r
,
...
)
then
aux
.
IsRecoverFunctionCalled
=
false
return
0
end
end
if
Duel
.
IsPlayerAffectedByEffect
(
p
,
EFFECT_CHANGE_RECOVER
)
then
if
Duel
.
IsPlayerAffectedByEffect
(
p
,
EFFECT_CHANGE_RECOVER
)
then
for
_
,
e
in
ipairs
({
Duel
.
IsPlayerAffectedByEffect
(
p
,
EFFECT_CHANGE_RECOVER
)})
do
for
_
,
e
in
ipairs
({
Duel
.
IsPlayerAffectedByEffect
(
p
,
EFFECT_CHANGE_RECOVER
)})
do
local
val
=
e
:
GetValue
()
local
val
=
e
:
GetValue
()
...
@@ -13,26 +25,41 @@ Duel.Recover = function(p,v,r,...)
...
@@ -13,26 +25,41 @@ Duel.Recover = function(p,v,r,...)
if
aux
.
GetValueType
(
val
)
~=
"number"
then
if
aux
.
GetValueType
(
val
)
~=
"number"
then
val
=
val
(
e
,
r
,
v
)
val
=
val
(
e
,
r
,
v
)
end
end
return
duel_recover
(
p
,
val
,
r
,
...
)
local
res
=
duel_recover
(
p
,
val
,
r
,
...
)
aux
.
IsRecoverFunctionCalled
=
false
return
res
end
end
end
end
else
else
return
duel_recover
(
p
,
v
,
r
,
...
)
local
res
=
duel_recover
(
p
,
v
,
r
,
...
)
aux
.
IsRecoverFunctionCalled
=
false
return
res
end
end
end
end
Duel
.
Damage
=
function
(
p
,
v
,
r
,
...
)
Duel
.
Damage
=
function
(
p
,
v
,
r
,
...
)
aux
.
IsDamageFunctionCalled
=
true
if
Duel
.
IsPlayerAffectedByEffect
(
p
,
EFFECT_REVERSE_DAMAGE
)
and
Duel
.
IsPlayerAffectedByEffect
(
p
,
EFFECT_CHANGE_RECOVER
)
then
if
Duel
.
IsPlayerAffectedByEffect
(
p
,
EFFECT_REVERSE_DAMAGE
)
and
Duel
.
IsPlayerAffectedByEffect
(
p
,
EFFECT_CHANGE_RECOVER
)
then
for
_
,
e
in
ipairs
({
Duel
.
IsPlayerAffectedByEffect
(
p
,
EFFECT_NO_RECOVER
)})
do
if
e
:
Evaluate
(
p
,
v
,
r
,
...
)
then
return
0
end
end
for
_
,
e
in
ipairs
({
Duel
.
IsPlayerAffectedByEffect
(
p
,
EFFECT_CHANGE_RECOVER
)})
do
for
_
,
e
in
ipairs
({
Duel
.
IsPlayerAffectedByEffect
(
p
,
EFFECT_CHANGE_RECOVER
)})
do
local
val
=
e
:
GetValue
()
local
val
=
e
:
GetValue
()
if
val
and
(
aux
.
GetValueType
(
val
)
==
"number"
or
val
(
e
,
r
|
REASON_RDAMAGE
,
v
))
then
if
val
and
(
aux
.
GetValueType
(
val
)
==
"number"
or
val
(
e
,
r
|
REASON_RDAMAGE
,
v
))
then
if
aux
.
GetValueType
(
val
)
~=
"number"
then
if
aux
.
GetValueType
(
val
)
~=
"number"
then
val
=
val
(
e
,
r
|
REASON_RDAMAGE
,
v
)
val
=
val
(
e
,
r
|
REASON_RDAMAGE
,
v
)
end
end
return
duel_damage
(
p
,
val
,
r
,
...
)
local
res
=
duel_damage
(
p
,
val
,
r
,
...
)
aux
.
IsDamageFunctionCalled
=
false
return
res
end
end
end
end
else
else
return
duel_damage
(
p
,
v
,
r
,
...
)
local
res
=
duel_damage
(
p
,
v
,
r
,
...
)
aux
.
IsDamageFunctionCalled
=
false
return
res
end
end
end
end
Auxiliary
.
damcon1
=
function
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
Auxiliary
.
damcon1
=
function
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
...
@@ -52,13 +79,18 @@ Auxiliary.damcon1 = function(e,tp,eg,ep,ev,re,r,rp)
...
@@ -52,13 +79,18 @@ Auxiliary.damcon1 = function(e,tp,eg,ep,ev,re,r,rp)
if
ex
and
(
cp
==
tp
or
cp
==
PLAYER_ALL
)
and
not
rd
and
takedamcheck
then
if
ex
and
(
cp
==
tp
or
cp
==
PLAYER_ALL
)
and
not
rd
and
takedamcheck
then
return
true
return
true
end
end
ex
,
cg
,
ct
,
cp
,
cv
=
Duel
.
GetOperationInfo
(
ev
,
CATEGORY_RECOVER
)
ex
,
cg
,
ct
,
cp
,
cv
=
Duel
.
GetOperationInfo
(
ev
,
CATEGORY_RECOVER
)
return
ex
and
(
cp
==
tp
or
cp
==
PLAYER_ALL
)
and
rr
and
takedamcheck
local
recovercheck
=
true
for
_
,
e
in
ipairs
({
Duel
.
IsPlayerAffectedByEffect
(
p
,
EFFECT_NO_RECOVER
)})
do
if
e
:
Evaluate
(
ep
,
ev
,
r
)
then
recovercheck
=
false
break
end
end
return
ex
and
(
cp
==
tp
or
cp
==
PLAYER_ALL
)
and
rr
and
recovercheck
and
takedamcheck
end
end
--Glitchylib imports
EFFECT_CHANGE_RECOVER
=
1508
--Rating types
--Rating types
RATING_LEVEL
=
0x1
RATING_LEVEL
=
0x1
...
@@ -93,6 +125,7 @@ RESETS_STANDARD_ACTIVATION = RESETS_STANDARD&~(RESET_TOFIELD|RESET_LEAVE|RESET
...
@@ -93,6 +125,7 @@ RESETS_STANDARD_ACTIVATION = RESETS_STANDARD&~(RESET_TOFIELD|RESET_LEAVE|RESET
--timings
--timings
RELEVANT_TIMINGS
=
TIMINGS_CHECK_MONSTER
|
TIMING_MAIN_END
|
TIMING_END_PHASE
RELEVANT_TIMINGS
=
TIMINGS_CHECK_MONSTER
|
TIMING_MAIN_END
|
TIMING_END_PHASE
RELEVANT_BATTLE_TIMINGS
=
TIMING_BATTLE_PHASE
|
TIMING_BATTLE_END
|
TIMING_ATTACK
|
TIMING_BATTLE_START
|
TIMING_BATTLE_STEP_END
--win
--win
WIN_REASON_CUSTOM
=
0xff
WIN_REASON_CUSTOM
=
0xff
...
@@ -113,6 +146,8 @@ ARCHE_FUSION = 0x46
...
@@ -113,6 +146,8 @@ ARCHE_FUSION = 0x46
CARD_ANCIENT_PIXIE_DRAGON
=
4179255
CARD_ANCIENT_PIXIE_DRAGON
=
4179255
CARD_BLACK_AND_WHITE_WAVE
=
31677606
CARD_BLACK_AND_WHITE_WAVE
=
31677606
CARD_BLUEEYES_SPIRIT
=
59822133
CARD_BLUEEYES_SPIRIT
=
59822133
CARD_CYBER_DRAGON
=
70095154
CARD_CYBER_HARPIE_LADY
=
80316585
CARD_DESPAIR_FROM_THE_DARK
=
71200730
CARD_DESPAIR_FROM_THE_DARK
=
71200730
CARD_EHERO_BLAZEMAN
=
63060238
CARD_EHERO_BLAZEMAN
=
63060238
CARD_MONSTER_REBORN
=
83764718
CARD_MONSTER_REBORN
=
83764718
...
@@ -121,7 +156,7 @@ CARD_NUMBER_39_UTOPIA = 84013237
...
@@ -121,7 +156,7 @@ CARD_NUMBER_39_UTOPIA = 84013237
CARD_ROTA
=
32807846
CARD_ROTA
=
32807846
CARD_UMI
=
22702055
CARD_UMI
=
22702055
LOCATION_ALL
=
LOCATION_DECK
|
LOCATION_HAND
|
LOCATION_MZONE
|
LOCATION_SZONE
|
LOCATION_GRAVE
|
LOCATION_REMOVED
|
LOCATION_EXTRA
LOCATION_ALL
=
LOCATION_DECK
|
LOCATION_HAND
|
LOCATION_MZONE
|
LOCATION_SZONE
|
LOCATION_GRAVE
|
LOCATION_REMOVED
|
LOCATION_EXTRA
|
LOCATION_OVERLAY
LOCATION_GB
=
LOCATION_GRAVE
|
LOCATION_REMOVED
LOCATION_GB
=
LOCATION_GRAVE
|
LOCATION_REMOVED
MAX_RATING
=
14
MAX_RATING
=
14
...
@@ -182,6 +217,7 @@ COUNTER_SPARKLE = 0x443
...
@@ -182,6 +217,7 @@ COUNTER_SPARKLE = 0x443
TOKEN_BELKA
=
33730163
TOKEN_BELKA
=
33730163
TOKEN_DESPERADO_HEART
=
33720101
TOKEN_DESPERADO_HEART
=
33720101
TOKEN_MONSTER_UNIVERSE
=
33720246
TOKEN_STRELKA
=
33730162
TOKEN_STRELKA
=
33730162
...
@@ -993,11 +1029,11 @@ function Duel.Bounce(g)
...
@@ -993,11 +1029,11 @@ function Duel.Bounce(g)
return
ct
,
#
cg
,
cg
return
ct
,
#
cg
,
cg
end
end
function
Duel
.
ShuffleIntoDeck
(
g
,
p
,
loc
,
seq
,
r
)
function
Duel
.
ShuffleIntoDeck
(
g
,
p
,
loc
,
seq
,
r
,
...
)
if
not
loc
then
loc
=
LOCATION_DECK
|
LOCATION_EXTRA
end
if
not
loc
then
loc
=
LOCATION_DECK
|
LOCATION_EXTRA
end
if
not
seq
then
seq
=
SEQ_DECKSHUFFLE
end
if
not
seq
then
seq
=
SEQ_DECKSHUFFLE
end
if
not
r
then
r
=
REASON_EFFECT
end
if
not
r
then
r
=
REASON_EFFECT
end
local
ct
=
Duel
.
SendtoDeck
(
g
,
p
,
seq
,
r
)
local
ct
=
Duel
.
SendtoDeck
(
g
,
p
,
seq
,
r
,
...
)
if
ct
>
0
then
if
ct
>
0
then
if
seq
==
SEQ_DECKSHUFFLE
then
if
seq
==
SEQ_DECKSHUFFLE
then
aux
.
AfterShuffle
(
g
)
aux
.
AfterShuffle
(
g
)
...
@@ -1524,6 +1560,108 @@ function Card.GlitchyGetPreviousColumnGroup(c,left,right,without_center)
...
@@ -1524,6 +1560,108 @@ function Card.GlitchyGetPreviousColumnGroup(c,left,right,without_center)
end
end
end
end
--Continuous Effects
function
Auxiliary
.
RegisterMaxxCEffect
(
c
,
id
,
p
,
range
,
event
,
cond
,
outchainop
,
inchainop
,
flaglabel
,
reset
,
flagreset
,
label
)
local
rct
,
flagrct
=
1
,
1
if
type
(
reset
)
==
"table"
then
rct
=
reset
[
2
]
reset
=
reset
[
1
]
end
if
type
(
flagreset
)
==
"table"
then
flagrct
=
flagreset
[
2
]
flagreset
=
flagreset
[
1
]
end
local
e2
=
Effect
.
CreateEffect
(
c
)
e2
:
SetType
(
EFFECT_TYPE_FIELD
|
EFFECT_TYPE_CONTINUOUS
)
e2
:
SetCode
(
event
)
e2
:
SetProperty
(
EFFECT_FLAG_DELAY
)
e2
:
SetCondition
(
aux
.
OutsideChainMaxxCCondition
(
cond
))
e2
:
SetOperation
(
outchainop
)
if
label
then
e2
:
SetLabel
(
label
)
end
if
reset
then
e2
:
SetReset
(
reset
,
rct
)
end
if
p
then
Duel
.
RegisterEffect
(
e2
,
p
)
else
e2
:
SetRange
(
range
)
c
:
RegisterEffect
(
e2
)
end
--
local
e3
=
Effect
.
CreateEffect
(
c
)
e3
:
SetType
(
EFFECT_TYPE_CONTINUOUS
|
EFFECT_TYPE_FIELD
)
e3
:
SetCode
(
event
)
e3
:
SetCondition
(
aux
.
InsideChainMaxxCCondition
(
cond
))
e3
:
SetOperation
(
aux
.
RegisterMaxxCFlag
(
id
,
flaglabel
,
flagreset
,
flagrct
))
if
label
then
e3
:
SetLabel
(
label
)
end
if
reset
then
e3
:
SetReset
(
reset
,
rct
)
end
if
p
then
Duel
.
RegisterEffect
(
e3
,
p
)
else
e3
:
SetRange
(
range
)
c
:
RegisterEffect
(
e3
)
end
--
local
e4
=
Effect
.
CreateEffect
(
c
)
e4
:
SetType
(
EFFECT_TYPE_CONTINUOUS
|
EFFECT_TYPE_FIELD
)
e4
:
SetCode
(
EVENT_CHAIN_SOLVED
)
e4
:
SetCondition
(
aux
.
MaxxCFlagCondition
(
id
,
cond
))
e4
:
SetOperation
(
aux
.
ResolvedChainMaxxCOperation
(
id
,
inchainop
))
if
label
then
e4
:
SetLabel
(
label
)
end
if
reset
then
e4
:
SetReset
(
reset
,
rct
)
end
if
p
then
Duel
.
RegisterEffect
(
e4
,
p
)
else
e4
:
SetRange
(
range
)
c
:
RegisterEffect
(
e4
)
end
return
e2
,
e3
,
e4
end
function
Auxiliary
.
OutsideChainMaxxCCondition
(
cond
)
return
function
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
return
(
not
cond
or
cond
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
))
and
not
Duel
.
IsChainSolving
()
end
end
function
Auxiliary
.
InsideChainMaxxCCondition
(
cond
)
return
function
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
return
(
not
cond
or
cond
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
))
and
Duel
.
IsChainSolving
()
end
end
function
Auxiliary
.
RegisterMaxxCFlag
(
id
,
flaglabel
,
reset
,
rct
)
if
not
reset
then
reset
=
0
end
local
resets
=
RESET_CHAIN
|
reset
return
function
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
lab
=
0
if
flaglabel
then
lab
=
flaglabel
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
end
Duel
.
RegisterFlagEffect
(
tp
,
id
,
resets
,
0
,
rct
,
lab
)
end
end
function
Auxiliary
.
MaxxCFlagCondition
(
id
)
return
function
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
return
(
not
cond
or
cond
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
))
and
Duel
.
PlayerHasFlagEffect
(
tp
,
id
)
end
end
function
Auxiliary
.
ResolvedChainMaxxCOperation
(
id
,
op
)
return
function
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
n
=
Duel
.
GetFlagEffect
(
tp
,
id
)
op
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
n
)
Duel
.
ResetFlagEffect
(
tp
,
id
)
end
end
--Counters
--Counters
RELEVANT_REMOVE_EVENT_COUNTERS
=
{
0x100e
}
RELEVANT_REMOVE_EVENT_COUNTERS
=
{
0x100e
}
COUNTED_COUNTERS_FOR_REMOVE_EVENT
=
{}
COUNTED_COUNTERS_FOR_REMOVE_EVENT
=
{}
...
@@ -1642,9 +1780,6 @@ end
...
@@ -1642,9 +1780,6 @@ end
function
Effect
.
Desc
(
e
,
id
,
...
)
function
Effect
.
Desc
(
e
,
id
,
...
)
local
x
=
{
...
}
local
x
=
{
...
}
local
c
=
e
:
GetOwner
()
local
c
=
e
:
GetOwner
()
if
aux
.
GetValueType
(
aux
.
EffectBeingApplied
)
==
"Effect"
and
aux
.
GetValueType
(
aux
.
ProxyEffect
)
==
"Effect"
and
aux
.
ProxyEffect
:
GetOwner
()
==
c
then
c
=
aux
.
EffectBeingApplied
:
GetOwner
()
end
local
code
=
#
x
>
0
and
x
[
1
]
or
c
:
GetOriginalCode
()
local
code
=
#
x
>
0
and
x
[
1
]
or
c
:
GetOriginalCode
()
if
id
<
16
then
if
id
<
16
then
return
e
:
SetDescription
(
aux
.
Stringid
(
code
,
id
))
return
e
:
SetDescription
(
aux
.
Stringid
(
code
,
id
))
...
@@ -1653,9 +1788,6 @@ function Effect.Desc(e,id,...)
...
@@ -1653,9 +1788,6 @@ function Effect.Desc(e,id,...)
end
end
end
end
function
Card
.
AskPlayer
(
c
,
tp
,
desc
)
function
Card
.
AskPlayer
(
c
,
tp
,
desc
)
if
aux
.
GetValueType
(
aux
.
EffectBeingApplied
)
==
"Effect"
and
aux
.
GetValueType
(
aux
.
ProxyEffect
)
==
"Effect"
and
aux
.
ProxyEffect
:
GetHandler
()
==
c
then
c
=
aux
.
EffectBeingApplied
:
GetHandler
()
end
local
string
=
desc
<=
15
and
aux
.
Stringid
(
c
:
GetOriginalCode
(),
desc
)
or
desc
local
string
=
desc
<=
15
and
aux
.
Stringid
(
c
:
GetOriginalCode
(),
desc
)
or
desc
return
Duel
.
SelectYesNo
(
tp
,
string
)
return
Duel
.
SelectYesNo
(
tp
,
string
)
end
end
...
@@ -1709,7 +1841,7 @@ function Auxiliary.Option(id,tp,desc,...)
...
@@ -1709,7 +1841,7 @@ function Auxiliary.Option(id,tp,desc,...)
return
sel
return
sel
end
end
function
Duel
.
RegisterHint
(
p
,
flag
,
reset
,
rct
,
id
,
desc
,
prop
)
function
Duel
.
RegisterHint
(
p
,
flag
,
reset
,
rct
,
id
,
desc
,
prop
,
refeff
)
if
not
reset
then
reset
=
PHASE_END
end
if
not
reset
then
reset
=
PHASE_END
end
if
not
rct
then
rct
=
1
end
if
not
rct
then
rct
=
1
end
if
not
prop
then
prop
=
0
end
if
not
prop
then
prop
=
0
end
...
@@ -1717,12 +1849,24 @@ function Duel.RegisterHint(p,flag,reset,rct,id,desc,prop)
...
@@ -1717,12 +1849,24 @@ function Duel.RegisterHint(p,flag,reset,rct,id,desc,prop)
e
:
Desc
(
desc
,
id
)
e
:
Desc
(
desc
,
id
)
e
:
SetType
(
EFFECT_TYPE_FIELD
)
e
:
SetType
(
EFFECT_TYPE_FIELD
)
e
:
SetProperty
(
EFFECT_FLAG_CLIENT_HINT
|
EFFECT_FLAG_CANNOT_DISABLE
|
EFFECT_FLAG_PLAYER_TARGET
|
prop
)
e
:
SetProperty
(
EFFECT_FLAG_CLIENT_HINT
|
EFFECT_FLAG_CANNOT_DISABLE
|
EFFECT_FLAG_PLAYER_TARGET
|
prop
)
e
:
SetCode
(
EFFECT_FLAG_EFFECT
|
id
)
e
:
SetCode
(
EFFECT_FLAG_EFFECT
|
flag
)
e
:
SetTargetRange
(
1
,
0
)
e
:
SetTargetRange
(
1
,
0
)
if
refeff
then
e
:
SetLabelObject
(
refeff
)
e
:
SetCondition
(
aux
.
ResetHintCondition
)
end
e
:
SetReset
(
RESET_PHASE
|
reset
,
rct
)
e
:
SetReset
(
RESET_PHASE
|
reset
,
rct
)
Duel
.
RegisterEffect
(
e
,
p
)
Duel
.
RegisterEffect
(
e
,
p
)
return
e
return
e
end
end
function
Auxiliary
.
ResetHintCondition
(
e
)
local
refeff
=
e
:
GetLabelObject
()
if
not
refeff
then
e
:
Reset
()
return
false
end
return
true
end
--EDOPro Imports
--EDOPro Imports
function
Auxiliary
.
BitSplit
(
v
)
function
Auxiliary
.
BitSplit
(
v
)
...
@@ -2040,6 +2184,10 @@ function Effect.SetRelevantTimings(e,extra_timings)
...
@@ -2040,6 +2184,10 @@ function Effect.SetRelevantTimings(e,extra_timings)
if
not
extra_timings
then
extra_timings
=
0
end
if
not
extra_timings
then
extra_timings
=
0
end
return
e
:
SetHintTiming
(
extra_timings
,
RELEVANT_TIMINGS
|
extra_timings
)
return
e
:
SetHintTiming
(
extra_timings
,
RELEVANT_TIMINGS
|
extra_timings
)
end
end
function
Effect
.
SetRelevantBattleTimings
(
e
,
extra_timings
)
if
not
extra_timings
then
extra_timings
=
0
end
return
e
:
SetHintTiming
(
extra_timings
,
RELEVANT_BATTLE_TIMINGS
|
extra_timings
)
end
--Labels
--Labels
...
@@ -2054,6 +2202,19 @@ function Effect.SetLabelPair(e,l1,l2)
...
@@ -2054,6 +2202,19 @@ function Effect.SetLabelPair(e,l1,l2)
e
:
SetLabel
(
o1
,
l2
)
e
:
SetLabel
(
o1
,
l2
)
end
end
end
end
function
Effect
.
SetSpecificLabel
(
e
,
l
,
pos
)
if
not
pos
then
pos
=
1
end
local
tab
=
{
e
:
GetLabel
()}
if
#
tab
<
pos
then
for
i
=
1
,
pos
-#
tab
-
1
do
table.insert
(
tab
,
0
)
end
table.insert
(
tab
,
l
)
else
tab
[
pos
]
=
l
end
e
:
SetLabel
(
table.unpack
(
tab
))
end
function
Effect
.
GetSpecificLabel
(
e
,
pos
)
function
Effect
.
GetSpecificLabel
(
e
,
pos
)
if
not
pos
then
pos
=
1
end
if
not
pos
then
pos
=
1
end
local
tab
=
{
e
:
GetLabel
()}
local
tab
=
{
e
:
GetLabel
()}
...
@@ -2681,7 +2842,8 @@ function Duel.IsEndPhase(tp)
...
@@ -2681,7 +2842,8 @@ function Duel.IsEndPhase(tp)
end
end
function
Duel
.
GetNextPhaseCount
(
ph
,
p
)
function
Duel
.
GetNextPhaseCount
(
ph
,
p
)
if
Duel
.
GetCurrentPhase
()
==
ph
and
(
not
p
or
Duel
.
GetTurnPlayer
()
==
p
)
then
if
not
ph
and
not
p
then
return
1
end
if
(
not
ph
or
Duel
.
GetCurrentPhase
()
==
ph
)
and
(
not
p
or
Duel
.
GetTurnPlayer
()
==
p
)
then
return
2
return
2
else
else
return
1
return
1
...
@@ -3184,8 +3346,12 @@ function Card.UpdateATKDEF(c,atk,def,reset,rc,range,cond,prop,desc)
...
@@ -3184,8 +3346,12 @@ function Card.UpdateATKDEF(c,atk,def,reset,rc,range,cond,prop,desc)
end
end
--Protections
--Protections
function
Card
.
CannotBeDestroyedByBattle
(
c
,
val
,
cond
,
reset
,
rc
,
range
,
prop
,
desc
)
function
Card
.
CannotBeDestroyedByBattle
(
c
,
val
,
cond
,
reset
,
rc
,
range
,
prop
,
desc
,
forced
,
typ
)
local
typ
=
EFFECT_TYPE_SINGLE
if
not
typ
and
c
:
IsOriginalType
(
TYPE_EQUIP
)
and
not
range
then
typ
=
EFFECT_TYPE_EQUIP
else
typ
=
typ
or
EFFECT_TYPE_SINGLE
end
local
donotdisable
=
false
local
donotdisable
=
false
local
rc
=
rc
and
rc
or
c
local
rc
=
rc
and
rc
or
c
...
@@ -3226,14 +3392,15 @@ function Card.CannotBeDestroyedByBattle(c,val,cond,reset,rc,range,prop,desc)
...
@@ -3226,14 +3392,15 @@ function Card.CannotBeDestroyedByBattle(c,val,cond,reset,rc,range,prop,desc)
e
:
SetProperty
(
prop
)
e
:
SetProperty
(
prop
)
end
end
c
:
RegisterEffect
(
e
)
c
:
RegisterEffect
(
e
,
forced
)
return
e
return
e
end
end
--Protections: Immunity
--Protections: Immunity
UNAFFECTED_OTHER
=
0x1
UNAFFECTED_OTHER
=
0x1
UNAFFECTED_OPPO
=
0x2
UNAFFECTED_OPPO
=
0x2
UNAFFECTED_OTHER_EQUIP
=
0x100
function
Auxiliary
.
imother
(
e
,
te
)
function
Auxiliary
.
imother
(
e
,
te
)
return
e
:
GetOwner
()
~=
te
:
GetOwner
()
return
e
:
GetOwner
()
~=
te
:
GetOwner
()
...
@@ -3241,14 +3408,24 @@ end
...
@@ -3241,14 +3408,24 @@ end
function
Auxiliary
.
imoval
(
e
,
te
)
function
Auxiliary
.
imoval
(
e
,
te
)
return
e
:
GetOwnerPlayer
()
~=
te
:
GetOwnerPlayer
()
return
e
:
GetOwnerPlayer
()
~=
te
:
GetOwnerPlayer
()
end
end
function
Auxiliary
.
imothereq
(
e
,
te
)
local
owner
,
affecting_owner
=
e
:
GetOwner
(),
te
:
GetOwner
()
return
owner
~=
affecting_owner
and
affecting_owner
~=
owner
:
GetEquipTarget
()
end
Auxiliary
.
UnaffectedProtections
=
{
Auxiliary
.
UnaffectedProtections
=
{
[
UNAFFECTED_OTHER
]
=
aux
.
imother
;
[
UNAFFECTED_OTHER
]
=
aux
.
imother
;
[
UNAFFECTED_OPPO
]
=
aux
.
imoval
;
[
UNAFFECTED_OPPO
]
=
aux
.
imoval
;
[
UNAFFECTED_OTHER_EQUIP
]
=
aux
.
imothereq
;
}
}
function
Card
.
Unaffected
(
c
,
immunity
,
cond
,
reset
,
rc
,
range
,
prop
,
desc
)
function
Card
.
Unaffected
(
c
,
immunity
,
cond
,
reset
,
rc
,
range
,
prop
,
desc
,
forced
,
typ
)
local
typ
=
EFFECT_TYPE_SINGLE
if
not
typ
and
c
:
IsOriginalType
(
TYPE_EQUIP
)
and
not
range
then
if
not
reset
and
not
range
then
typ
=
EFFECT_TYPE_EQUIP
else
typ
=
typ
or
EFFECT_TYPE_SINGLE
end
if
typ
==
EFFECT_TYPE_SINGLE
and
not
reset
and
not
range
then
range
=
c
:
GetOriginalType
()
&
TYPE_FIELD
>
0
and
LOCATION_FZONE
or
c
:
GetOriginalType
()
&
TYPE_ST
>
0
and
LOCATION_SZONE
or
LOCATION_MZONE
range
=
c
:
GetOriginalType
()
&
TYPE_FIELD
>
0
and
LOCATION_FZONE
or
c
:
GetOriginalType
()
&
TYPE_ST
>
0
and
LOCATION_SZONE
or
LOCATION_MZONE
end
end
...
@@ -3272,6 +3449,10 @@ function Card.Unaffected(c,immunity,cond,reset,rc,range,prop,desc)
...
@@ -3272,6 +3449,10 @@ function Card.Unaffected(c,immunity,cond,reset,rc,range,prop,desc)
end
end
local
e
=
Effect
.
CreateEffect
(
rc
)
local
e
=
Effect
.
CreateEffect
(
rc
)
if
desc
then
e
:
SetDescription
(
desc
)
prop
=
prop
|
EFFECT_FLAG_CLIENT_HINT
end
e
:
SetType
(
typ
)
e
:
SetType
(
typ
)
if
range
then
if
range
then
prop
=
prop
|
EFFECT_FLAG_SINGLE_RANGE
prop
=
prop
|
EFFECT_FLAG_SINGLE_RANGE
...
@@ -3293,7 +3474,7 @@ function Card.Unaffected(c,immunity,cond,reset,rc,range,prop,desc)
...
@@ -3293,7 +3474,7 @@ function Card.Unaffected(c,immunity,cond,reset,rc,range,prop,desc)
e
:
SetProperty
(
prop
)
e
:
SetProperty
(
prop
)
end
end
c
:
RegisterEffect
(
e
)
c
:
RegisterEffect
(
e
,
forced
)
return
e
return
e
end
end
...
@@ -3301,6 +3482,12 @@ end
...
@@ -3301,6 +3482,12 @@ end
--Location Check
--Location Check
EFFECT_CARD_HAS_RESOLVED
=
47987298
EFFECT_CARD_HAS_RESOLVED
=
47987298
function
Auxiliary
.
AlreadyInRangeCondition
(
e
,
re
,
se
)
local
se
=
e
and
e
:
GetLabelObject
():
GetLabelObject
()
or
se
return
function
(
c
,
...
)
return
se
==
nil
or
re
~=
se
end
end
function
Auxiliary
.
AlreadyInRangeFilter
(
e
,
f
,
se
)
function
Auxiliary
.
AlreadyInRangeFilter
(
e
,
f
,
se
)
local
se
=
e
and
e
:
GetLabelObject
():
GetLabelObject
()
or
se
local
se
=
e
and
e
:
GetLabelObject
():
GetLabelObject
()
or
se
return
function
(
c
,
...
)
return
function
(
c
,
...
)
...
@@ -3568,6 +3755,17 @@ function Auxiliary.DiscardCost(f,min,max,exc)
...
@@ -3568,6 +3755,17 @@ function Auxiliary.DiscardCost(f,min,max,exc)
Duel
.
DiscardHand
(
tp
,
aux
.
DiscardFilter
(
f
,
true
),
min
,
max
,
REASON_COST
|
REASON_DISCARD
,
exc
)
Duel
.
DiscardHand
(
tp
,
aux
.
DiscardFilter
(
f
,
true
),
min
,
max
,
REASON_COST
|
REASON_DISCARD
,
exc
)
end
end
end
end
function
Auxiliary
.
PayLPCost
(
lp
)
if
not
lp
then
lp
=
1000
end
return
function
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
Duel
.
CheckLPCost
(
tp
,
lp
)
end
Duel
.
PayLPCost
(
tp
,
lp
)
end
end
function
Auxiliary
.
PayHalfLPCost
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
true
end
Duel
.
PayLPCost
(
tp
,
math.floor
(
Duel
.
GetLP
(
tp
)
/
2
))
end
----Self as Cost
----Self as Cost
function
Auxiliary
.
BanishFacedownSelfCost
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
function
Auxiliary
.
BanishFacedownSelfCost
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
...
@@ -4141,6 +4339,4 @@ Card.GetLocation = function(c)
...
@@ -4141,6 +4339,4 @@ Card.GetLocation = function(c)
end
end
end
end
return
locs
return
locs
end
end
\ No newline at end of file
Duel
.
LoadScript
(
"glitchylib_regeff.lua"
)
\ 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