Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
ygopro-core
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nanahira
ygopro-core
Commits
a4242e52
Commit
a4242e52
authored
Oct 22, 2015
by
salix5
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Duel.SendtoExtra()
Duel.SendtoExtra(Card|Group targets, int player|nil, int reason)
parent
37eabe3e
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
31 additions
and
2 deletions
+31
-2
interpreter.cpp
interpreter.cpp
+1
-0
libduel.cpp
libduel.cpp
+25
-0
operations.cpp
operations.cpp
+4
-2
scriptlib.h
scriptlib.h
+1
-0
No files found.
interpreter.cpp
View file @
a4242e52
...
...
@@ -322,6 +322,7 @@ static const struct luaL_Reg duellib[] = {
{
"SendtoGrave"
,
scriptlib
::
duel_sendto_grave
},
{
"SendtoHand"
,
scriptlib
::
duel_sendto_hand
},
{
"SendtoDeck"
,
scriptlib
::
duel_sendto_deck
},
{
"SendtoExtra"
,
scriptlib
::
duel_sendto_extra
},
{
"GetOperatedGroup"
,
scriptlib
::
duel_get_operated_group
},
{
"Summon"
,
scriptlib
::
duel_summon
},
{
"SpecialSummonRule"
,
scriptlib
::
duel_special_summon_rule
},
...
...
libduel.cpp
View file @
a4242e52
...
...
@@ -453,6 +453,31 @@ int32 scriptlib::duel_sendto_deck(lua_State *L) {
pduel
->
game_field
->
core
.
subunits
.
begin
()
->
type
=
PROCESSOR_SENDTO_S
;
return
lua_yield
(
L
,
0
);
}
int32
scriptlib
::
duel_sendto_extra
(
lua_State
*
L
)
{
check_action_permission
(
L
);
check_param_count
(
L
,
3
);
card
*
pcard
=
0
;
group
*
pgroup
=
0
;
duel
*
pduel
=
0
;
if
(
check_param
(
L
,
PARAM_TYPE_CARD
,
1
,
TRUE
))
{
pcard
=
*
(
card
**
)
lua_touserdata
(
L
,
1
);
pduel
=
pcard
->
pduel
;
}
else
if
(
check_param
(
L
,
PARAM_TYPE_GROUP
,
1
,
TRUE
))
{
pgroup
=
*
(
group
**
)
lua_touserdata
(
L
,
1
);
pduel
=
pgroup
->
pduel
;
}
else
luaL_error
(
L
,
"Parameter %d should be
\"
Card
\"
or
\"
Group
\"
."
,
1
);
uint32
playerid
=
lua_tointeger
(
L
,
2
);
if
(
lua_isnil
(
L
,
2
)
||
(
playerid
!=
0
&&
playerid
!=
1
))
playerid
=
PLAYER_NONE
;
uint32
reason
=
lua_tointeger
(
L
,
3
);
if
(
pcard
)
pduel
->
game_field
->
send_to
(
pcard
,
pduel
->
game_field
->
core
.
reason_effect
,
reason
,
pduel
->
game_field
->
core
.
reason_player
,
playerid
,
LOCATION_EXTRA
,
0
,
POS_FACEUP
);
else
pduel
->
game_field
->
send_to
(
&
(
pgroup
->
container
),
pduel
->
game_field
->
core
.
reason_effect
,
reason
,
pduel
->
game_field
->
core
.
reason_player
,
playerid
,
LOCATION_EXTRA
,
0
,
POS_FACEUP
);
pduel
->
game_field
->
core
.
subunits
.
begin
()
->
type
=
PROCESSOR_SENDTO_S
;
return
lua_yield
(
L
,
0
);
}
int32
scriptlib
::
duel_get_operated_group
(
lua_State
*
L
)
{
duel
*
pduel
=
interpreter
::
get_duel_info
(
L
);
group
*
pgroup
=
pduel
->
new_group
(
pduel
->
game_field
->
core
.
operated_set
);
...
...
operations.cpp
View file @
a4242e52
...
...
@@ -230,8 +230,9 @@ void field::release(card* target, effect* reason_effect, uint32 reason, uint32 r
tset
.
insert
(
target
);
release
(
&
tset
,
reason_effect
,
reason
,
reason_player
);
}
// send to locations other than LOCATION_ONFIELD
void
field
::
send_to
(
card_set
*
targets
,
effect
*
reason_effect
,
uint32
reason
,
uint32
reason_player
,
uint32
playerid
,
uint32
destination
,
uint32
sequence
,
uint32
position
)
{
if
(
!
(
destination
&
(
LOCATION_HAND
+
LOCATION_DECK
+
LOCATION_GRAVE
+
LOCATION_REMOVED
))
)
if
(
destination
&
LOCATION_ONFIELD
)
return
;
uint32
p
,
pos
;
for
(
auto
cit
=
targets
->
begin
();
cit
!=
targets
->
end
();
++
cit
)
{
...
...
@@ -3022,7 +3023,8 @@ int32 field::send_to(uint16 step, group * targets, effect * reason_effect, uint3
||
(
dest
==
LOCATION_HAND
&&
!
pcard
->
is_capable_send_to_hand
(
core
.
reason_player
))
||
(
dest
==
LOCATION_DECK
&&
!
pcard
->
is_capable_send_to_deck
(
core
.
reason_player
))
||
(
dest
==
LOCATION_REMOVED
&&
!
pcard
->
is_removeable
(
core
.
reason_player
))
||
(
dest
==
LOCATION_GRAVE
&&
!
pcard
->
is_capable_send_to_grave
(
core
.
reason_player
))))
{
||
(
dest
==
LOCATION_GRAVE
&&
!
pcard
->
is_capable_send_to_grave
(
core
.
reason_player
))
||
(
dest
==
LOCATION_EXTRA
&&
!
pcard
->
is_capable_send_to_extra
(
core
.
reason_player
))))
{
pcard
->
current
.
reason
=
pcard
->
temp
.
reason
;
pcard
->
current
.
reason_player
=
pcard
->
temp
.
reason_player
;
pcard
->
current
.
reason_effect
=
pcard
->
temp
.
reason_effect
;
...
...
scriptlib.h
View file @
a4242e52
...
...
@@ -328,6 +328,7 @@ public:
static
int32
duel_special_summon_complete
(
lua_State
*
L
);
static
int32
duel_sendto_hand
(
lua_State
*
L
);
static
int32
duel_sendto_deck
(
lua_State
*
L
);
static
int32
duel_sendto_extra
(
lua_State
*
L
);
static
int32
duel_get_operated_group
(
lua_State
*
L
);
static
int32
duel_remove_counter
(
lua_State
*
L
);
static
int32
duel_is_can_remove_counter
(
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