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
956f951a
Commit
956f951a
authored
May 27, 2016
by
VanillaSalt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update calc_attack_defence()
parent
7059fdae
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
67 additions
and
78 deletions
+67
-78
card.cpp
card.cpp
+66
-77
card.h
card.h
+1
-1
No files found.
card.cpp
View file @
956f951a
...
@@ -397,23 +397,8 @@ int32 card::get_base_attack(uint8 swap) {
...
@@ -397,23 +397,8 @@ int32 card::get_base_attack(uint8 swap) {
return
data
.
attack
;
return
data
.
attack
;
if
(
temp
.
base_attack
!=
-
1
)
if
(
temp
.
base_attack
!=
-
1
)
return
temp
.
base_attack
;
return
temp
.
base_attack
;
if
(
!
swap
&&
is_affected_by_effect
(
EFFECT_SWAP_BASE_AD
))
int32
batk
;
return
get_base_defence
(
TRUE
);
calc_attack_defence
(
&
batk
,
0
,
0
,
0
);
int32
batk
=
data
.
attack
;
temp
.
base_attack
=
data
.
attack
;
if
(
temp
.
base_attack
<
0
)
temp
.
base_attack
=
0
;
effect_set
effects
;
filter_effect
(
EFFECT_SET_BASE_ATTACK
,
&
effects
);
for
(
int32
i
=
0
;
i
<
effects
.
size
();
++
i
)
{
batk
=
effects
[
i
]
->
get_value
(
this
);
if
(
batk
<
0
)
batk
=
0
;
temp
.
base_attack
=
batk
;
}
if
(
batk
<
0
)
batk
=
0
;
temp
.
base_attack
=
-
1
;
return
batk
;
return
batk
;
}
}
int32
card
::
get_attack
()
{
int32
card
::
get_attack
()
{
...
@@ -426,7 +411,7 @@ int32 card::get_attack() {
...
@@ -426,7 +411,7 @@ int32 card::get_attack() {
if
(
temp
.
attack
!=
-
1
)
if
(
temp
.
attack
!=
-
1
)
return
temp
.
attack
;
return
temp
.
attack
;
int32
atk
;
int32
atk
;
calc_attack_defence
(
&
atk
,
0
);
calc_attack_defence
(
0
,
0
,
&
atk
,
0
);
return
atk
;
return
atk
;
}
}
int32
card
::
get_base_defence
(
uint8
swap
)
{
int32
card
::
get_base_defence
(
uint8
swap
)
{
...
@@ -436,23 +421,8 @@ int32 card::get_base_defence(uint8 swap) {
...
@@ -436,23 +421,8 @@ int32 card::get_base_defence(uint8 swap) {
return
data
.
defence
;
return
data
.
defence
;
if
(
temp
.
base_defence
!=
-
1
)
if
(
temp
.
base_defence
!=
-
1
)
return
temp
.
base_defence
;
return
temp
.
base_defence
;
if
(
!
swap
&&
is_affected_by_effect
(
EFFECT_SWAP_BASE_AD
))
int32
bdef
;
return
get_base_attack
(
TRUE
);
calc_attack_defence
(
0
,
&
bdef
,
0
,
0
);
int32
bdef
=
data
.
defence
;
temp
.
base_defence
=
data
.
defence
;
if
(
temp
.
base_defence
<
0
)
temp
.
base_defence
=
0
;
effect_set
effects
;
filter_effect
(
EFFECT_SET_BASE_DEFENCE
,
&
effects
);
for
(
int32
i
=
0
;
i
<
effects
.
size
();
++
i
)
{
bdef
=
effects
[
i
]
->
get_value
(
this
);
if
(
bdef
<
0
)
bdef
=
0
;
temp
.
base_defence
=
bdef
;
}
if
(
bdef
<
0
)
bdef
=
0
;
temp
.
base_defence
=
-
1
;
return
bdef
;
return
bdef
;
}
}
int32
card
::
get_defence
()
{
int32
card
::
get_defence
()
{
...
@@ -465,37 +435,38 @@ int32 card::get_defence() {
...
@@ -465,37 +435,38 @@ int32 card::get_defence() {
if
(
temp
.
defence
!=
-
1
)
if
(
temp
.
defence
!=
-
1
)
return
temp
.
defence
;
return
temp
.
defence
;
int32
def
;
int32
def
;
calc_attack_defence
(
0
,
&
def
);
calc_attack_defence
(
0
,
0
,
0
,
&
def
);
return
def
;
return
def
;
}
}
void
card
::
calc_attack_defence
(
int32
*
patk
,
int32
*
pdef
)
{
void
card
::
calc_attack_defence
(
int32
*
pbatk
,
int32
*
pbdef
,
int32
*
patk
,
int32
*
pdef
)
{
uint32
base_atk
=
get_base_attack
();
int32
atk
=
data
.
attack
;
uint32
base_def
=
get_base_defence
();
if
(
atk
<
0
)
temp
.
base_attack
=
base_atk
;
atk
=
0
;
temp
.
base_defence
=
base_def
;
int32
def
=
data
.
defence
;
if
(
def
<
0
)
def
=
0
;
temp
.
base_attack
=
atk
;
temp
.
base_defence
=
def
;
temp
.
attack
=
atk
;
temp
.
defence
=
def
;
int32
up_atk
=
0
,
upc_atk
=
0
;
int32
up_atk
=
0
,
upc_atk
=
0
;
int32
up_def
=
0
,
upc_def
=
0
;
int32
up_def
=
0
,
upc_def
=
0
;
effect_set
eset
;
effect_set
eset
;
filter_effect
(
EFFECT_SWAP_AD
,
&
eset
,
FALSE
);
filter_effect
(
EFFECT_SWAP_AD
,
&
eset
,
FALSE
);
int32
swap
=
eset
.
size
();
if
(
swap
||
patk
)
{
temp
.
attack
=
base_atk
;
filter_effect
(
EFFECT_UPDATE_ATTACK
,
&
eset
,
FALSE
);
filter_effect
(
EFFECT_UPDATE_ATTACK
,
&
eset
,
FALSE
);
filter_effect
(
EFFECT_SET_ATTACK
,
&
eset
,
FALSE
);
filter_effect
(
EFFECT_SET_ATTACK
,
&
eset
,
FALSE
);
filter_effect
(
EFFECT_SET_ATTACK_FINAL
,
&
eset
,
FALSE
);
filter_effect
(
EFFECT_SET_ATTACK_FINAL
,
&
eset
,
FALSE
);
}
if
(
swap
||
pdef
)
{
temp
.
defence
=
base_def
;
filter_effect
(
EFFECT_UPDATE_DEFENCE
,
&
eset
,
FALSE
);
filter_effect
(
EFFECT_UPDATE_DEFENCE
,
&
eset
,
FALSE
);
filter_effect
(
EFFECT_SET_DEFENCE
,
&
eset
,
FALSE
);
filter_effect
(
EFFECT_SET_DEFENCE
,
&
eset
,
FALSE
);
filter_effect
(
EFFECT_SET_DEFENCE_FINAL
,
&
eset
,
FALSE
);
filter_effect
(
EFFECT_SET_DEFENCE_FINAL
,
&
eset
,
FALSE
);
}
filter_effect
(
EFFECT_SWAP_BASE_AD
,
&
eset
,
FALSE
);
eset
.
sort
();
filter_effect
(
EFFECT_SET_BASE_ATTACK
,
&
eset
,
FALSE
);
filter_effect
(
EFFECT_SET_BASE_DEFENCE
,
&
eset
);
int32
rev
=
FALSE
;
int32
rev
=
FALSE
;
if
(
is_affected_by_effect
(
EFFECT_REVERSE_UPDATE
))
if
(
is_affected_by_effect
(
EFFECT_REVERSE_UPDATE
))
rev
=
TRUE
;
rev
=
TRUE
;
effect_set
effects_atk
,
effects_def
,
effects_atk_r
,
effects_def_r
;
effect_set
effects_atk
,
effects_def
,
effects_atk_r
,
effects_def_r
;
int32
swap_final
=
FALSE
;
int32
swap_
b_final
=
FALSE
,
swap_
final
=
FALSE
;
for
(
int32
i
=
0
;
i
<
eset
.
size
();
++
i
)
{
for
(
int32
i
=
0
;
i
<
eset
.
size
();
++
i
)
{
switch
(
eset
[
i
]
->
code
)
{
switch
(
eset
[
i
]
->
code
)
{
case
EFFECT_UPDATE_ATTACK
:
case
EFFECT_UPDATE_ATTACK
:
...
@@ -505,13 +476,13 @@ void card::calc_attack_defence(int32 *patk, int32 *pdef) {
...
@@ -505,13 +476,13 @@ void card::calc_attack_defence(int32 *patk, int32 *pdef) {
upc_atk
+=
eset
[
i
]
->
get_value
(
this
);
upc_atk
+=
eset
[
i
]
->
get_value
(
this
);
break
;
break
;
case
EFFECT_SET_ATTACK
:
case
EFFECT_SET_ATTACK
:
base_
atk
=
eset
[
i
]
->
get_value
(
this
);
atk
=
eset
[
i
]
->
get_value
(
this
);
if
(
!
(
eset
[
i
]
->
type
&
EFFECT_TYPE_SINGLE
))
if
(
!
(
eset
[
i
]
->
type
&
EFFECT_TYPE_SINGLE
))
up_atk
=
0
;
up_atk
=
0
;
break
;
break
;
case
EFFECT_SET_ATTACK_FINAL
:
case
EFFECT_SET_ATTACK_FINAL
:
if
((
eset
[
i
]
->
type
&
EFFECT_TYPE_SINGLE
)
&&
!
eset
[
i
]
->
is_flag
(
EFFECT_FLAG_SINGLE_RANGE
))
{
if
((
eset
[
i
]
->
type
&
EFFECT_TYPE_SINGLE
)
&&
!
eset
[
i
]
->
is_flag
(
EFFECT_FLAG_SINGLE_RANGE
))
{
base_
atk
=
eset
[
i
]
->
get_value
(
this
);
atk
=
eset
[
i
]
->
get_value
(
this
);
up_atk
=
0
;
up_atk
=
0
;
upc_atk
=
0
;
upc_atk
=
0
;
}
else
{
}
else
{
...
@@ -521,6 +492,10 @@ void card::calc_attack_defence(int32 *patk, int32 *pdef) {
...
@@ -521,6 +492,10 @@ void card::calc_attack_defence(int32 *patk, int32 *pdef) {
effects_atk_r
.
add_item
(
eset
[
i
]);
effects_atk_r
.
add_item
(
eset
[
i
]);
}
}
break
;
break
;
case
EFFECT_SET_BASE_ATTACK
:
atk
=
eset
[
i
]
->
get_value
(
this
);
temp
.
base_attack
=
atk
;
break
;
case
EFFECT_UPDATE_DEFENCE
:
case
EFFECT_UPDATE_DEFENCE
:
if
((
eset
[
i
]
->
type
&
EFFECT_TYPE_SINGLE
)
&&
!
eset
[
i
]
->
is_flag
(
EFFECT_FLAG_SINGLE_RANGE
))
if
((
eset
[
i
]
->
type
&
EFFECT_TYPE_SINGLE
)
&&
!
eset
[
i
]
->
is_flag
(
EFFECT_FLAG_SINGLE_RANGE
))
up_def
+=
eset
[
i
]
->
get_value
(
this
);
up_def
+=
eset
[
i
]
->
get_value
(
this
);
...
@@ -528,13 +503,13 @@ void card::calc_attack_defence(int32 *patk, int32 *pdef) {
...
@@ -528,13 +503,13 @@ void card::calc_attack_defence(int32 *patk, int32 *pdef) {
upc_def
+=
eset
[
i
]
->
get_value
(
this
);
upc_def
+=
eset
[
i
]
->
get_value
(
this
);
break
;
break
;
case
EFFECT_SET_DEFENCE
:
case
EFFECT_SET_DEFENCE
:
base_
def
=
eset
[
i
]
->
get_value
(
this
);
def
=
eset
[
i
]
->
get_value
(
this
);
if
(
!
(
eset
[
i
]
->
type
&
EFFECT_TYPE_SINGLE
))
if
(
!
(
eset
[
i
]
->
type
&
EFFECT_TYPE_SINGLE
))
up_def
=
0
;
up_def
=
0
;
break
;
break
;
case
EFFECT_SET_DEFENCE_FINAL
:
case
EFFECT_SET_DEFENCE_FINAL
:
if
((
eset
[
i
]
->
type
&
EFFECT_TYPE_SINGLE
)
&&
!
eset
[
i
]
->
is_flag
(
EFFECT_FLAG_SINGLE_RANGE
))
{
if
((
eset
[
i
]
->
type
&
EFFECT_TYPE_SINGLE
)
&&
!
eset
[
i
]
->
is_flag
(
EFFECT_FLAG_SINGLE_RANGE
))
{
base_
def
=
eset
[
i
]
->
get_value
(
this
);
def
=
eset
[
i
]
->
get_value
(
this
);
up_def
=
0
;
up_def
=
0
;
upc_def
=
0
;
upc_def
=
0
;
}
else
{
}
else
{
...
@@ -544,38 +519,52 @@ void card::calc_attack_defence(int32 *patk, int32 *pdef) {
...
@@ -544,38 +519,52 @@ void card::calc_attack_defence(int32 *patk, int32 *pdef) {
effects_def_r
.
add_item
(
eset
[
i
]);
effects_def_r
.
add_item
(
eset
[
i
]);
}
}
break
;
break
;
case
EFFECT_SET_BASE_DEFENCE
:
def
=
eset
[
i
]
->
get_value
(
this
);
temp
.
base_defence
=
def
;
break
;
case
EFFECT_SWAP_AD
:
case
EFFECT_SWAP_AD
:
if
((
eset
[
i
]
->
type
&
EFFECT_TYPE_SINGLE
)
&&
!
eset
[
i
]
->
is_flag
(
EFFECT_FLAG_SINGLE_RANGE
))
{
if
((
eset
[
i
]
->
type
&
EFFECT_TYPE_SINGLE
)
&&
!
eset
[
i
]
->
is_flag
(
EFFECT_FLAG_SINGLE_RANGE
))
{
int32
a
=
base_atk
+
up_atk
+
upc_atk
;
atk
=
temp
.
defence
;
int32
d
=
base_def
+
up_def
+
upc_def
;
base_atk
=
d
;
up_atk
=
0
;
up_atk
=
0
;
upc_atk
=
0
;
upc_atk
=
0
;
base_def
=
a
;
def
=
temp
.
attack
;
up_def
=
0
;
up_def
=
0
;
upc_def
=
0
;
upc_def
=
0
;
}
else
}
else
swap_final
=
!
swap_final
;
swap_final
=
!
swap_final
;
break
;
break
;
case
EFFECT_SWAP_BASE_AD
:
if
((
eset
[
i
]
->
type
&
EFFECT_TYPE_SINGLE
)
&&
!
eset
[
i
]
->
is_flag
(
EFFECT_FLAG_SINGLE_RANGE
))
std
::
swap
(
temp
.
base_attack
,
temp
.
base_defence
);
else
swap_b_final
=
!
swap_b_final
;
break
;
}
}
if
(
!
rev
)
{
if
(
!
rev
)
{
if
(
swap
||
patk
)
temp
.
attack
=
atk
+
up_atk
+
upc_atk
;
temp
.
attack
=
base_atk
+
up_atk
+
upc_atk
;
temp
.
defence
=
def
+
up_def
+
upc_def
;
if
(
swap
||
pdef
)
temp
.
defence
=
base_def
+
up_def
+
upc_def
;
}
else
{
}
else
{
if
(
swap
||
patk
)
temp
.
attack
=
atk
-
up_atk
-
upc_atk
;
temp
.
attack
=
base_atk
-
up_atk
-
upc_atk
;
temp
.
defence
=
def
-
up_def
-
upc_def
;
if
(
swap
||
pdef
)
temp
.
defence
=
base_def
-
up_def
-
upc_def
;
}
}
}
}
if
(
swap_final
)
{
if
(
swap_b_final
)
int32
atk
=
temp
.
attack
;
std
::
swap
(
temp
.
base_attack
,
temp
.
base_defence
);
int32
def
=
temp
.
defence
;
if
(
pbatk
)
{
temp
.
attack
=
def
;
int32
batk
=
temp
.
base_attack
;
temp
.
defence
=
atk
;
if
(
batk
<
0
)
batk
=
0
;
*
pbatk
=
batk
;
}
if
(
pbdef
)
{
int32
bdef
=
temp
.
base_defence
;
if
(
bdef
<
0
)
bdef
=
0
;
*
pbdef
=
bdef
;
}
}
if
(
swap_final
)
std
::
swap
(
temp
.
attack
,
temp
.
defence
);
if
(
patk
)
{
if
(
patk
)
{
for
(
int32
i
=
0
;
i
<
effects_atk
.
size
();
++
i
)
for
(
int32
i
=
0
;
i
<
effects_atk
.
size
();
++
i
)
temp
.
attack
=
effects_atk
[
i
]
->
get_value
(
this
);
temp
.
attack
=
effects_atk
[
i
]
->
get_value
(
this
);
...
...
card.h
View file @
956f951a
...
@@ -166,7 +166,7 @@ public:
...
@@ -166,7 +166,7 @@ public:
int32
get_attack
();
int32
get_attack
();
int32
get_base_defence
(
uint8
swap
=
FALSE
);
int32
get_base_defence
(
uint8
swap
=
FALSE
);
int32
get_defence
();
int32
get_defence
();
void
calc_attack_defence
(
int32
*
patk
,
int32
*
pdef
);
void
calc_attack_defence
(
int32
*
p
batk
,
int32
*
pbdef
,
int32
*
p
atk
,
int32
*
pdef
);
uint32
get_level
();
uint32
get_level
();
uint32
get_rank
();
uint32
get_rank
();
uint32
get_synchro_level
(
card
*
pcard
);
uint32
get_synchro_level
(
card
*
pcard
);
...
...
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