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
6385eab8
Commit
6385eab8
authored
Apr 20, 2016
by
salix5
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
field::process_quick_effect()
parent
3a95a668
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
30 additions
and
10 deletions
+30
-10
field.h
field.h
+1
-0
processor.cpp
processor.cpp
+29
-10
No files found.
field.h
View file @
6385eab8
...
...
@@ -166,6 +166,7 @@ struct processor {
event_list
point_event
;
event_list
instant_event
;
event_list
queue_event
;
event_list
full_event
;
event_list
used_event
;
event_list
single_event
;
event_list
solving_event
;
...
...
processor.cpp
View file @
6385eab8
...
...
@@ -1583,6 +1583,7 @@ int32 field::process_phase_event(int16 step, int32 phase) {
core
.
quick_f_chain
.
clear
();
core
.
instant_event
.
clear
();
core
.
point_event
.
clear
();
core
.
full_event
.
clear
();
return
TRUE
;
}
}
...
...
@@ -1914,6 +1915,7 @@ int32 field::process_point_event(int16 step, int32 skip_trigger, int32 skip_free
add_process
(
PROCESSOR_SOLVE_CHAIN
,
0
,
0
,
0
,
skip_trigger
|
((
skip_freechain
|
skip_new
)
<<
8
),
skip_new
);
}
else
{
core
.
used_event
.
splice
(
core
.
used_event
.
end
(),
core
.
point_event
);
core
.
full_event
.
clear
();
if
(
core
.
chain_limit_p
)
{
luaL_unref
(
pduel
->
lua
->
lua_state
,
LUA_REGISTRYINDEX
,
core
.
chain_limit_p
);
core
.
chain_limit_p
=
0
;
...
...
@@ -2027,7 +2029,7 @@ int32 field::process_quick_effect(int16 step, int32 skip_freechain, uint8 priori
peffect
=
pr
.
first
->
second
;
peffect
->
s_range
=
peffect
->
handler
->
current
.
location
;
peffect
->
o_range
=
peffect
->
handler
->
current
.
sequence
;
if
(
peffect
->
is_chainable
(
priority
)
&&
peffect
->
is_activateable
(
priority
,
*
evit
))
{
if
(
!
peffect
->
is_flag
(
EFFECT_FLAG_DELAY
)
&&
peffect
->
is_chainable
(
priority
)
&&
peffect
->
is_activateable
(
priority
,
*
evit
))
{
newchain
.
flag
=
0
;
newchain
.
chain_id
=
infos
.
field_id
++
;
newchain
.
evt
=
*
evit
;
...
...
@@ -2037,8 +2039,6 @@ int32 field::process_quick_effect(int16 step, int32 skip_freechain, uint8 priori
newchain
.
triggering_sequence
=
peffect
->
handler
->
current
.
sequence
;
newchain
.
triggering_player
=
priority
;
core
.
select_chains
.
push_back
(
newchain
);
core
.
delayed_quick_tmp
.
erase
(
std
::
make_pair
(
peffect
,
*
evit
));
core
.
delayed_quick_break
.
erase
(
std
::
make_pair
(
peffect
,
*
evit
));
}
}
pr
=
effects
.
quick_o_effect
.
equal_range
(
evit
->
event_code
);
...
...
@@ -2090,6 +2090,28 @@ int32 field::process_quick_effect(int16 step, int32 skip_freechain, uint8 priori
if
(
act
)
core
.
select_chains
.
push_back
(
*
clit
);
}
//delayed activate
for
(
auto
evit
=
core
.
full_event
.
begin
();
evit
!=
core
.
full_event
.
end
();
++
evit
)
{
auto
pr
=
effects
.
activate_effect
.
equal_range
(
evit
->
event_code
);
for
(;
pr
.
first
!=
pr
.
second
;
++
pr
.
first
)
{
peffect
=
pr
.
first
->
second
;
peffect
->
s_range
=
peffect
->
handler
->
current
.
location
;
peffect
->
o_range
=
peffect
->
handler
->
current
.
sequence
;
if
(
peffect
->
is_flag
(
EFFECT_FLAG_DELAY
)
&&
peffect
->
is_chainable
(
priority
)
&&
peffect
->
is_activateable
(
priority
,
*
evit
))
{
newchain
.
flag
=
0
;
newchain
.
chain_id
=
infos
.
field_id
++
;
newchain
.
evt
=
*
evit
;
newchain
.
triggering_controler
=
peffect
->
handler
->
current
.
controler
;
newchain
.
triggering_effect
=
peffect
;
newchain
.
triggering_location
=
peffect
->
handler
->
current
.
location
;
newchain
.
triggering_sequence
=
peffect
->
handler
->
current
.
sequence
;
newchain
.
triggering_player
=
priority
;
core
.
select_chains
.
push_back
(
newchain
);
}
}
}
core
.
full_event
.
clear
();
// delayed quick
for
(
auto
eit
=
core
.
delayed_quick
.
begin
();
eit
!=
core
.
delayed_quick
.
end
();
++
eit
)
{
peffect
=
eit
->
first
;
peffect
->
s_range
=
peffect
->
handler
->
current
.
location
;
...
...
@@ -2297,13 +2319,9 @@ int32 field::process_instant_event() {
peffect
->
handler
->
create_relation
(
newchain
);
}
}
//delayed quick effect
pr
=
effects
.
activate_effect
.
equal_range
(
elit
->
event_code
);
for
(;
pr
.
first
!=
pr
.
second
;
++
pr
.
first
)
{
peffect
=
pr
.
first
->
second
;
if
(
peffect
->
is_flag
(
EFFECT_FLAG_DELAY
)
&&
peffect
->
is_condition_check
(
peffect
->
handler
->
current
.
controler
,
*
elit
))
core
.
delayed_quick_tmp
.
insert
(
std
::
make_pair
(
peffect
,
*
elit
));
}
// delayed activate effect
core
.
full_event
.
push_back
(
*
elit
);
// delayed quick effect
pr
=
effects
.
quick_o_effect
.
equal_range
(
elit
->
event_code
);
for
(;
pr
.
first
!=
pr
.
second
;
++
pr
.
first
)
{
peffect
=
pr
.
first
->
second
;
...
...
@@ -4747,6 +4765,7 @@ int32 field::solve_chain(uint16 step, uint32 chainend_arg1, uint32 chainend_arg2
}
case
12
:
{
core
.
used_event
.
splice
(
core
.
used_event
.
end
(),
core
.
point_event
);
core
.
full_event
.
clear
();
pduel
->
write_buffer8
(
MSG_CHAIN_END
);
if
(
core
.
chain_limit_p
)
{
luaL_unref
(
pduel
->
lua
->
lua_state
,
LUA_REGISTRYINDEX
,
core
.
chain_limit_p
);
...
...
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