Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
ygopro
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
YGOPRO-520DIY
ygopro
Commits
f1542bbf
Commit
f1542bbf
authored
Apr 26, 2013
by
argon
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix
parent
ea547712
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
61 additions
and
14 deletions
+61
-14
ocgcore/effect.cpp
ocgcore/effect.cpp
+1
-1
ocgcore/field.h
ocgcore/field.h
+6
-1
ocgcore/processor.cpp
ocgcore/processor.cpp
+47
-8
script/c22869904.lua
script/c22869904.lua
+2
-1
script/c38815069.lua
script/c38815069.lua
+1
-1
script/c94145021.lua
script/c94145021.lua
+1
-0
script/c97268402.lua
script/c97268402.lua
+1
-1
script/constant.lua
script/constant.lua
+2
-1
No files found.
ocgcore/effect.cpp
View file @
f1542bbf
...
@@ -271,7 +271,7 @@ int32 effect::is_activate_ready(uint8 playerid, tevent& e, int32 neglect_cond, i
...
@@ -271,7 +271,7 @@ int32 effect::is_activate_ready(uint8 playerid, tevent& e, int32 neglect_cond, i
return
TRUE
;
return
TRUE
;
}
}
int32
effect
::
is_condition_check
(
uint8
playerid
,
tevent
&
e
)
{
int32
effect
::
is_condition_check
(
uint8
playerid
,
tevent
&
e
)
{
if
((
handler
->
current
.
location
&
(
LOCATION_ONFIELD
|
LOCATION_REMOVED
))
&&
(
!
handler
->
is_position
(
POS_FACEUP
)))
if
(
!
(
type
&
EFFECT_TYPE_ACTIVATE
)
&&
(
handler
->
current
.
location
&
(
LOCATION_ONFIELD
|
LOCATION_REMOVED
))
&&
(
!
handler
->
is_position
(
POS_FACEUP
)))
return
FALSE
;
return
FALSE
;
if
(
!
condition
)
if
(
!
condition
)
return
TRUE
;
return
TRUE
;
...
...
ocgcore/field.h
View file @
f1542bbf
...
@@ -141,6 +141,7 @@ struct processor {
...
@@ -141,6 +141,7 @@ struct processor {
typedef
std
::
vector
<
chain
>
chain_array
;
typedef
std
::
vector
<
chain
>
chain_array
;
typedef
std
::
list
<
processor_unit
>
processor_list
;
typedef
std
::
list
<
processor_unit
>
processor_list
;
typedef
std
::
set
<
card
*
,
card_sort
>
card_set
;
typedef
std
::
set
<
card
*
,
card_sort
>
card_set
;
typedef
std
::
set
<
effect
*>
effect_collection
;
processor_list
units
;
processor_list
units
;
processor_list
subunits
;
processor_list
subunits
;
...
@@ -177,6 +178,9 @@ struct processor {
...
@@ -177,6 +178,9 @@ struct processor {
chain_list
flip_chain_b
;
chain_list
flip_chain_b
;
chain_list
new_ochain_h
;
chain_list
new_ochain_h
;
chain_list
new_chains
;
chain_list
new_chains
;
effect_collection
delayed_quick_tmp
;
effect_collection
delayed_quick_break
;
effect_collection
delayed_quick
;
instant_f_list
quick_f_chain
;
instant_f_list
quick_f_chain
;
card_set
leave_confirmed
;
card_set
leave_confirmed
;
card_set
special_summoning
;
card_set
special_summoning
;
...
@@ -535,7 +539,8 @@ public:
...
@@ -535,7 +539,8 @@ public:
#define GLOBALFLAG_DECK_REVERSE_CHECK 0x1
#define GLOBALFLAG_DECK_REVERSE_CHECK 0x1
#define GLOBALFLAG_BRAINWASHING_CHECK 0x2
#define GLOBALFLAG_BRAINWASHING_CHECK 0x2
#define GLOBALFLAG_SCRAP_CHIMERA 0x3
#define GLOBALFLAG_SCRAP_CHIMERA 0x4
#define GLOBALFLAG_DELAYED_QUICKEFFECT 0x8
//
//
#define PROCESSOR_NONE 0
#define PROCESSOR_NONE 0
...
...
ocgcore/processor.cpp
View file @
f1542bbf
...
@@ -1646,6 +1646,8 @@ int32 field::process_point_event(int16 step, int32 special, int32 skip_new) {
...
@@ -1646,6 +1646,8 @@ int32 field::process_point_event(int16 step, int32 special, int32 skip_new) {
//flip
//flip
core
.
tpchain
.
clear
();
core
.
tpchain
.
clear
();
core
.
ntpchain
.
clear
();
core
.
ntpchain
.
clear
();
core
.
delayed_quick
.
clear
();
core
.
delayed_quick_break
.
swap
(
core
.
delayed_quick
);
for
(
auto
clit
=
core
.
flip_chain
.
begin
();
clit
!=
core
.
flip_chain
.
end
();
++
clit
)
{
for
(
auto
clit
=
core
.
flip_chain
.
begin
();
clit
!=
core
.
flip_chain
.
end
();
++
clit
)
{
if
(
clit
->
triggering_effect
->
is_chainable
(
clit
->
triggering_player
)
if
(
clit
->
triggering_effect
->
is_chainable
(
clit
->
triggering_player
)
&&
clit
->
triggering_effect
->
is_activateable
(
clit
->
triggering_player
,
clit
->
evt
,
TRUE
))
{
&&
clit
->
triggering_effect
->
is_activateable
(
clit
->
triggering_player
,
clit
->
evt
,
TRUE
))
{
...
@@ -1968,7 +1970,7 @@ int32 field::process_quick_effect(int16 step, int32 special, uint8 priority) {
...
@@ -1968,7 +1970,7 @@ int32 field::process_quick_effect(int16 step, int32 special, uint8 priority) {
}
}
}
}
for
(
auto
clit
=
core
.
new_ochain_h
.
begin
();
clit
!=
core
.
new_ochain_h
.
end
();
++
clit
)
{
for
(
auto
clit
=
core
.
new_ochain_h
.
begin
();
clit
!=
core
.
new_ochain_h
.
end
();
++
clit
)
{
effect
*
peffect
=
clit
->
triggering_effect
;
peffect
=
clit
->
triggering_effect
;
bool
act
=
true
;
bool
act
=
true
;
if
(
clit
->
triggering_player
==
priority
&&
!
peffect
->
handler
->
is_status
(
STATUS_CHAINING
)
if
(
clit
->
triggering_player
==
priority
&&
!
peffect
->
handler
->
is_status
(
STATUS_CHAINING
)
&&
peffect
->
is_chainable
(
priority
)
&&
peffect
->
is_activateable
(
priority
,
clit
->
evt
,
TRUE
))
{
&&
peffect
->
is_chainable
(
priority
)
&&
peffect
->
is_activateable
(
priority
,
clit
->
evt
,
TRUE
))
{
...
@@ -1991,6 +1993,22 @@ int32 field::process_quick_effect(int16 step, int32 special, uint8 priority) {
...
@@ -1991,6 +1993,22 @@ int32 field::process_quick_effect(int16 step, int32 special, uint8 priority) {
if
(
act
)
if
(
act
)
core
.
select_chains
.
push_back
(
*
clit
);
core
.
select_chains
.
push_back
(
*
clit
);
}
}
if
(
core
.
global_flag
&
GLOBALFLAG_DELAYED_QUICKEFFECT
)
{
for
(
auto
eit
=
core
.
delayed_quick
.
begin
();
eit
!=
core
.
delayed_quick
.
end
();
++
eit
)
{
peffect
=
*
eit
;
if
(
peffect
->
is_chainable
(
priority
)
&&
peffect
->
is_activateable
(
priority
,
nil_event
,
TRUE
,
FALSE
,
FALSE
))
{
newchain
.
flag
=
0
;
newchain
.
chain_id
=
infos
.
field_id
++
;
newchain
.
evt
=
nil_event
;
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
.
spe_effect
[
priority
]
=
core
.
select_chains
.
size
();
core
.
spe_effect
[
priority
]
=
core
.
select_chains
.
size
();
if
(
!
special
)
{
if
(
!
special
)
{
nil_event
.
event_code
=
EVENT_FREE_CHAIN
;
nil_event
.
event_code
=
EVENT_FREE_CHAIN
;
...
@@ -2048,6 +2066,7 @@ int32 field::process_quick_effect(int16 step, int32 special, uint8 priority) {
...
@@ -2048,6 +2066,7 @@ int32 field::process_quick_effect(int16 step, int32 special, uint8 priority) {
if
(
core
.
select_chains
.
size
()
&&
returns
.
ivalue
[
0
]
!=
-
1
)
{
if
(
core
.
select_chains
.
size
()
&&
returns
.
ivalue
[
0
]
!=
-
1
)
{
chain
newchain
=
core
.
select_chains
[
returns
.
ivalue
[
0
]];
chain
newchain
=
core
.
select_chains
[
returns
.
ivalue
[
0
]];
core
.
new_chains
.
push_back
(
newchain
);
core
.
new_chains
.
push_back
(
newchain
);
core
.
delayed_quick
.
erase
(
newchain
.
triggering_effect
);
newchain
.
triggering_effect
->
handler
->
set_status
(
STATUS_CHAINING
,
TRUE
);
newchain
.
triggering_effect
->
handler
->
set_status
(
STATUS_CHAINING
,
TRUE
);
add_process
(
PROCESSOR_ADD_CHAIN
,
0
,
0
,
0
,
0
,
0
);
add_process
(
PROCESSOR_ADD_CHAIN
,
0
,
0
,
0
,
0
,
0
);
add_process
(
PROCESSOR_QUICK_EFFECT
,
0
,
0
,
0
,
FALSE
,
1
-
priority
);
add_process
(
PROCESSOR_QUICK_EFFECT
,
0
,
0
,
0
,
FALSE
,
1
-
priority
);
...
@@ -2072,7 +2091,6 @@ int32 field::process_quick_effect(int16 step, int32 special, uint8 priority) {
...
@@ -2072,7 +2091,6 @@ int32 field::process_quick_effect(int16 step, int32 special, uint8 priority) {
int32
field
::
process_instant_event
()
{
int32
field
::
process_instant_event
()
{
if
(
core
.
queue_event
.
size
()
==
0
)
if
(
core
.
queue_event
.
size
()
==
0
)
return
TRUE
;
return
TRUE
;
event_list
::
iterator
elit
;
effect
*
peffect
;
effect
*
peffect
;
chain
newchain
;
chain
newchain
;
effect_vector
tp
;
effect_vector
tp
;
...
@@ -2081,10 +2099,9 @@ int32 field::process_instant_event() {
...
@@ -2081,10 +2099,9 @@ int32 field::process_instant_event() {
event_list
ntev
;
event_list
ntev
;
effect_vector
::
iterator
eit
;
effect_vector
::
iterator
eit
;
event_list
::
iterator
evit
;
event_list
::
iterator
evit
;
pair
<
effect_container
::
iterator
,
effect_container
::
iterator
>
pr
;
for
(
auto
elit
=
core
.
queue_event
.
begin
();
elit
!=
core
.
queue_event
.
end
();
++
elit
)
{
for
(
elit
=
core
.
queue_event
.
begin
();
elit
!=
core
.
queue_event
.
end
();
++
elit
)
{
//continuous events
//continuous events
pr
=
effects
.
continuous_effect
.
equal_range
(
elit
->
event_code
);
auto
pr
=
effects
.
continuous_effect
.
equal_range
(
elit
->
event_code
);
for
(;
pr
.
first
!=
pr
.
second
;
++
pr
.
first
)
{
for
(;
pr
.
first
!=
pr
.
second
;
++
pr
.
first
)
{
peffect
=
pr
.
first
->
second
;
peffect
=
pr
.
first
->
second
;
uint8
owner_player
=
peffect
->
get_handler_player
();
uint8
owner_player
=
peffect
->
get_handler_player
();
...
@@ -2172,6 +2189,21 @@ int32 field::process_instant_event() {
...
@@ -2172,6 +2189,21 @@ int32 field::process_instant_event() {
core
.
quick_f_chain
[
peffect
]
=
newchain
;
core
.
quick_f_chain
[
peffect
]
=
newchain
;
}
}
}
}
if
(
!
(
core
.
global_flag
&
GLOBALFLAG_DELAYED_QUICKEFFECT
))
continue
;
//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
->
flag
&
EFFECT_FLAG_DELAY
)
&&
peffect
->
is_condition_check
(
peffect
->
handler
->
current
.
controler
,
*
elit
))
core
.
delayed_quick_tmp
.
insert
(
peffect
);
}
pr
=
effects
.
quick_o_effect
.
equal_range
(
elit
->
event_code
);
for
(;
pr
.
first
!=
pr
.
second
;
++
pr
.
first
)
{
peffect
=
pr
.
first
->
second
;
if
((
peffect
->
flag
&
EFFECT_FLAG_DELAY
)
&&
peffect
->
is_condition_check
(
peffect
->
handler
->
current
.
controler
,
*
elit
))
core
.
delayed_quick_tmp
.
insert
(
peffect
);
}
}
}
for
(
eit
=
tp
.
begin
(),
evit
=
tev
.
begin
();
eit
!=
tp
.
end
();
++
eit
,
++
evit
)
{
for
(
eit
=
tp
.
begin
(),
evit
=
tev
.
begin
();
eit
!=
tp
.
end
();
++
eit
,
++
evit
)
{
core
.
sub_solving_event
.
push_back
(
*
evit
);
core
.
sub_solving_event
.
push_back
(
*
evit
);
...
@@ -4175,9 +4207,12 @@ int32 field::solve_chain(uint16 step, uint32 skip_new) {
...
@@ -4175,9 +4207,12 @@ int32 field::solve_chain(uint16 step, uint32 skip_new) {
core
.
chain_solving
=
TRUE
;
core
.
chain_solving
=
TRUE
;
if
(
cait
->
opinfos
.
count
(
0x200
))
if
(
cait
->
opinfos
.
count
(
0x200
))
core
.
spsummon_state
[
cait
->
triggering_player
]
=
TRUE
;
core
.
spsummon_state
[
cait
->
triggering_player
]
=
TRUE
;
if
((
peffect
->
type
&
EFFECT_TYPE_ACTIVATE
)
&&
peffect
->
handler
->
is_has_relation
(
peffect
))
{
card
*
pcard
=
peffect
->
handler
;
peffect
->
handler
->
set_status
(
STATUS_ACTIVATED
,
TRUE
);
if
((
peffect
->
type
&
EFFECT_TYPE_ACTIVATE
)
&&
pcard
->
is_has_relation
(
peffect
))
{
peffect
->
handler
->
enable_field_effect
(
TRUE
);
pcard
->
set_status
(
STATUS_ACTIVATED
,
TRUE
);
pcard
->
enable_field_effect
(
TRUE
);
if
((
pcard
->
data
.
type
&
TYPE_FIELD
)
&&
player
[
1
-
pcard
->
current
.
controler
].
list_szone
[
5
]
&&
player
[
1
-
pcard
->
current
.
controler
].
list_szone
[
5
]
->
is_position
(
POS_FACEUP
))
player
[
1
-
pcard
->
current
.
controler
].
list_szone
[
5
]
->
enable_field_effect
(
FALSE
);
adjust_instant
();
adjust_instant
();
}
}
raise_event
((
card
*
)
0
,
EVENT_CHAIN_SOLVING
,
peffect
,
0
,
cait
->
triggering_player
,
cait
->
triggering_player
,
cait
->
chain_count
);
raise_event
((
card
*
)
0
,
EVENT_CHAIN_SOLVING
,
peffect
,
0
,
cait
->
triggering_player
,
cait
->
triggering_player
,
cait
->
chain_count
);
...
@@ -4323,6 +4358,10 @@ int32 field::break_effect() {
...
@@ -4323,6 +4358,10 @@ int32 field::break_effect() {
core
.
new_ochain
.
erase
(
rm
);
core
.
new_ochain
.
erase
(
rm
);
}
}
}
}
if
(
core
.
global_flag
&
GLOBALFLAG_DELAYED_QUICKEFFECT
)
{
core
.
delayed_quick_break
.
insert
(
core
.
delayed_quick_tmp
.
begin
(),
core
.
delayed_quick_tmp
.
end
());
core
.
delayed_quick_tmp
.
clear
();
}
core
.
used_event
.
splice
(
core
.
used_event
.
end
(),
core
.
instant_event
);
core
.
used_event
.
splice
(
core
.
used_event
.
end
(),
core
.
instant_event
);
adjust_instant
();
adjust_instant
();
return
0
;
return
0
;
...
...
script/c22869904.lua
View file @
f1542bbf
--魔力誘爆
--魔力誘爆
function
c22869904
.
initial_effect
(
c
)
function
c22869904
.
initial_effect
(
c
)
Duel
.
EnableGlobalFlag
(
GLOBALFLAG_DELAYED_QUICKEFFECT
)
--Activate
--Activate
local
e1
=
Effect
.
CreateEffect
(
c
)
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetCategory
(
CATEGORY_DESTROY
)
e1
:
SetCategory
(
CATEGORY_DESTROY
)
e1
:
SetType
(
EFFECT_TYPE_ACTIVATE
)
e1
:
SetType
(
EFFECT_TYPE_ACTIVATE
)
e1
:
SetProperty
(
EFFECT_FLAG_CARD_TARGET
)
e1
:
SetProperty
(
EFFECT_FLAG_CARD_TARGET
+
EFFECT_FLAG_DELAY
)
e1
:
SetCode
(
EVENT_TO_GRAVE
)
e1
:
SetCode
(
EVENT_TO_GRAVE
)
e1
:
SetCondition
(
c22869904
.
condition
)
e1
:
SetCondition
(
c22869904
.
condition
)
e1
:
SetTarget
(
c22869904
.
target
)
e1
:
SetTarget
(
c22869904
.
target
)
...
...
script/c38815069.lua
View file @
f1542bbf
...
@@ -11,7 +11,7 @@ function c38815069.initial_effect(c)
...
@@ -11,7 +11,7 @@ function c38815069.initial_effect(c)
c
:
RegisterEffect
(
e1
)
c
:
RegisterEffect
(
e1
)
end
end
function
c38815069
.
filter
(
c
)
function
c38815069
.
filter
(
c
)
return
c
:
IsSetCard
(
0x38
)
and
c
:
IsAbleToDeck
()
return
c
:
IsSetCard
(
0x38
)
and
c
:
Is
Type
(
TYPE_MONSTER
)
and
c
:
Is
AbleToDeck
()
end
end
function
c38815069
.
target
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
,
chkc
)
function
c38815069
.
target
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
,
chkc
)
if
chkc
then
return
chkc
:
IsControler
(
tp
)
and
chkc
:
IsLocation
(
LOCATION_GRAVE
)
and
c38815069
.
filter
(
chkc
)
end
if
chkc
then
return
chkc
:
IsControler
(
tp
)
and
chkc
:
IsLocation
(
LOCATION_GRAVE
)
and
c38815069
.
filter
(
chkc
)
end
...
...
script/c94145021.lua
View file @
f1542bbf
--ドロール&ロックバード
--ドロール&ロックバード
function
c94145021
.
initial_effect
(
c
)
function
c94145021
.
initial_effect
(
c
)
Duel
.
EnableGlobalFlag
(
GLOBALFLAG_DELAYED_QUICKEFFECT
)
--disable
--disable
local
e1
=
Effect
.
CreateEffect
(
c
)
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetDescription
(
aux
.
Stringid
(
94145021
,
0
))
e1
:
SetDescription
(
aux
.
Stringid
(
94145021
,
0
))
...
...
script/c97268402.lua
View file @
f1542bbf
...
@@ -36,7 +36,7 @@ end
...
@@ -36,7 +36,7 @@ end
function
c97268402
.
operation
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
function
c97268402
.
operation
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
c
=
e
:
GetHandler
()
local
c
=
e
:
GetHandler
()
local
tc
=
Duel
.
GetFirstTarget
()
local
tc
=
Duel
.
GetFirstTarget
()
if
tc
:
IsFaceup
()
and
tc
:
IsRelateToEffect
(
e
)
then
if
tc
:
IsFaceup
()
and
tc
:
IsRelateToEffect
(
e
)
and
not
tc
:
IsDisabled
()
then
Duel
.
NegateRelatedChain
(
tc
,
RESET_TURN_SET
)
Duel
.
NegateRelatedChain
(
tc
,
RESET_TURN_SET
)
local
e1
=
Effect
.
CreateEffect
(
c
)
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetType
(
EFFECT_TYPE_SINGLE
)
e1
:
SetType
(
EFFECT_TYPE_SINGLE
)
...
...
script/constant.lua
View file @
f1542bbf
...
@@ -609,7 +609,8 @@ TIMING_EQUIP =0x2000000
...
@@ -609,7 +609,8 @@ TIMING_EQUIP =0x2000000
--Global flag
--Global flag
GLOBALFLAG_DECK_REVERSE_CHECK
=
0x1
GLOBALFLAG_DECK_REVERSE_CHECK
=
0x1
GLOBALFLAG_BRAINWASHING_CHECK
=
0x2
GLOBALFLAG_BRAINWASHING_CHECK
=
0x2
GLOBALFLAG_SCRAP_CHIMERA
=
0x3
GLOBALFLAG_SCRAP_CHIMERA
=
0x4
GLOBALFLAG_DELAYED_QUICKEFFECT
=
0x8
--
--
DUEL_TEST_MODE
=
0x01
DUEL_TEST_MODE
=
0x01
DUEL_ATTACK_FIRST_TURN
=
0x02
DUEL_ATTACK_FIRST_TURN
=
0x02
...
...
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