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
Commits
0478f3b6
Commit
0478f3b6
authored
Jul 22, 2012
by
argon.sun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix
parent
69449312
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
70 additions
and
39 deletions
+70
-39
gframe/single_mode.cpp
gframe/single_mode.cpp
+5
-2
ocgcore/field.h
ocgcore/field.h
+0
-2
ocgcore/libduel.cpp
ocgcore/libduel.cpp
+12
-4
ocgcore/operations.cpp
ocgcore/operations.cpp
+2
-17
ocgcore/processor.cpp
ocgcore/processor.cpp
+36
-6
script/c1005587.lua
script/c1005587.lua
+1
-1
script/c11047543.lua
script/c11047543.lua
+2
-2
script/c1992816.lua
script/c1992816.lua
+5
-1
script/c25789292.lua
script/c25789292.lua
+2
-1
script/c70054514.lua
script/c70054514.lua
+1
-1
script/c74371660.lua
script/c74371660.lua
+2
-1
script/c97268402.lua
script/c97268402.lua
+2
-1
No files found.
gframe/single_mode.cpp
View file @
0478f3b6
...
...
@@ -119,8 +119,11 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) {
return
false
;
}
case
MSG_HINT
:
{
pbuf
+=
6
;
//DuelClient::ClientAnalyze(offset, pbuf - offset);
int
type
=
BufferIO
::
ReadInt8
(
pbuf
);
int
player
=
BufferIO
::
ReadInt8
(
pbuf
);
int
data
=
BufferIO
::
ReadInt32
(
pbuf
);
if
(
player
==
0
)
DuelClient
::
ClientAnalyze
(
offset
,
pbuf
-
offset
);
break
;
}
case
MSG_WIN
:
{
...
...
ocgcore/field.h
View file @
0478f3b6
...
...
@@ -397,7 +397,6 @@ public:
//operations
int32
negate_chain
(
uint8
chaincount
);
int32
disable_chain
(
uint8
chaincount
);
int32
negate_related_chain
(
card
*
pcard
);
void
change_chain_effect
(
uint8
chaincount
,
int32
replace_op
);
void
change_target
(
uint8
chaincount
,
group
*
targets
);
void
change_target_player
(
uint8
chaincount
,
uint8
playerid
);
...
...
@@ -482,7 +481,6 @@ public:
//Chain Info
#define CHAIN_DISABLE_ACTIVATE 0x01
#define CHAIN_DISABLE_EFFECT 0x02
#define CHAIN_NEGATED 0x04
#define CHAININFO_CHAIN_COUNT 0x01
#define CHAININFO_TRIGGERING_EFFECT 0x02
#define CHAININFO_TRIGGERING_PLAYER 0x04
...
...
ocgcore/libduel.cpp
View file @
0478f3b6
...
...
@@ -1173,12 +1173,20 @@ int32 scriptlib::duel_negate_effect(lua_State *L) {
return
1
;
}
int32
scriptlib
::
duel_negate_related_chain
(
lua_State
*
L
)
{
check_param_count
(
L
,
1
);
check_param_count
(
L
,
2
);
check_param
(
L
,
PARAM_TYPE_CARD
,
1
);
card
*
pcard
=
*
(
card
**
)
lua_touserdata
(
L
,
1
);
duel
*
pduel
=
pcard
->
pduel
;
lua_pushboolean
(
L
,
pduel
->
game_field
->
negate_related_chain
(
pcard
));
return
1
;
uint32
reset_flag
=
lua_tointeger
(
L
,
2
);
duel
*
pduel
=
pcard
->
pduel
;
if
(
pduel
->
game_field
->
core
.
current_chain
.
size
()
<
2
)
return
FALSE
;
effect
*
negeff
=
pduel
->
new_effect
();
negeff
->
owner
=
pduel
->
game_field
->
core
.
reason_effect
->
handler
;
negeff
->
type
=
EFFECT_TYPE_SINGLE
;
negeff
->
code
=
EFFECT_DISABLE_CHAIN
;
negeff
->
reset_flag
=
RESET_CHAIN
|
RESET_EVENT
|
reset_flag
;
pcard
->
add_effect
(
negeff
);
return
0
;
}
int32
scriptlib
::
duel_disable_summon
(
lua_State
*
L
)
{
check_param_count
(
L
,
1
);
...
...
ocgcore/operations.cpp
View file @
0478f3b6
...
...
@@ -20,7 +20,7 @@ int32 field::negate_chain(uint8 chaincount) {
chain
&
pchain
=
core
.
current_chain
[
chaincount
-
1
];
if
(
!
(
pchain
.
flag
&
CHAIN_DISABLE_ACTIVATE
)
&&
is_chain_negatable
(
pchain
.
chain_count
)
&&
pchain
.
triggering_effect
->
handler
->
is_affect_by_effect
(
core
.
reason_effect
)
)
{
pchain
.
flag
|=
CHAIN_DISABLE_ACTIVATE
|
CHAIN_NEGATED
;
pchain
.
flag
|=
CHAIN_DISABLE_ACTIVATE
;
pchain
.
disable_reason
=
core
.
reason_effect
;
pchain
.
disable_player
=
core
.
reason_player
;
if
((
pchain
.
triggering_effect
->
type
&
EFFECT_TYPE_ACTIVATE
)
&&
(
pchain
.
triggering_effect
->
handler
->
current
.
location
==
LOCATION_SZONE
))
{
...
...
@@ -43,7 +43,7 @@ int32 field::disable_chain(uint8 chaincount) {
chain
&
pchain
=
core
.
current_chain
[
chaincount
-
1
];
if
(
!
(
pchain
.
flag
&
CHAIN_DISABLE_EFFECT
)
&&
is_chain_disablable
(
pchain
.
chain_count
)
&&
pchain
.
triggering_effect
->
handler
->
is_affect_by_effect
(
core
.
reason_effect
))
{
core
.
current_chain
[
chaincount
-
1
].
flag
|=
CHAIN_DISABLE_EFFECT
|
CHAIN_NEGATED
;
core
.
current_chain
[
chaincount
-
1
].
flag
|=
CHAIN_DISABLE_EFFECT
;
core
.
current_chain
[
chaincount
-
1
].
disable_reason
=
core
.
reason_effect
;
core
.
current_chain
[
chaincount
-
1
].
disable_player
=
core
.
reason_player
;
pduel
->
write_buffer8
(
MSG_CHAIN_DISABLED
);
...
...
@@ -54,21 +54,6 @@ int32 field::disable_chain(uint8 chaincount) {
}
return
FALSE
;
}
int32
field
::
negate_related_chain
(
card
*
pcard
)
{
for
(
int32
i
=
0
;
i
<
core
.
current_chain
.
size
();
++
i
)
{
chain
&
pchain
=
core
.
current_chain
[
i
];
if
(
pchain
.
triggering_effect
->
handler
==
pcard
&&
!
(
pchain
.
flag
&
CHAIN_DISABLE_EFFECT
)
&&
is_chain_disablable
(
pchain
.
chain_count
)
&&
pchain
.
triggering_effect
->
handler
->
is_affect_by_effect
(
core
.
reason_effect
))
{
pchain
.
flag
|=
CHAIN_DISABLE_EFFECT
|
CHAIN_NEGATED
;
pchain
.
disable_reason
=
core
.
reason_effect
;
pchain
.
disable_player
=
core
.
reason_player
;
pduel
->
write_buffer8
(
MSG_CHAIN_DISABLED
);
pduel
->
write_buffer8
(
i
+
1
);
return
TRUE
;
}
}
return
FALSE
;
}
void
field
::
change_chain_effect
(
uint8
chaincount
,
int32
rep_op
)
{
if
(
core
.
current_chain
.
size
()
==
0
)
return
;
...
...
ocgcore/processor.cpp
View file @
0478f3b6
...
...
@@ -1648,8 +1648,30 @@ int32 field::process_point_event(int16 step, int32 special, int32 skip_new) {
clit
->
triggering_location
=
peffect
->
handler
->
current
.
location
;
clit
->
triggering_sequence
=
peffect
->
handler
->
current
.
sequence
;
}
if
(
peffect
->
is_chainable
(
clit
->
triggering_player
)
&&
peffect
->
is_activateable
(
clit
->
triggering_player
,
clit
->
evt
,
TRUE
))
{
if
(
clit
->
triggering_player
==
infos
.
turn_player
)
uint8
tp
=
clit
->
triggering_player
;
bool
act
=
true
;
if
(
peffect
->
is_chainable
(
tp
)
&&
peffect
->
is_activateable
(
tp
,
clit
->
evt
,
TRUE
))
{
if
(
peffect
->
flag
&
EFFECT_FLAG_CHAIN_UNIQUE
)
{
if
(
tp
==
infos
.
turn_player
)
{
for
(
auto
tpit
=
core
.
tpchain
.
begin
();
tpit
!=
core
.
tpchain
.
end
();
++
tpit
)
{
if
(
tpit
->
triggering_effect
->
handler
->
data
.
code
==
peffect
->
handler
->
data
.
code
)
{
act
=
false
;
break
;
}
}
}
else
{
for
(
auto
ntpit
=
core
.
ntpchain
.
begin
();
ntpit
!=
core
.
ntpchain
.
end
();
++
ntpit
)
{
if
(
ntpit
->
triggering_effect
->
handler
->
data
.
code
==
peffect
->
handler
->
data
.
code
)
{
act
=
false
;
break
;
}
}
}
}
}
else
act
=
false
;
if
(
act
)
{
if
(
tp
==
infos
.
turn_player
)
core
.
tpchain
.
push_back
(
*
clit
);
else
core
.
ntpchain
.
push_back
(
*
clit
);
...
...
@@ -3865,8 +3887,15 @@ int32 field::add_chain(uint16 step) {
luaL_unref
(
pduel
->
lua
->
lua_state
,
LUA_REGISTRYINDEX
,
core
.
chain_limit
);
core
.
chain_limit
=
0
;
}
if
(
!
(
peffect
->
flag
&
EFFECT_FLAG_FIELD_ONLY
)
&&
peffect
->
handler
->
is_affected_by_effect
(
EFFECT_DISABLE_EFFECT
))
clit
->
flag
|=
CHAIN_DISABLE_EFFECT
;
effect
*
deffect
;
if
(
!
(
peffect
->
flag
&
EFFECT_FLAG_FIELD_ONLY
)
&&
(
deffect
=
peffect
->
handler
->
is_affected_by_effect
(
EFFECT_DISABLE_EFFECT
)))
{
effect
*
negeff
=
pduel
->
new_effect
();
negeff
->
owner
=
deffect
->
owner
;
negeff
->
type
=
EFFECT_TYPE_SINGLE
;
negeff
->
code
=
EFFECT_DISABLE_CHAIN
;
negeff
->
reset_flag
=
RESET_CHAIN
|
RESET_EVENT
|
deffect
->
get_value
();
peffect
->
handler
->
add_effect
(
negeff
);
}
clit
->
triggering_effect
->
card_type
=
peffect
->
handler
->
get_type
();
if
((
clit
->
triggering_effect
->
card_type
&
0x5
)
==
0x5
)
clit
->
triggering_effect
->
card_type
-=
TYPE_TRAP
;
...
...
@@ -4068,8 +4097,9 @@ int32 field::solve_chain(uint16 step, uint32 skip_new) {
case
2
:
{
card
*
pcard
=
cait
->
triggering_effect
->
handler
;
if
(
is_chain_disablable
(
cait
->
chain_count
))
{
if
((
cait
->
flag
&
CHAIN_DISABLE_EFFECT
)
||
(
pcard
->
is_status
(
STATUS_DISABLED
)
&&
pcard
->
is_has_relation
(
cait
->
triggering_effect
)))
{
if
(
!
(
cait
->
flag
&
CHAIN_NEGATED
))
{
if
((
cait
->
flag
&
CHAIN_DISABLE_EFFECT
)
||
pcard
->
is_affected_by_effect
(
EFFECT_DISABLE_CHAIN
)
||
(
pcard
->
is_status
(
STATUS_DISABLED
)
&&
pcard
->
is_has_relation
(
cait
->
triggering_effect
)))
{
if
(
!
(
cait
->
flag
&
CHAIN_DISABLE_EFFECT
))
{
pduel
->
write_buffer8
(
MSG_CHAIN_DISABLED
);
pduel
->
write_buffer8
(
cait
->
chain_count
);
}
...
...
script/c1005587.lua
View file @
0478f3b6
...
...
@@ -37,6 +37,6 @@ function c1005587.activate(e,tp,eg,ep,ev,re,r,rp)
e1
:
SetReset
(
RESET_EVENT
+
0x1fe0000
)
tc
:
RegisterEffect
(
e1
)
Duel
.
AdjustInstantly
()
Duel
.
NegateRelatedChain
(
tc
)
Duel
.
NegateRelatedChain
(
tc
,
RESET_TURN_SET
)
Duel
.
Destroy
(
tc
,
REASON_EFFECT
)
end
script/c11047543.lua
View file @
0478f3b6
...
...
@@ -12,12 +12,12 @@ function c11047543.initial_effect(c)
c
:
RegisterEffect
(
e1
)
end
function
c11047543
.
filter1
(
c
,
e
,
tp
)
return
c
:
IsRace
(
RACE_PSYCHO
)
and
c
:
IsType
(
TYPE_TUNER
)
return
c
:
Is
Faceup
()
and
c
:
Is
Race
(
RACE_PSYCHO
)
and
c
:
IsType
(
TYPE_TUNER
)
and
Duel
.
IsExistingTarget
(
c11047543
.
filter2
,
tp
,
LOCATION_REMOVED
,
0
,
1
,
nil
,
e
,
tp
,
c
:
GetLevel
())
end
function
c11047543
.
filter2
(
c
,
e
,
tp
,
lv
)
local
clv
=
c
:
GetLevel
()
return
clv
>
0
and
c
:
IsRace
(
RACE_PSYCHO
)
and
not
c
:
IsType
(
TYPE_TUNER
)
return
clv
>
0
and
c
:
Is
Faceup
()
and
c
:
Is
Race
(
RACE_PSYCHO
)
and
not
c
:
IsType
(
TYPE_TUNER
)
and
Duel
.
IsExistingMatchingCard
(
c11047543
.
spfilter
,
tp
,
LOCATION_EXTRA
,
0
,
1
,
nil
,
e
,
tp
,
lv
+
clv
)
end
function
c11047543
.
spfilter
(
c
,
e
,
tp
,
lv
)
...
...
script/c1992816.lua
View file @
0478f3b6
...
...
@@ -9,9 +9,9 @@ function c1992816.initial_effect(c)
e1
:
SetType
(
EFFECT_TYPE_QUICK_O
)
e1
:
SetCode
(
EVENT_FREE_CHAIN
)
e1
:
SetRange
(
LOCATION_MZONE
)
e1
:
SetCountLimit
(
1
)
e1
:
SetHintTiming
(
0
,
TIMING_BATTLE_PHASE
)
e1
:
SetCondition
(
c1992816
.
atkcon
)
e1
:
SetCost
(
c1992816
.
atkcost
)
e1
:
SetOperation
(
c1992816
.
atkop
)
c
:
RegisterEffect
(
e1
)
--material
...
...
@@ -38,6 +38,10 @@ end
function
c1992816
.
atkcon
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
return
e
:
GetHandler
()
==
Duel
.
GetAttackTarget
()
and
e
:
GetHandler
():
GetOverlayCount
()
~=
0
end
function
c1992816
.
atkcost
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
e
:
GetHandler
():
GetFlagEffect
(
1992816
)
==
0
end
e
:
GetHandler
():
RegisterFlagEffect
(
1992816
,
RESET_EVENT
+
0x1fe0000
+
RESET_PHASE
+
PHASE_DAMAGE
,
0
,
1
)
end
function
c1992816
.
atkop
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
Duel
.
NegateAttack
()
end
...
...
script/c25789292.lua
View file @
0478f3b6
...
...
@@ -26,7 +26,7 @@ function c25789292.activate(e,tp,eg,ep,ev,re,r,rp)
local
c
=
e
:
GetHandler
()
local
tc
=
Duel
.
GetFirstTarget
()
if
tc
:
IsRelateToEffect
(
e
)
and
tc
:
IsFaceup
()
then
Duel
.
NegateRelatedChain
(
tc
)
Duel
.
NegateRelatedChain
(
tc
,
RESET_TURN_SET
)
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetType
(
EFFECT_TYPE_SINGLE
)
e1
:
SetCode
(
EFFECT_UPDATE_ATTACK
)
...
...
@@ -41,6 +41,7 @@ function c25789292.activate(e,tp,eg,ep,ev,re,r,rp)
local
e3
=
Effect
.
CreateEffect
(
c
)
e3
:
SetType
(
EFFECT_TYPE_SINGLE
)
e3
:
SetCode
(
EFFECT_DISABLE_EFFECT
)
e3
:
SetValue
(
RESET_TURN_SET
)
e3
:
SetReset
(
RESET_EVENT
+
0x1fe0000
+
RESET_PHASE
+
RESET_END
)
tc
:
RegisterEffect
(
e3
)
end
...
...
script/c70054514.lua
View file @
0478f3b6
...
...
@@ -14,7 +14,7 @@ function c70054514.initial_effect(c)
end
function
c70054514
.
drcon
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
)
local
c
=
e
:
GetHandler
()
return
c
:
IsReason
(
REASON_DESTROY
)
and
c
:
IsPreviousLocation
(
LOCATION_ONFIELD
)
return
c
:
IsReason
(
REASON_DESTROY
)
and
c
:
Is
Reason
(
REASON_EFFECT
)
and
c
:
Is
PreviousLocation
(
LOCATION_ONFIELD
)
end
function
c70054514
.
drtg
(
e
,
tp
,
eg
,
ep
,
ev
,
re
,
r
,
rp
,
chk
)
if
chk
==
0
then
return
true
end
...
...
script/c74371660.lua
View file @
0478f3b6
...
...
@@ -55,9 +55,10 @@ function c74371660.operation(e,tp,eg,ep,ev,re,r,rp)
local
e2
=
Effect
.
CreateEffect
(
c
)
e2
:
SetType
(
EFFECT_TYPE_SINGLE
)
e2
:
SetCode
(
EFFECT_DISABLE_EFFECT
)
e2
:
SetValue
(
RESET_TURN_SET
)
e2
:
SetReset
(
RESET_EVENT
+
0x1fe0000
+
RESET_PHASE
+
PHASE_END
)
tc
:
RegisterEffect
(
e2
)
Duel
.
NegateRelatedChain
(
tc
)
Duel
.
NegateRelatedChain
(
tc
,
RESET_TURN_SET
)
tc
=
g
:
GetNext
()
end
end
script/c97268402.lua
View file @
0478f3b6
...
...
@@ -37,7 +37,7 @@ function c97268402.operation(e,tp,eg,ep,ev,re,r,rp)
local
c
=
e
:
GetHandler
()
local
tc
=
Duel
.
GetFirstTarget
()
if
tc
:
IsFaceup
()
and
tc
:
IsRelateToEffect
(
e
)
then
Duel
.
NegateRelatedChain
(
tc
)
Duel
.
NegateRelatedChain
(
tc
,
RESET_TURN_SET
)
local
e1
=
Effect
.
CreateEffect
(
c
)
e1
:
SetType
(
EFFECT_TYPE_SINGLE
)
e1
:
SetCode
(
EFFECT_DISABLE
)
...
...
@@ -46,6 +46,7 @@ function c97268402.operation(e,tp,eg,ep,ev,re,r,rp)
local
e2
=
Effect
.
CreateEffect
(
c
)
e2
:
SetType
(
EFFECT_TYPE_SINGLE
)
e2
:
SetCode
(
EFFECT_DISABLE_EFFECT
)
e2
:
SetValue
(
RESET_TURN_SET
)
e2
:
SetReset
(
RESET_EVENT
+
0x1fe0000
+
RESET_PHASE
+
RESET_END
)
tc
:
RegisterEffect
(
e2
)
end
...
...
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