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
a1f55eec
Commit
a1f55eec
authored
Jan 07, 2020
by
DailyShana
Committed by
GitHub
Jan 07, 2020
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add EFFECT_CHANGE_BATTLE_DAMAGE (#268)
parent
5a16238f
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
78 additions
and
0 deletions
+78
-0
effect.h
effect.h
+1
-0
processor.cpp
processor.cpp
+77
-0
No files found.
effect.h
View file @
a1f55eec
...
@@ -365,6 +365,7 @@ inline effect_flag operator|(effect_flag flag1, effect_flag flag2)
...
@@ -365,6 +365,7 @@ inline effect_flag operator|(effect_flag flag1, effect_flag flag2)
#define EFFECT_BATTLE_DAMAGE_TO_EFFECT 205
#define EFFECT_BATTLE_DAMAGE_TO_EFFECT 205
#define EFFECT_BOTH_BATTLE_DAMAGE 206
#define EFFECT_BOTH_BATTLE_DAMAGE 206
#define EFFECT_ALSO_BATTLE_DAMAGE 207
#define EFFECT_ALSO_BATTLE_DAMAGE 207
#define EFFECT_CHANGE_BATTLE_DAMAGE 208
#define EFFECT_TOSS_COIN_REPLACE 220
#define EFFECT_TOSS_COIN_REPLACE 220
#define EFFECT_TOSS_DICE_REPLACE 221
#define EFFECT_TOSS_DICE_REPLACE 221
#define EFFECT_FUSION_MATERIAL 230
#define EFFECT_FUSION_MATERIAL 230
...
...
processor.cpp
View file @
a1f55eec
...
@@ -3394,6 +3394,44 @@ void field::calculate_battle_damage(effect** pdamchange, card** preason_card, ui
...
@@ -3394,6 +3394,44 @@ void field::calculate_battle_damage(effect** pdamchange, card** preason_card, ui
}
}
}
}
}
}
effect_set
eset
;
core
.
attacker
->
filter_effect
(
EFFECT_CHANGE_BATTLE_DAMAGE
,
&
eset
,
FALSE
);
core
.
attack_target
->
filter_effect
(
EFFECT_CHANGE_BATTLE_DAMAGE
,
&
eset
,
FALSE
);
filter_player_effect
(
pa
,
EFFECT_CHANGE_BATTLE_DAMAGE
,
&
eset
,
FALSE
);
filter_player_effect
(
1
-
pa
,
EFFECT_CHANGE_BATTLE_DAMAGE
,
&
eset
,
FALSE
);
eset
.
sort
();
for
(
uint8
p
=
0
;
p
<
2
;
++
p
)
{
bool
double_dam
=
false
;
bool
half_dam
=
false
;
int32
dam_value
=
-
1
;
for
(
uint32
i
=
0
;
i
<
eset
.
size
();
++
i
)
{
int32
val
=
-
1
;
if
(
!
eset
[
i
]
->
is_flag
(
EFFECT_FLAG_PLAYER_TARGET
))
{
pduel
->
lua
->
add_param
(
p
,
PARAM_TYPE_INT
);
val
=
eset
[
i
]
->
get_value
(
1
);
}
else
if
(
eset
[
i
]
->
is_target_player
(
p
))
val
=
eset
[
i
]
->
get_value
();
if
(
val
==
0
)
{
dam_value
=
0
;
break
;
}
else
if
(
val
>
0
)
dam_value
=
val
;
else
if
(
val
==
DOUBLE_DAMAGE
)
double_dam
=
true
;
else
if
(
val
==
HALF_DAMAGE
)
half_dam
=
true
;
}
if
(
double_dam
&&
half_dam
)
{
double_dam
=
false
;
half_dam
=
false
;
}
if
(
double_dam
)
core
.
battle_damage
[
p
]
*=
2
;
if
(
half_dam
)
core
.
battle_damage
[
p
]
/=
2
;
if
(
dam_value
>=
0
&&
core
.
battle_damage
[
p
]
>
0
)
core
.
battle_damage
[
p
]
=
dam_value
;
}
if
(
core
.
attacker
->
is_affected_by_effect
(
EFFECT_NO_BATTLE_DAMAGE
)
if
(
core
.
attacker
->
is_affected_by_effect
(
EFFECT_NO_BATTLE_DAMAGE
)
||
core
.
attack_target
->
is_affected_by_effect
(
EFFECT_AVOID_BATTLE_DAMAGE
,
core
.
attacker
)
||
core
.
attack_target
->
is_affected_by_effect
(
EFFECT_AVOID_BATTLE_DAMAGE
,
core
.
attacker
)
||
is_player_affected_by_effect
(
pd
,
EFFECT_AVOID_BATTLE_DAMAGE
))
||
is_player_affected_by_effect
(
pd
,
EFFECT_AVOID_BATTLE_DAMAGE
))
...
@@ -3475,6 +3513,45 @@ void field::calculate_battle_damage(effect** pdamchange, card** preason_card, ui
...
@@ -3475,6 +3513,45 @@ void field::calculate_battle_damage(effect** pdamchange, card** preason_card, ui
}
}
}
}
}
}
effect_set
eset
;
reason_card
->
filter_effect
(
EFFECT_CHANGE_BATTLE_DAMAGE
,
&
eset
,
FALSE
);
if
(
dam_card
)
dam_card
->
filter_effect
(
EFFECT_CHANGE_BATTLE_DAMAGE
,
&
eset
,
FALSE
);
filter_player_effect
(
damp
,
EFFECT_CHANGE_BATTLE_DAMAGE
,
&
eset
,
FALSE
);
filter_player_effect
(
1
-
damp
,
EFFECT_CHANGE_BATTLE_DAMAGE
,
&
eset
,
FALSE
);
eset
.
sort
();
for
(
uint8
p
=
0
;
p
<
2
;
++
p
)
{
bool
double_dam
=
false
;
bool
half_dam
=
false
;
int32
dam_value
=
-
1
;
for
(
uint32
i
=
0
;
i
<
eset
.
size
();
++
i
)
{
int32
val
=
-
1
;
if
(
!
eset
[
i
]
->
is_flag
(
EFFECT_FLAG_PLAYER_TARGET
))
{
pduel
->
lua
->
add_param
(
p
,
PARAM_TYPE_INT
);
val
=
eset
[
i
]
->
get_value
(
1
);
}
else
if
(
eset
[
i
]
->
is_target_player
(
p
))
val
=
eset
[
i
]
->
get_value
();
if
(
val
==
0
)
{
dam_value
=
0
;
break
;
}
else
if
(
val
>
0
)
dam_value
=
val
;
else
if
(
val
==
DOUBLE_DAMAGE
)
double_dam
=
true
;
else
if
(
val
==
HALF_DAMAGE
)
half_dam
=
true
;
}
if
(
double_dam
&&
half_dam
)
{
double_dam
=
false
;
half_dam
=
false
;
}
if
(
double_dam
)
core
.
battle_damage
[
p
]
*=
2
;
if
(
half_dam
)
core
.
battle_damage
[
p
]
/=
2
;
if
(
dam_value
>=
0
&&
core
.
battle_damage
[
p
]
>
0
)
core
.
battle_damage
[
p
]
=
dam_value
;
}
if
(
reason_card
->
is_affected_by_effect
(
EFFECT_NO_BATTLE_DAMAGE
)
if
(
reason_card
->
is_affected_by_effect
(
EFFECT_NO_BATTLE_DAMAGE
)
||
dam_card
&&
dam_card
->
is_affected_by_effect
(
EFFECT_AVOID_BATTLE_DAMAGE
,
reason_card
)
||
dam_card
&&
dam_card
->
is_affected_by_effect
(
EFFECT_AVOID_BATTLE_DAMAGE
,
reason_card
)
||
is_player_affected_by_effect
(
damp
,
EFFECT_AVOID_BATTLE_DAMAGE
))
||
is_player_affected_by_effect
(
damp
,
EFFECT_AVOID_BATTLE_DAMAGE
))
...
...
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