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
95eb5a6a
Commit
95eb5a6a
authored
Feb 08, 2018
by
MobiusMei
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
0a10d8ab
4098ec72
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
197 additions
and
34 deletions
+197
-34
2pick/pick.lua
2pick/pick.lua
+34
-5
ocgcore/card.cpp
ocgcore/card.cpp
+5
-0
ocgcore/duel.cpp
ocgcore/duel.cpp
+6
-0
ocgcore/field.h
ocgcore/field.h
+19
-0
ocgcore/interpreter.cpp
ocgcore/interpreter.cpp
+33
-1
ocgcore/libcard.cpp
ocgcore/libcard.cpp
+40
-16
ocgcore/libduel.cpp
ocgcore/libduel.cpp
+52
-12
ocgcore/operations.cpp
ocgcore/operations.cpp
+5
-0
ocgcore/scriptlib.h
ocgcore/scriptlib.h
+3
-0
No files found.
2pick/pick.lua
View file @
95eb5a6a
...
...
@@ -18,6 +18,11 @@ local extra_sp={
[
TYPE_LINK
]
=
{[
0
]
=
{},[
1
]
=
{}},
}
local
xyz_plain
=
{[
0
]
=
{},[
1
]
=
{}}
local
xyz_adv
=
{[
0
]
=
{},[
1
]
=
{}}
local
extra_fixed
=
{
62709239
,
95169481
}
function
Auxiliary
.
SplitData
(
inputstr
)
local
t
=
{}
for
str
in
string.gmatch
(
inputstr
,
"([^|]+)"
)
do
...
...
@@ -44,6 +49,13 @@ function Auxiliary.LoadDB(p,pool)
table.insert
(
list
[
p
],
code
)
end
end
if
(
cat
&
TYPE_XYZ
)
>
0
then
if
lv
>
4
then
table.insert
(
xyz_adv
[
p
],
code
)
else
table.insert
(
xyz_plain
[
p
],
code
)
end
end
elseif
(
cat
&
TYPE_TOKEN
)
==
0
then
if
(
cat
&
TYPE_MONSTER
)
>
0
then
table.insert
(
main_monster
[
p
],
code
)
...
...
@@ -81,7 +93,7 @@ function Auxiliary.SaveDeck()
Duel
.
SavePickDeck
(
p
,
g
)
end
end
function
Auxiliary
.
SinglePick
(
p
,
list
,
count
,
ex_list
,
ex_count
,
copy
)
function
Auxiliary
.
SinglePick
(
p
,
list
,
count
,
ex_list
,
ex_count
,
copy
,
lv_diff
,
fixed
)
if
not
Duel
.
IsPlayerNeedToPickDeck
(
p
)
then
return
end
local
g1
=
Group
.
CreateGroup
()
local
g2
=
Group
.
CreateGroup
()
...
...
@@ -95,7 +107,8 @@ function Auxiliary.SinglePick(p,list,count,ex_list,ex_count,copy)
local
pick_count
=
0
while
pick_count
<
count
do
local
code
=
plist
[
math.random
(
#
plist
)]
if
not
ag
:
IsExists
(
Card
.
IsCode
,
1
,
nil
,
code
)
then
local
lv
=
Duel
.
ReadCard
(
code
,
CARDDATA_LEVEL
)
if
not
ag
:
IsExists
(
Card
.
IsCode
,
1
,
nil
,
code
)
and
not
(
lv_diff
and
g
:
IsExists
(
Card
.
IsLevel
,
1
,
nil
,
lv
))
then
local
card
=
Duel
.
CreateToken
(
p
,
code
)
g
:
AddCard
(
card
)
ag
:
AddCard
(
card
)
...
...
@@ -111,7 +124,8 @@ function Auxiliary.SinglePick(p,list,count,ex_list,ex_count,copy)
local
ex_pick_count
=
0
while
ex_pick_count
<
ex_count
do
local
code
=
ex_plist
[
math.random
(
#
ex_plist
)]
if
not
ag
:
IsExists
(
Card
.
IsCode
,
1
,
nil
,
code
)
then
local
lv
=
Duel
.
ReadCard
(
code
,
CARDDATA_LEVEL
)
if
not
ag
:
IsExists
(
Card
.
IsCode
,
1
,
nil
,
code
)
and
not
(
lv_diff
and
g
:
IsExists
(
Card
.
IsLevel
,
1
,
nil
,
lv
))
then
local
card
=
Duel
.
CreateToken
(
p
,
code
)
g
:
AddCard
(
card
)
ag
:
AddCard
(
card
)
...
...
@@ -119,6 +133,12 @@ function Auxiliary.SinglePick(p,list,count,ex_list,ex_count,copy)
end
end
end
if
fixed
then
for
_
,
code
in
ipairs
(
fixed
)
do
local
card
=
Duel
.
CreateToken
(
p
,
code
)
g
:
AddCard
(
card
)
end
end
Duel
.
SendtoDeck
(
g
,
nil
,
0
,
REASON_RULE
)
end
local
sg
=
g1
:
Clone
()
...
...
@@ -176,13 +196,22 @@ function Auxiliary.StartPick(e)
for
tp
,
list
in
pairs
(
extra_sp
)
do
if
tp
~=
TYPE_FUSION
then
for
p
=
0
,
1
do
Auxiliary
.
SinglePick
(
p
,
list
,
4
,
nil
,
nil
,
false
)
if
tp
==
TYPE_XYZ
then
Auxiliary
.
SinglePick
(
p
,
xyz_plain
,
3
,
xyz_adv
,
1
,
false
)
else
local
lv_diff
=
(
tp
==
TYPE_SYNCHRO
)
Auxiliary
.
SinglePick
(
p
,
list
,
4
,
nil
,
nil
,
false
,
lv_diff
)
end
end
end
end
for
i
=
1
,
2
do
for
p
=
0
,
1
do
Auxiliary
.
SinglePick
(
p
,
extra
,
4
,
nil
,
nil
,
false
)
if
i
==
1
then
Auxiliary
.
SinglePick
(
p
,
extra
,
4
,
nil
,
nil
,
false
)
else
Auxiliary
.
SinglePick
(
p
,
extra
,
2
,
nil
,
nil
,
false
,
false
,
extra_fixed
)
end
end
end
Auxiliary
.
SaveDeck
()
...
...
ocgcore/card.cpp
View file @
95eb5a6a
...
...
@@ -1007,6 +1007,11 @@ uint32 card::get_ritual_level(card* pcard) {
uint32
card
::
check_xyz_level
(
card
*
pcard
,
uint32
lv
)
{
if
(
status
&
STATUS_NO_LEVEL
)
return
0
;
//modded - rose xyz summon
card
*
rcard
=
pduel
->
game_field
->
rose_card
;
uint32
rlv
=
pduel
->
game_field
->
rose_level
;
if
(
rcard
==
this
&&
rlv
==
lv
)
return
rlv
;
uint32
lev
;
effect_set
eset
;
filter_effect
(
EFFECT_XYZ_LEVEL
,
&
eset
);
...
...
ocgcore/duel.cpp
View file @
95eb5a6a
...
...
@@ -18,6 +18,9 @@ duel::duel() {
lua
=
new
interpreter
(
this
);
game_field
=
new
field
(
this
);
game_field
->
temp_card
=
new_card
(
0
);
//modded - for rose xyz summon
game_field
->
rose_card
=
0
;
game_field
->
rose_level
=
0
;
clear_buffer
();
}
duel
::~
duel
()
{
...
...
@@ -43,6 +46,9 @@ void duel::clear() {
effects
.
clear
();
game_field
=
new
field
(
this
);
game_field
->
temp_card
=
new_card
(
0
);
//modded - for rose xyz summon
game_field
->
rose_card
=
0
;
game_field
->
rose_level
=
0
;
}
card
*
duel
::
new_card
(
uint32
code
)
{
card
*
pcard
=
new
card
(
this
);
...
...
ocgcore/field.h
View file @
95eb5a6a
...
...
@@ -342,6 +342,9 @@ public:
processor
core
;
return_value
returns
;
tevent
nil_event
;
//modded - for rose xyz summon
card
*
rose_card
;
uint32
rose_level
;
static
int32
field_used_count
[
32
];
explicit
field
(
duel
*
pduel
);
...
...
@@ -913,7 +916,23 @@ public:
#define MSG_CUSTOM_MSG 180
#define MSG_SELECT_UNSELECT_CARD 190
//card datas for Duel.ReadCard / Card.SetCardData, arranged by database format
#define CARDDATA_CODE 1
#define CARDDATA_ALIAS 2
#define CARDDATA_SETCODE 3
#define CARDDATA_TYPE 4
#define CARDDATA_LEVEL 5
#define CARDDATA_ATTRIBUTE 6
#define CARDDATA_RACE 7
#define CARDDATA_ATTACK 8
#define CARDDATA_DEFENSE 9
#define CARDDATA_LSCALE 10
#define CARDDATA_RSCALE 11
#define CARDDATA_LINK_MARKER 12
//2pick
#define MSG_SAVE_PICK_DECK 220
#define MSG_RESET_TIME 221
#endif
/* FIELD_H_ */
ocgcore/interpreter.cpp
View file @
95eb5a6a
...
...
@@ -23,6 +23,7 @@ static const struct luaL_Reg cardlib[] = {
{
"SetCardData"
,
scriptlib
::
card_set_card_data
},
{
"GetLinkMarker"
,
scriptlib
::
card_get_link_marker
},
{
"GetOriginalLinkMarker"
,
scriptlib
::
card_get_origin_link_marker
},
{
"IsXyzSummonableByRose"
,
scriptlib
::
card_is_xyz_summonable_by_rose
},
{
"GetCode"
,
scriptlib
::
card_get_code
},
{
"GetOriginalCode"
,
scriptlib
::
card_get_origin_code
},
...
...
@@ -387,7 +388,9 @@ static const struct luaL_Reg duellib[] = {
{
"Exile"
,
scriptlib
::
duel_exile
},
{
"DisableActionCheck"
,
scriptlib
::
duel_disable_action_check
},
{
"SetMetatable"
,
scriptlib
::
duel_setmetatable
},
{
"MoveTurnCount"
,
scriptlib
::
duel_move_turn_count
},
{
"MoveTurnCount"
,
scriptlib
::
duel_move_turn_count
},
{
"GetCardsInZone"
,
scriptlib
::
duel_get_cards_in_zone
},
{
"XyzSummonByRose"
,
scriptlib
::
duel_xyz_summon_by_rose
},
{
"EnableGlobalFlag"
,
scriptlib
::
duel_enable_global_flag
},
{
"GetLP"
,
scriptlib
::
duel_get_lp
},
...
...
@@ -659,6 +662,34 @@ interpreter::interpreter(duel* pd): coroutines(256) {
load_script
((
char
*
)
"./script/constant.lua"
);
load_script
((
char
*
)
"./script/utility.lua"
);
//load kpro constant
//card data constants
lua_pushinteger
(
lua_state
,
CARDDATA_CODE
);
lua_setglobal
(
lua_state
,
"CARDDATA_CODE"
);
lua_pushinteger
(
lua_state
,
CARDDATA_ALIAS
);
lua_setglobal
(
lua_state
,
"CARDDATA_ALIAS"
);
lua_pushinteger
(
lua_state
,
CARDDATA_SETCODE
);
lua_setglobal
(
lua_state
,
"CARDDATA_SETCODE"
);
lua_pushinteger
(
lua_state
,
CARDDATA_TYPE
);
lua_setglobal
(
lua_state
,
"CARDDATA_TYPE"
);
lua_pushinteger
(
lua_state
,
CARDDATA_LEVEL
);
lua_setglobal
(
lua_state
,
"CARDDATA_LEVEL"
);
lua_pushinteger
(
lua_state
,
CARDDATA_ATTRIBUTE
);
lua_setglobal
(
lua_state
,
"CARDDATA_ATTRIBUTE"
);
lua_pushinteger
(
lua_state
,
CARDDATA_ATTRIBUTE
);
lua_setglobal
(
lua_state
,
"CARDDATA_ATTRIBUTE"
);
lua_pushinteger
(
lua_state
,
CARDDATA_RACE
);
lua_setglobal
(
lua_state
,
"CARDDATA_RACE"
);
lua_pushinteger
(
lua_state
,
CARDDATA_ATTACK
);
lua_setglobal
(
lua_state
,
"CARDDATA_ATTACK"
);
lua_pushinteger
(
lua_state
,
CARDDATA_DEFENSE
);
lua_setglobal
(
lua_state
,
"CARDDATA_DEFENSE"
);
lua_pushinteger
(
lua_state
,
CARDDATA_LSCALE
);
lua_setglobal
(
lua_state
,
"CARDDATA_LSCALE"
);
lua_pushinteger
(
lua_state
,
CARDDATA_RSCALE
);
lua_setglobal
(
lua_state
,
"CARDDATA_RSCALE"
);
lua_pushinteger
(
lua_state
,
CARDDATA_LINK_MARKER
);
lua_setglobal
(
lua_state
,
"CARDDATA_LINK_MARKER"
);
//effects
lua_pushinteger
(
lua_state
,
EFFECT_CHANGE_LINK_MARKER_KOISHI
);
lua_setglobal
(
lua_state
,
"EFFECT_CHANGE_LINK_MARKER_KOISHI"
);
lua_pushinteger
(
lua_state
,
EFFECT_ADD_LINK_MARKER_KOISHI
);
...
...
@@ -667,6 +698,7 @@ interpreter::interpreter(duel* pd): coroutines(256) {
lua_setglobal
(
lua_state
,
"EFFECT_REMOVE_LINK_MARKER_KOISHI"
);
lua_pushinteger
(
lua_state
,
EFFECT_CANNOT_LOSE_KOISHI
);
lua_setglobal
(
lua_state
,
"EFFECT_CANNOT_LOSE_KOISHI"
);
//music hints
lua_pushinteger
(
lua_state
,
HINT_MUSIC
);
lua_setglobal
(
lua_state
,
"HINT_MUSIC"
);
lua_pushinteger
(
lua_state
,
HINT_SOUND
);
...
...
ocgcore/libcard.cpp
View file @
95eb5a6a
...
...
@@ -44,40 +44,40 @@ int32 scriptlib::card_set_card_data(lua_State *L) {
card
*
pcard
=
*
(
card
**
)
lua_touserdata
(
L
,
1
);
int32
stype
=
lua_tonumberint
(
L
,
2
);
switch
(
stype
)
{
case
ASSUME
_CODE
:
case
CARDDATA
_CODE
:
pcard
->
data
.
code
=
lua_tonumberint
(
L
,
3
);
break
;
case
ASSUME_TYPE
:
pcard
->
data
.
type
=
lua_tonumberint
(
L
,
3
);
case
CARDDATA_ALIAS
:
pcard
->
data
.
alias
=
lua_tonumberint
(
L
,
3
);
break
;
case
ASSUME_LEVEL
:
pcard
->
data
.
level
=
lua_tonumberint
(
L
,
3
);
case
CARDDATA_SETCODE
:
pcard
->
data
.
setcode
=
lua_tonumberint
(
L
,
3
);
break
;
case
CARDDATA_TYPE
:
pcard
->
data
.
type
=
lua_tonumberint
(
L
,
3
);
break
;
case
ASSUME_RANK
:
case
CARDDATA_LEVEL
:
pcard
->
data
.
level
=
lua_tonumberint
(
L
,
3
);
break
;
case
ASSUME
_ATTRIBUTE
:
case
CARDDATA
_ATTRIBUTE
:
pcard
->
data
.
attribute
=
lua_tonumberint
(
L
,
3
);
break
;
case
ASSUME
_RACE
:
case
CARDDATA
_RACE
:
pcard
->
data
.
race
=
lua_tonumberint
(
L
,
3
);
break
;
case
ASSUME
_ATTACK
:
case
CARDDATA
_ATTACK
:
pcard
->
data
.
attack
=
lua_tonumberint
(
L
,
3
);
break
;
case
ASSUME
_DEFENSE
:
case
CARDDATA
_DEFENSE
:
pcard
->
data
.
defense
=
lua_tonumberint
(
L
,
3
);
break
;
case
9
:
pcard
->
data
.
alias
=
lua_tonumberint
(
L
,
3
);
break
;
case
10
:
case
CARDDATA_LSCALE
:
pcard
->
data
.
lscale
=
lua_tonumberint
(
L
,
3
);
break
;
case
11
:
case
CARDDATA_RSCALE
:
pcard
->
data
.
rscale
=
lua_tonumberint
(
L
,
3
);
break
;
case
12
:
case
CARDDATA_LINK_MARKER
:
pcard
->
data
.
link_marker
=
lua_tonumberint
(
L
,
3
);
break
;
}
...
...
@@ -100,6 +100,30 @@ int32 scriptlib::card_get_origin_link_marker(lua_State *L) {
lua_pushinteger
(
L
,
pcard
->
data
.
link_marker
);
return
1
;
}
int32
scriptlib
::
card_is_xyz_summonable_by_rose
(
lua_State
*
L
)
{
check_param_count
(
L
,
3
);
check_param
(
L
,
PARAM_TYPE_CARD
,
1
);
check_param
(
L
,
PARAM_TYPE_CARD
,
2
);
check_param
(
L
,
PARAM_TYPE_CARD
,
3
);
card
*
pcard
=
*
(
card
**
)
lua_touserdata
(
L
,
1
);
if
(
!
(
pcard
->
data
.
type
&
TYPE_XYZ
))
return
0
;
card
*
rcard
=
*
(
card
**
)
lua_touserdata
(
L
,
2
);
card
*
mcard
=
*
(
card
**
)
lua_touserdata
(
L
,
3
);
group
*
materials
=
pcard
->
pduel
->
new_group
(
rcard
);
materials
->
container
.
insert
(
mcard
);
uint32
p
=
pcard
->
pduel
->
game_field
->
core
.
reason_player
;
pcard
->
pduel
->
game_field
->
core
.
limit_xyz
=
materials
;
pcard
->
pduel
->
game_field
->
core
.
limit_xyz_minc
=
2
;
pcard
->
pduel
->
game_field
->
core
.
limit_xyz_maxc
=
2
;
pcard
->
pduel
->
game_field
->
rose_card
=
rcard
;
pcard
->
pduel
->
game_field
->
rose_level
=
mcard
->
get_level
();
int32
result
=
pcard
->
is_special_summonable
(
p
,
SUMMON_TYPE_XYZ
);
pcard
->
pduel
->
game_field
->
rose_card
=
0
;
pcard
->
pduel
->
game_field
->
rose_level
=
0
;
lua_pushboolean
(
L
,
result
);
return
1
;
}
int32
scriptlib
::
card_get_code
(
lua_State
*
L
)
{
check_param_count
(
L
,
1
);
...
...
ocgcore/libduel.cpp
View file @
95eb5a6a
...
...
@@ -113,40 +113,40 @@ int32 scriptlib::duel_read_card(lua_State *L) {
for
(
uint32
i
=
0
;
i
<
args
;
++
i
)
{
int32
flag
=
lua_tonumberint
(
L
,
2
+
i
);
switch
(
flag
)
{
case
1
:
case
CARDDATA_CODE
:
lua_pushinteger
(
L
,
dat
.
code
);
break
;
case
2
:
case
CARDDATA_ALIAS
:
lua_pushinteger
(
L
,
dat
.
alias
);
break
;
case
3
:
case
CARDDATA_SETCODE
:
lua_pushinteger
(
L
,
dat
.
setcode
);
break
;
case
4
:
case
CARDDATA_TYPE
:
lua_pushinteger
(
L
,
dat
.
type
);
break
;
case
5
:
case
CARDDATA_LEVEL
:
lua_pushinteger
(
L
,
dat
.
level
);
break
;
case
6
:
case
CARDDATA_ATTRIBUTE
:
lua_pushinteger
(
L
,
dat
.
attribute
);
break
;
case
7
:
case
CARDDATA_RACE
:
lua_pushinteger
(
L
,
dat
.
race
);
break
;
case
8
:
case
CARDDATA_ATTACK
:
lua_pushinteger
(
L
,
dat
.
attack
);
break
;
case
9
:
case
CARDDATA_DEFENSE
:
lua_pushinteger
(
L
,
dat
.
defense
);
break
;
case
10
:
case
CARDDATA_LSCALE
:
lua_pushinteger
(
L
,
dat
.
lscale
);
break
;
case
11
:
case
CARDDATA_RSCALE
:
lua_pushinteger
(
L
,
dat
.
rscale
);
break
;
case
12
:
case
CARDDATA_LINK_MARKER
:
lua_pushinteger
(
L
,
dat
.
link_marker
);
break
;
default:
...
...
@@ -204,6 +204,46 @@ int32 scriptlib::duel_move_turn_count(lua_State *L) {
pduel
->
write_buffer8
(
turn_player
|
0x2
);
return
0
;
}
int32
scriptlib
::
duel_get_cards_in_zone
(
lua_State
*
L
)
{
check_param_count
(
L
,
2
);
uint32
rplayer
=
lua_tonumberint
(
L
,
1
);
if
(
rplayer
!=
0
&&
rplayer
!=
1
)
return
0
;
uint32
zone
=
lua_tonumberint
(
L
,
2
);
duel
*
pduel
=
interpreter
::
get_duel_info
(
L
);
field
::
card_set
cset
;
pduel
->
game_field
->
get_cards_in_zone
(
&
cset
,
zone
,
rplayer
,
LOCATION_MZONE
);
pduel
->
game_field
->
get_cards_in_zone
(
&
cset
,
zone
,
rplayer
,
LOCATION_SZONE
);
pduel
->
game_field
->
get_cards_in_zone
(
&
cset
,
zone
>>
16
,
1
-
rplayer
,
LOCATION_MZONE
);
pduel
->
game_field
->
get_cards_in_zone
(
&
cset
,
zone
>>
16
,
1
-
rplayer
,
LOCATION_SZONE
);
group
*
pgroup
=
pduel
->
new_group
(
cset
);
interpreter
::
group2value
(
L
,
pgroup
);
return
1
;
}
int32
scriptlib
::
duel_xyz_summon_by_rose
(
lua_State
*
L
)
{
check_action_permission
(
L
);
check_param_count
(
L
,
4
);
check_param
(
L
,
PARAM_TYPE_CARD
,
2
);
check_param
(
L
,
PARAM_TYPE_CARD
,
3
);
check_param
(
L
,
PARAM_TYPE_CARD
,
4
);
uint32
playerid
=
lua_tonumberint
(
L
,
1
);
if
(
playerid
!=
0
&&
playerid
!=
1
)
return
0
;
card
*
pcard
=
*
(
card
**
)
lua_touserdata
(
L
,
2
);
card
*
rcard
=
*
(
card
**
)
lua_touserdata
(
L
,
3
);
card
*
mcard
=
*
(
card
**
)
lua_touserdata
(
L
,
4
);
duel
*
pduel
=
pcard
->
pduel
;
group
*
materials
=
pduel
->
new_group
(
rcard
);
materials
->
container
.
insert
(
mcard
);
pduel
->
game_field
->
core
.
limit_xyz
=
materials
;
pduel
->
game_field
->
core
.
limit_xyz_minc
=
0
;
pduel
->
game_field
->
core
.
limit_xyz_maxc
=
0
;
pduel
->
game_field
->
core
.
summon_cancelable
=
FALSE
;
pduel
->
game_field
->
rose_card
=
rcard
;
pduel
->
game_field
->
rose_level
=
mcard
->
get_level
();
pduel
->
game_field
->
special_summon_rule
(
playerid
,
pcard
,
SUMMON_TYPE_XYZ
);
return
lua_yield
(
L
,
0
);
}
int32
scriptlib
::
duel_enable_global_flag
(
lua_State
*
L
)
{
check_param_count
(
L
,
1
);
...
...
ocgcore/operations.cpp
View file @
95eb5a6a
...
...
@@ -2570,7 +2570,12 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card* target, uin
if
(
proc
->
value
==
SUMMON_TYPE_SYNCHRO
)
matreason
=
REASON_SYNCHRO
;
else
if
(
proc
->
value
==
SUMMON_TYPE_XYZ
)
{
matreason
=
REASON_XYZ
;
//modded - rose xyz summon
pduel
->
game_field
->
rose_card
=
0
;
pduel
->
game_field
->
rose_level
=
0
;
}
else
if
(
proc
->
value
==
SUMMON_TYPE_LINK
)
matreason
=
REASON_LINK
;
if
(
target
->
material_cards
.
size
())
{
...
...
ocgcore/scriptlib.h
View file @
95eb5a6a
...
...
@@ -28,6 +28,7 @@ public:
static
int32
card_set_card_data
(
lua_State
*
L
);
static
int32
card_get_link_marker
(
lua_State
*
L
);
static
int32
card_get_origin_link_marker
(
lua_State
*
L
);
static
int32
card_is_xyz_summonable_by_rose
(
lua_State
*
L
);
static
int32
effect_set_owner
(
lua_State
*
L
);
static
int32
effect_get_range
(
lua_State
*
L
);
static
int32
effect_get_count_limit
(
lua_State
*
L
);
...
...
@@ -38,6 +39,8 @@ public:
static
int32
duel_disable_action_check
(
lua_State
*
L
);
static
int32
duel_setmetatable
(
lua_State
*
L
);
static
int32
duel_move_turn_count
(
lua_State
*
L
);
static
int32
duel_get_cards_in_zone
(
lua_State
*
L
);
static
int32
duel_xyz_summon_by_rose
(
lua_State
*
L
);
//metatable
static
int32
group_meta_add
(
lua_State
*
L
);
static
int32
group_meta_sub
(
lua_State
*
L
);
...
...
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