Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
ygopro-2pick
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
MyCard
ygopro-2pick
Commits
a971f79b
Commit
a971f79b
authored
Jul 16, 2013
by
argon
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update
parent
0418303d
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
125 additions
and
18 deletions
+125
-18
ocgcore/effect.h
ocgcore/effect.h
+1
-1
ocgcore/field.cpp
ocgcore/field.cpp
+24
-10
ocgcore/operations.cpp
ocgcore/operations.cpp
+20
-6
script/c42155488.lua
script/c42155488.lua
+79
-0
script/constant.lua
script/constant.lua
+1
-1
No files found.
ocgcore/effect.h
View file @
a971f79b
...
...
@@ -350,7 +350,7 @@ public:
#define EFFECT_BP_TWICE 296
#define EFFECT_UNIQUE_CHECK 297
#define EFFECT_MATCH_KILL 300
#define EFFECT_SYNCHRO_
ASSUME
310
#define EFFECT_SYNCHRO_
CHECK
310
#define EVENT_STARTUP 1000
#define EVENT_FLIP 1001
...
...
ocgcore/field.cpp
View file @
a971f79b
...
...
@@ -1494,30 +1494,39 @@ int32 field::check_synchro_material(card* pcard, int32 findex1, int32 findex2, i
}
int32
field
::
check_tuner_material
(
card
*
pcard
,
card
*
tuner
,
int32
findex1
,
int32
findex2
,
int32
min
,
int32
max
)
{
effect
*
peffect
;
effect
*
passume
=
tuner
->
is_affected_by_effect
(
EFFECT_SYNCHRO_ASSUME
);
if
(
tuner
&&
tuner
->
is_position
(
POS_FACEUP
)
&&
(
tuner
->
get_type
()
&
TYPE_TUNER
)
&&
tuner
->
is_can_be_synchro_material
(
pcard
))
{
if
(
passume
)
passume
->
if
(
!
pduel
->
lua
->
check_matching
(
tuner
,
findex1
,
0
))
effect
*
pcheck
=
tuner
->
is_affected_by_effect
(
EFFECT_SYNCHRO_CHECK
);
if
(
pcheck
)
pcheck
->
get_value
(
tuner
);
if
(
!
pduel
->
lua
->
check_matching
(
tuner
,
findex1
,
0
))
{
pduel
->
restore_assumes
();
return
FALSE
;
}
if
((
peffect
=
tuner
->
is_affected_by_effect
(
EFFECT_SYNCHRO_MATERIAL_CUSTOM
,
pcard
)))
{
if
(
!
peffect
->
target
)
if
(
!
peffect
->
target
)
{
pduel
->
restore_assumes
();
return
FALSE
;
}
pduel
->
lua
->
add_param
(
peffect
,
PARAM_TYPE_EFFECT
);
pduel
->
lua
->
add_param
(
pcard
,
PARAM_TYPE_CARD
);
pduel
->
lua
->
add_param
(
findex2
,
PARAM_TYPE_INDEX
);
pduel
->
lua
->
add_param
(
min
,
PARAM_TYPE_INT
);
pduel
->
lua
->
add_param
(
max
,
PARAM_TYPE_INT
);
if
(
pduel
->
lua
->
check_condition
(
peffect
->
target
,
5
))
if
(
pduel
->
lua
->
check_condition
(
peffect
->
target
,
5
))
{
pduel
->
restore_assumes
();
return
TRUE
;
}
}
else
{
card_vector
nsyn
;
card
*
pm
;
for
(
uint8
p
=
0
;
p
<
2
;
++
p
)
{
for
(
int32
i
=
0
;
i
<
5
;
++
i
)
{
pm
=
player
[
p
].
list_mzone
[
i
];
if
(
pm
&&
pm
!=
tuner
&&
pm
->
is_position
(
POS_FACEUP
)
&&
pduel
->
lua
->
check_matching
(
pm
,
findex2
,
0
)
&&
pm
->
is_can_be_synchro_material
(
pcard
,
tuner
))
{
if
(
pm
&&
pm
!=
tuner
&&
pm
->
is_position
(
POS_FACEUP
)
&&
pm
->
is_can_be_synchro_material
(
pcard
,
tuner
))
{
if
(
pcheck
)
pcheck
->
get_value
(
pm
);
if
(
!
pduel
->
lua
->
check_matching
(
pm
,
findex2
,
0
))
continue
;
nsyn
.
push_back
(
pm
);
pm
->
operation_param
=
pm
->
get_synchro_level
(
pcard
);
}
...
...
@@ -1527,12 +1536,17 @@ int32 field::check_tuner_material(card* pcard, card* tuner, int32 findex1, int32
int32
l1
=
l
&
0xffff
;
//int32 l2 = l >> 16;
int32
lv
=
pcard
->
get_level
();
if
(
lv
==
l1
)
if
(
lv
==
l1
)
{
pduel
->
restore_assumes
();
return
FALSE
;
if
(
check_with_sum_limit
(
&
nsyn
,
lv
-
l1
,
0
,
1
,
min
,
max
))
}
if
(
check_with_sum_limit
(
&
nsyn
,
lv
-
l1
,
0
,
1
,
min
,
max
))
{
pduel
->
restore_assumes
();
return
TRUE
;
}
}
}
pduel
->
restore_assumes
();
return
FALSE
;
}
int32
field
::
check_with_sum_limit
(
card_vector
*
mats
,
int32
acc
,
int32
index
,
int32
count
,
int32
min
,
int32
max
)
{
...
...
ocgcore/operations.cpp
View file @
a971f79b
...
...
@@ -3613,9 +3613,14 @@ int32 field::select_synchro_material(int16 step, uint8 playerid, card * pcard, i
effect
*
peffect
;
for
(
uint8
p
=
0
;
p
<
2
;
++
p
)
{
for
(
int32
i
=
0
;
i
<
5
;
++
i
)
{
pduel
->
restore_assumes
();
tuner
=
player
[
p
].
list_mzone
[
i
];
if
(
tuner
&&
tuner
->
is_position
(
POS_FACEUP
)
&&
(
tuner
->
get_type
()
&
TYPE_TUNER
)
&&
pduel
->
lua
->
check_matching
(
tuner
,
-
2
,
0
)
&&
tuner
->
is_can_be_synchro_material
(
pcard
))
{
if
(
tuner
&&
tuner
->
is_position
(
POS_FACEUP
)
&&
(
tuner
->
get_type
()
&
TYPE_TUNER
)
&&
tuner
->
is_can_be_synchro_material
(
pcard
))
{
effect
*
pcheck
=
tuner
->
is_affected_by_effect
(
EFFECT_SYNCHRO_CHECK
);
if
(
pcheck
)
pcheck
->
get_value
(
tuner
);
if
(
!
pduel
->
lua
->
check_matching
(
tuner
,
-
2
,
0
))
continue
;
if
((
peffect
=
tuner
->
is_affected_by_effect
(
EFFECT_SYNCHRO_MATERIAL_CUSTOM
,
pcard
)))
{
if
(
!
peffect
->
target
)
continue
;
...
...
@@ -3632,8 +3637,11 @@ int32 field::select_synchro_material(int16 step, uint8 playerid, card * pcard, i
for
(
uint8
np
=
0
;
np
<
2
;
++
np
)
{
for
(
int32
j
=
0
;
j
<
5
;
++
j
)
{
pm
=
player
[
np
].
list_mzone
[
j
];
if
(
pm
&&
pm
!=
tuner
&&
pm
->
is_position
(
POS_FACEUP
)
&&
pduel
->
lua
->
check_matching
(
pm
,
-
1
,
0
)
&&
pm
->
is_can_be_synchro_material
(
pcard
,
tuner
))
{
if
(
pm
&&
pm
!=
tuner
&&
pm
->
is_position
(
POS_FACEUP
)
&&
pm
->
is_can_be_synchro_material
(
pcard
,
tuner
))
{
if
(
pcheck
)
pcheck
->
get_value
(
pm
);
if
(
!
pduel
->
lua
->
check_matching
(
pm
,
-
1
,
0
))
continue
;
nsyn
.
push_back
(
pm
);
pm
->
operation_param
=
pm
->
get_synchro_level
(
pcard
);
}
...
...
@@ -3651,6 +3659,7 @@ int32 field::select_synchro_material(int16 step, uint8 playerid, card * pcard, i
}
}
}
pduel
->
restore_assumes
();
if
(
core
.
select_cards
.
size
()
==
0
)
return
TRUE
;
pduel
->
write_buffer8
(
MSG_HINT
);
...
...
@@ -3662,6 +3671,7 @@ int32 field::select_synchro_material(int16 step, uint8 playerid, card * pcard, i
}
case
1
:
{
card
*
tuner
=
core
.
select_cards
[
returns
.
bvalue
[
1
]];
effect
*
pcheck
=
tuner
->
is_affected_by_effect
(
EFFECT_SYNCHRO_CHECK
);
core
.
units
.
begin
()
->
ptarget
=
(
group
*
)
tuner
;
effect
*
peffect
;
if
((
peffect
=
tuner
->
is_affected_by_effect
(
EFFECT_SYNCHRO_MATERIAL_CUSTOM
,
pcard
)))
{
...
...
@@ -3679,8 +3689,11 @@ int32 field::select_synchro_material(int16 step, uint8 playerid, card * pcard, i
for
(
uint8
np
=
0
;
np
<
2
;
++
np
)
{
for
(
int32
i
=
0
;
i
<
5
;
++
i
)
{
card
*
pm
=
player
[
np
].
list_mzone
[
i
];
if
(
pm
&&
pm
!=
tuner
&&
pm
->
is_position
(
POS_FACEUP
)
&&
pduel
->
lua
->
check_matching
(
pm
,
-
1
,
0
)
&&
pm
->
is_can_be_synchro_material
(
pcard
,
tuner
))
{
if
(
pm
&&
pm
!=
tuner
&&
pm
->
is_position
(
POS_FACEUP
)
&&
pm
->
is_can_be_synchro_material
(
pcard
,
tuner
))
{
if
(
pcheck
)
pcheck
->
get_value
(
pm
);
if
(
!
pduel
->
lua
->
check_matching
(
pm
,
-
1
,
0
))
continue
;
core
.
select_cards
.
push_back
(
pm
);
pm
->
operation_param
=
pm
->
get_synchro_level
(
pcard
);
}
...
...
@@ -3697,6 +3710,7 @@ int32 field::select_synchro_material(int16 step, uint8 playerid, card * pcard, i
add_process
(
PROCESSOR_SELECT_SUM
,
0
,
0
,
0
,
lv
-
l1
,
playerid
+
(
min
<<
16
)
+
(
max
<<
24
));
core
.
units
.
begin
()
->
step
=
2
;
}
pduel
->
restore_assumes
();
return
FALSE
;
}
case
2
:
{
...
...
script/c42155488.lua
0 → 100644
View file @
a971f79b
--ジェノミックス・ファイター --test
function
c42155488
.
initial_effect
(
c
)
--summon with no tribute
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetDescription
(
aux
.
Stringid
(
42155488
,
0
))
e1
:
SetProperty
(
EFFECT_FLAG_CANNOT_DISABLE
+
EFFECT_FLAG_UNCOPYABLE
)
e1
:
SetType
(
EFFECT_TYPE_SINGLE
)
e1
:
SetCode
(
EFFECT_SUMMON_PROC
)
e1
:
SetCondition
(
c42155488
.
ntcon
)
e1
:
SetOperation
(
c42155488
.
ntop
)
c
:
RegisterEffect
(
e1
)
--declear
local
e2
=
Effect
.
CreateEffect
(
c
)
e2
:
SetDescription
(
aux
.
Stringid
(
42155488
,
1
))
e2
:
SetType
(
EFFECT_TYPE_IGNITION
)
e2
:
SetRange
(
LOCATION_MZONE
)
e2
:
SetCountLimit
(
1
)
e2
:
SetTarget
(
c42155488
.
dectg
)
e2
:
SetOperation
(
c42155488
.
decop
)
c
:
RegisterEffect
(
e2
)
end
function
c42155488
.
ntcon
(
e
,
c
)
if
c
==
nil
then
return
true
end
return
c
:
GetLevel
()
>
4
and
Duel
.
GetLocationCount
(
c
:
GetControler
(),
LOCATION_MZONE
)
>
0
end
function
c42155488
.
ntop
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
c
)
--change base attack
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetType
(
EFFECT_TYPE_SINGLE
)
e1
:
SetProperty
(
EFFECT_FLAG_SINGLE_RANGE
)
e1
:
SetRange
(
LOCATION_MZONE
)
e1
:
SetReset
(
RESET_EVENT
+
0xff0000
)
e1
:
SetCode
(
EFFECT_SET_BASE_ATTACK
)
e1
:
SetValue
(
1100
)
c
:
RegisterEffect
(
e1
)
local
e2
=
e1
:
Clone
()
e2
:
SetCode
(
EFFECT_CHANGE_LEVEL
)
e2
:
SetValue
(
3
)
c
:
RegisterEffect
(
e2
)
end
function
c42155488
.
dectg
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
true
end
Duel
.
Hint
(
HINT_SELECTMSG
,
tp
,
563
)
local
rc
=
Duel
.
AnnounceRace
(
tp
,
1
,
0xffffff
)
e
:
SetLabel
(
rc
)
local
e1
=
Effect
.
CreateEffect
(
e
:
GetHandler
())
e1
:
SetType
(
EFFECT_TYPE_FIELD
)
e1
:
SetCode
(
EFFECT_CANNOT_SUMMON
)
e1
:
SetProperty
(
EFFECT_FLAG_PLAYER_TARGET
)
e1
:
SetTargetRange
(
1
,
0
)
e1
:
SetTarget
(
c42155488
.
sumlimit
)
e1
:
SetReset
(
RESET_PHASE
+
PHASE_END
)
e1
:
SetLabel
(
rc
)
Duel
.
RegisterEffect
(
e1
,
tp
)
local
e2
=
e1
:
Clone
()
e2
:
SetCode
(
EFFECT_CANNOT_SPECIAL_SUMMON
)
Duel
.
RegisterEffect
(
e2
,
tp
)
end
function
c42155488
.
sumlimit
(
e
,
c
)
return
not
c
:
IsRace
(
e
:
GetLabel
())
end
function
c42155488
.
decop
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
local
c
=
e
:
GetHandler
()
if
c
:
IsRelateToEffect
(
e
)
and
c
:
IsFaceup
()
then
local
rc
=
e
:
GetLabel
()
c
:
SetHint
(
CHINT_RACE
,
rc
)
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetProperty
(
EFFECT_FLAG_CANNOT_DISABLE
)
e1
:
SetType
(
EFFECT_TYPE_SINGLE
)
e1
:
SetCode
(
EFFECT_SYNCHRO_CHECK
)
e1
:
SetValue
(
c42155488
.
syncheck
)
e1
:
SetReset
(
RESET_EVENT
+
0x1fe0000
+
RESET_PHASE
+
PHASE_END
)
e1
:
SetLabel
(
rc
)
c
:
RegisterEffect
(
e1
)
end
end
function
c42155488
.
syncheck
(
e
,
c
)
c
:
AssumeProperty
(
ASSUME_RACE
,
e
:
GetLabel
())
end
script/constant.lua
View file @
a971f79b
...
...
@@ -440,7 +440,7 @@ EFFECT_REMOVE_BRAINWASHING =295
EFFECT_BP_TWICE
=
296
EFFECT_UNIQUE_CHECK
=
297
EFFECT_MATCH_KILL
=
300
EFFECT_SYNCHRO_
ASSUME
=
310
EFFECT_SYNCHRO_
CHECK
=
310
EVENT_STARTUP
=
1000
EVENT_FLIP
=
1001
...
...
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