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
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-core
Commits
6e3877dc
Commit
6e3877dc
authored
Nov 07, 2020
by
mercury233
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
https://github.com/Fluorohydride/ygopro-core
parents
1d44c448
9c8f4df4
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
52 additions
and
0 deletions
+52
-0
libduel.cpp
libduel.cpp
+51
-0
scriptlib.h
scriptlib.h
+1
-0
No files found.
libduel.cpp
View file @
6e3877dc
...
@@ -3606,6 +3606,56 @@ int32 scriptlib::duel_select_disable_field(lua_State * L) {
...
@@ -3606,6 +3606,56 @@ int32 scriptlib::duel_select_disable_field(lua_State * L) {
return 1;
return 1;
});
});
}
}
int32 scriptlib::duel_select_field(lua_State* L) {
check_action_permission(L);
check_param_count(L, 5);
int32 playerid = (int32)lua_tointeger(L, 1);
if(playerid != 0 && playerid != 1)
return 0;
uint32 count = (uint32)lua_tointeger(L, 2);
uint32 location1 = (uint32)lua_tointeger(L, 3);
uint32 location2 = (uint32)lua_tointeger(L, 4);
uint32 filter = (uint32)lua_tointeger(L, 5);
duel* pduel = interpreter::get_duel_info(L);
uint32 flag = 0xffffffff;
if(location1 & LOCATION_MZONE) {
flag &= 0xffffffe0;
}
if(location1 & LOCATION_SZONE) {
flag &= pduel->game_field->core.duel_rule == 3 ? 0xffff00ff : 0xffffc0ff;
}
if(location2 & LOCATION_MZONE) {
flag &= 0xffe0ffff;
}
if(location2 & LOCATION_SZONE) {
flag &= pduel->game_field->core.duel_rule == 3 ? 0x00ffffff : 0xc0ffffff;
}
if((location1 & LOCATION_MZONE) && (location2 & LOCATION_MZONE) && pduel->game_field->core.duel_rule >= 4) {
flag &= 0xffffff9f;
}
flag |= filter | 0x00800080;
pduel->game_field->add_process(PROCESSOR_SELECT_DISFIELD, 0, 0, 0, playerid, flag, count);
return lua_yieldk(L, 0, (lua_KContext)pduel, [](lua_State* L, int32 status, lua_KContext ctx) {
duel* pduel = (duel*)ctx;
int32 playerid = (int32)lua_tointeger(L, 1);
uint32 count = (uint32)lua_tointeger(L, 2);
int32 dfflag = 0;
uint8 pa = 0;
for(uint32 i = 0; i < count; ++i) {
uint8 p = pduel->game_field->returns.bvalue[pa];
uint8 l = pduel->game_field->returns.bvalue[pa + 1];
uint8 s = pduel->game_field->returns.bvalue[pa + 2];
dfflag |= 0x1u << (s + (p == playerid ? 0 : 16) + (l == LOCATION_MZONE ? 0 : 8));
pa += 3;
}
if(dfflag & (0x1 << 5))
dfflag |= 0x1 << (16 + 6);
if(dfflag & (0x1 << 6))
dfflag |= 0x1 << (16 + 5);
lua_pushinteger(L, dfflag);
return 1;
});
}
int32 scriptlib::duel_announce_race(lua_State * L) {
int32 scriptlib::duel_announce_race(lua_State * L) {
check_action_permission(L);
check_action_permission(L);
check_param_count(L, 3);
check_param_count(L, 3);
...
@@ -4614,6 +4664,7 @@ static const struct luaL_Reg duellib[] = {
...
@@ -4614,6 +4664,7 @@ static const struct luaL_Reg duellib[] = {
{ "SelectOption", scriptlib::duel_select_option },
{ "SelectOption", scriptlib::duel_select_option },
{ "SelectSequence", scriptlib::duel_select_sequence },
{ "SelectSequence", scriptlib::duel_select_sequence },
{ "SelectPosition", scriptlib::duel_select_position },
{ "SelectPosition", scriptlib::duel_select_position },
{ "SelectField", scriptlib::duel_select_field },
{ "SelectDisableField", scriptlib::duel_select_disable_field },
{ "SelectDisableField", scriptlib::duel_select_disable_field },
{ "AnnounceRace", scriptlib::duel_announce_race },
{ "AnnounceRace", scriptlib::duel_announce_race },
{ "AnnounceAttribute", scriptlib::duel_announce_attribute },
{ "AnnounceAttribute", scriptlib::duel_announce_attribute },
...
...
scriptlib.h
View file @
6e3877dc
...
@@ -537,6 +537,7 @@ public:
...
@@ -537,6 +537,7 @@ public:
static
int32
duel_select_sequence
(
lua_State
*
L
);
static
int32
duel_select_sequence
(
lua_State
*
L
);
static
int32
duel_select_position
(
lua_State
*
L
);
static
int32
duel_select_position
(
lua_State
*
L
);
static
int32
duel_select_disable_field
(
lua_State
*
L
);
static
int32
duel_select_disable_field
(
lua_State
*
L
);
static
int32
duel_select_field
(
lua_State
*
L
);
static
int32
duel_announce_race
(
lua_State
*
L
);
static
int32
duel_announce_race
(
lua_State
*
L
);
static
int32
duel_announce_attribute
(
lua_State
*
L
);
static
int32
duel_announce_attribute
(
lua_State
*
L
);
static
int32
duel_announce_level
(
lua_State
*
L
);
static
int32
duel_announce_level
(
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