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
5be1c7d0
Commit
5be1c7d0
authored
Oct 28, 2017
by
Momobako
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
updc
parent
d3e8fa81
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
62 additions
and
2 deletions
+62
-2
ocgcore/interpreter.cpp
ocgcore/interpreter.cpp
+3
-0
ocgcore/libduel.cpp
ocgcore/libduel.cpp
+55
-1
ocgcore/scriptlib.h
ocgcore/scriptlib.h
+4
-1
No files found.
ocgcore/interpreter.cpp
View file @
5be1c7d0
...
...
@@ -358,6 +358,8 @@ static const struct luaL_Reg duellib[] = {
{
"RegisterFlagEffect"
,
scriptlib
::
duel_register_flag_effect
},
{
"GetFlagEffect"
,
scriptlib
::
duel_get_flag_effect
},
{
"ResetFlagEffect"
,
scriptlib
::
duel_reset_flag_effect
},
{
"SetFlagEffectLabel"
,
scriptlib
::
duel_set_flag_effect_label
},
{
"GetFlagEffectLabel"
,
scriptlib
::
duel_get_flag_effect_label
},
{
"Destroy"
,
scriptlib
::
duel_destroy
},
{
"Remove"
,
scriptlib
::
duel_remove
},
{
"SendtoGrave"
,
scriptlib
::
duel_sendto_grave
},
...
...
@@ -442,6 +444,7 @@ static const struct luaL_Reg duellib[] = {
{
"CheckLocation"
,
scriptlib
::
duel_check_location
},
{
"GetCurrentChain"
,
scriptlib
::
duel_get_current_chain
},
{
"GetChainInfo"
,
scriptlib
::
duel_get_chain_info
},
{
"GetChainEvent"
,
scriptlib
::
duel_get_chain_event
},
{
"GetFirstTarget"
,
scriptlib
::
duel_get_first_target
},
{
"GetCurrentPhase"
,
scriptlib
::
duel_get_current_phase
},
{
"SkipPhase"
,
scriptlib
::
duel_skip_phase
},
...
...
ocgcore/libduel.cpp
View file @
5be1c7d0
...
...
@@ -89,6 +89,9 @@ int32 scriptlib::duel_register_flag_effect(lua_State *L) {
int32 reset = lua_tointeger(L, 3);
int32 flag = lua_tointeger(L, 4);
int32 count = lua_tointeger(L, 5);
int32 lab = 0;
if(lua_gettop(L) >= 6)
lab = lua_tointeger(L, 6);
if(count == 0)
count = 1;
if(reset & (RESET_PHASE) && !(reset & (RESET_SELF_TURN | RESET_OPPO_TURN)))
...
...
@@ -105,6 +108,7 @@ int32 scriptlib::duel_register_flag_effect(lua_State *L) {
peffect->s_range = 1;
peffect->o_range = 0;
peffect->reset_count = count;
peffect->label = lab;
pduel->game_field->add_effect(peffect, playerid);
interpreter::effect2value(L, peffect);
return 1;
...
...
@@ -132,11 +136,46 @@ int32 scriptlib::duel_reset_flag_effect(lua_State *L) {
for(; pr.first != pr.second; ) {
auto rm = pr.first++;
effect* peffect = rm->second;
if
(
peffect
->
code
==
code
)
if(peffect->code == code
&& peffect->is_target_player(playerid)
)
pduel->game_field->remove_effect(peffect);
}
return 0;
}
int32 scriptlib::duel_set_flag_effect_label(lua_State *L) {
check_param_count(L, 3);
int32 playerid = lua_tointeger(L, 1);
if(playerid != 0 && playerid != 1)
return 0;
uint32 code = (lua_tounsigned(L, 2) & 0xfffffff) | 0x10000000;
int32 lab = lua_tointeger(L, 3);
duel* pduel = interpreter::get_duel_info(L);
effect_set eset;
pduel->game_field->filter_player_effect(playerid, code, &eset);
if(!eset.size())
lua_pushboolean(L, FALSE);
else {
eset[0]->label = lab;
lua_pushboolean(L, TRUE);
}
return 1;
}
int32 scriptlib::duel_get_flag_effect_label(lua_State *L) {
check_param_count(L, 2);
int32 playerid = lua_tointeger(L, 1);
if(playerid != 0 && playerid != 1)
return 0;
uint32 code = (lua_tounsigned(L, 2) & 0xfffffff) | 0x10000000;
duel* pduel = interpreter::get_duel_info(L);
effect_set eset;
pduel->game_field->filter_player_effect(playerid, code, &eset);
if(!eset.size()) {
lua_pushnil(L);
return 1;
}
for(int32 i = 0; i < eset.size(); ++i)
lua_pushinteger(L, eset[i]->label);
return eset.size();
}
int32 scriptlib::duel_destroy(lua_State *L) {
check_action_permission(L);
check_param_count(L, 2);
...
...
@@ -1824,6 +1863,21 @@ int32 scriptlib::duel_get_chain_info(lua_State *L) {
}
return args;
}
int32 scriptlib::duel_get_chain_event(lua_State *L) {
check_param_count(L, 1);
uint32 count = lua_tointeger(L, 1);
duel* pduel = interpreter::get_duel_info(L);
chain* ch = pduel->game_field->get_chain(count);
if(!ch)
return 0;
interpreter::group2value(L, ch->evt.event_cards);
lua_pushinteger(L, ch->evt.event_player);
lua_pushinteger(L, ch->evt.event_value);
interpreter::effect2value(L, ch->evt.reason_effect);
lua_pushinteger(L, ch->evt.reason);
lua_pushinteger(L, ch->evt.reason_player);
return 6;
}
int32 scriptlib::duel_get_first_target(lua_State *L) {
duel* pduel = interpreter::get_duel_info(L);
chain* ch = pduel->game_field->get_chain(0);
...
...
ocgcore/scriptlib.h
View file @
5be1c7d0
...
...
@@ -352,8 +352,10 @@ public:
static
int32
duel_get_draw_count
(
lua_State
*
L
);
static
int32
duel_register_effect
(
lua_State
*
L
);
static
int32
duel_register_flag_effect
(
lua_State
*
L
);
static
int32
duel_reset_flag_effect
(
lua_State
*
L
);
static
int32
duel_get_flag_effect
(
lua_State
*
L
);
static
int32
duel_reset_flag_effect
(
lua_State
*
L
);
static
int32
duel_set_flag_effect_label
(
lua_State
*
L
);
static
int32
duel_get_flag_effect_label
(
lua_State
*
L
);
static
int32
duel_destroy
(
lua_State
*
L
);
static
int32
duel_remove
(
lua_State
*
L
);
static
int32
duel_sendto_grave
(
lua_State
*
L
);
...
...
@@ -439,6 +441,7 @@ public:
static
int32
duel_check_location
(
lua_State
*
L
);
static
int32
duel_get_current_chain
(
lua_State
*
L
);
static
int32
duel_get_chain_info
(
lua_State
*
L
);
static
int32
duel_get_chain_event
(
lua_State
*
L
);
static
int32
duel_get_first_target
(
lua_State
*
L
);
static
int32
duel_get_current_phase
(
lua_State
*
L
);
static
int32
duel_skip_phase
(
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