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
614ee807
Commit
614ee807
authored
Sep 29, 2024
by
Chen Bill
Committed by
GitHub
Sep 29, 2024
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update card::is_affected_by_effect (#634)
parent
2b5eac4d
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
22 additions
and
24 deletions
+22
-24
card.cpp
card.cpp
+22
-24
No files found.
card.cpp
View file @
614ee807
...
@@ -2947,33 +2947,32 @@ void card::filter_spsummon_procedure_g(uint8 playerid, effect_set* peset) {
...
@@ -2947,33 +2947,32 @@ void card::filter_spsummon_procedure_g(uint8 playerid, effect_set* peset) {
}
}
// find an effect with code which affects this
// find an effect with code which affects this
effect* card::is_affected_by_effect(int32 code) {
effect* card::is_affected_by_effect(int32 code) {
effect
*
peffect
=
nullptr
;
auto rg = single_effect.equal_range(code);
auto rg = single_effect.equal_range(code);
for
(
;
rg
.
first
!=
rg
.
second
;
++
rg
.
firs
t
)
{
for (
auto it = rg.first; it != rg.second; ++i
t) {
peffect
=
rg
.
firs
t
->
second
;
auto peffect = i
t->second;
if (peffect->is_available() && (!peffect->is_flag(EFFECT_FLAG_SINGLE_RANGE) || is_affect_by_effect(peffect)))
if (peffect->is_available() && (!peffect->is_flag(EFFECT_FLAG_SINGLE_RANGE) || is_affect_by_effect(peffect)))
return peffect;
return peffect;
}
}
for (auto& pcard : equiping_cards) {
for (auto& pcard : equiping_cards) {
rg = pcard->equip_effect.equal_range(code);
rg = pcard->equip_effect.equal_range(code);
for
(
;
rg
.
first
!=
rg
.
second
;
++
rg
.
firs
t
)
{
for (
auto it = rg.first; it != rg.second; ++i
t) {
peffect
=
rg
.
firs
t
->
second
;
auto peffect = i
t->second;
if (peffect->is_available() && is_affect_by_effect(peffect))
if (peffect->is_available() && is_affect_by_effect(peffect))
return peffect;
return peffect;
}
}
}
}
for (auto& pcard : effect_target_owner) {
for (auto& pcard : effect_target_owner) {
rg = pcard->target_effect.equal_range(code);
rg = pcard->target_effect.equal_range(code);
for
(
;
rg
.
first
!=
rg
.
second
;
++
rg
.
firs
t
)
{
for (
auto it = rg.first; it != rg.second; ++i
t) {
peffect
=
rg
.
firs
t
->
second
;
auto peffect = i
t->second;
if (peffect->is_available() && peffect->is_target(this) && is_affect_by_effect(peffect))
if (peffect->is_available() && peffect->is_target(this) && is_affect_by_effect(peffect))
return peffect;
return peffect;
}
}
}
}
for (auto& pcard : xyz_materials) {
for (auto& pcard : xyz_materials) {
rg = pcard->xmaterial_effect.equal_range(code);
rg = pcard->xmaterial_effect.equal_range(code);
for
(
;
rg
.
first
!=
rg
.
second
;
++
rg
.
firs
t
)
{
for (
auto it = rg.first; it != rg.second; ++i
t) {
peffect
=
rg
.
firs
t
->
second
;
auto peffect = i
t->second;
if (peffect->type & EFFECT_TYPE_FIELD)
if (peffect->type & EFFECT_TYPE_FIELD)
continue;
continue;
if (peffect->is_available() && is_affect_by_effect(peffect))
if (peffect->is_available() && is_affect_by_effect(peffect))
...
@@ -2981,8 +2980,8 @@ effect* card::is_affected_by_effect(int32 code) {
...
@@ -2981,8 +2980,8 @@ effect* card::is_affected_by_effect(int32 code) {
}
}
}
}
rg = pduel->game_field->effects.aura_effect.equal_range(code);
rg = pduel->game_field->effects.aura_effect.equal_range(code);
for
(
;
rg
.
first
!=
rg
.
second
;
++
rg
.
firs
t
)
{
for (
auto it = rg.first; it != rg.second; ++i
t) {
peffect
=
rg
.
firs
t
->
second
;
auto peffect = i
t->second;
if (!peffect->is_flag(EFFECT_FLAG_PLAYER_TARGET) && peffect->is_target(this)
if (!peffect->is_flag(EFFECT_FLAG_PLAYER_TARGET) && peffect->is_target(this)
&& peffect->is_available() && is_affect_by_effect(peffect))
&& peffect->is_available() && is_affect_by_effect(peffect))
return peffect;
return peffect;
...
@@ -2990,34 +2989,33 @@ effect* card::is_affected_by_effect(int32 code) {
...
@@ -2990,34 +2989,33 @@ effect* card::is_affected_by_effect(int32 code) {
return nullptr;
return nullptr;
}
}
effect* card::is_affected_by_effect(int32 code, card* target) {
effect* card::is_affected_by_effect(int32 code, card* target) {
effect
*
peffect
=
nullptr
;
auto rg = single_effect.equal_range(code);
auto rg = single_effect.equal_range(code);
for
(
;
rg
.
first
!=
rg
.
second
;
++
rg
.
firs
t
)
{
for (
auto it = rg.first; it != rg.second; ++i
t) {
peffect
=
rg
.
firs
t
->
second
;
auto peffect = i
t->second;
if (peffect->is_available() && (!peffect->is_flag(EFFECT_FLAG_SINGLE_RANGE) || is_affect_by_effect(peffect))
if (peffect->is_available() && (!peffect->is_flag(EFFECT_FLAG_SINGLE_RANGE) || is_affect_by_effect(peffect))
&& peffect->get_value(target))
&& peffect->get_value(target))
return peffect;
return peffect;
}
}
for (auto& pcard : equiping_cards) {
for (auto& pcard : equiping_cards) {
rg = pcard->equip_effect.equal_range(code);
rg = pcard->equip_effect.equal_range(code);
for
(
;
rg
.
first
!=
rg
.
second
;
++
rg
.
firs
t
)
{
for (
auto it = rg.first; it != rg.second; ++i
t) {
peffect
=
rg
.
firs
t
->
second
;
auto peffect = i
t->second;
if (peffect->is_available() && is_affect_by_effect(peffect) && peffect->get_value(target))
if (peffect->is_available() && is_affect_by_effect(peffect) && peffect->get_value(target))
return peffect;
return peffect;
}
}
}
}
for (auto& pcard : effect_target_owner) {
for (auto& pcard : effect_target_owner) {
rg = pcard->target_effect.equal_range(code);
rg = pcard->target_effect.equal_range(code);
for
(
;
rg
.
first
!=
rg
.
second
;
++
rg
.
firs
t
)
{
for (
auto it = rg.first; it != rg.second; ++i
t) {
peffect
=
rg
.
firs
t
->
second
;
auto peffect = i
t->second;
if (peffect->is_available() && peffect->is_target(this) && is_affect_by_effect(peffect) && peffect->get_value(target))
if (peffect->is_available() && peffect->is_target(this) && is_affect_by_effect(peffect) && peffect->get_value(target))
return peffect;
return peffect;
}
}
}
}
for (auto& pcard : xyz_materials) {
for (auto& pcard : xyz_materials) {
rg = pcard->xmaterial_effect.equal_range(code);
rg = pcard->xmaterial_effect.equal_range(code);
for
(
;
rg
.
first
!=
rg
.
second
;
++
rg
.
firs
t
)
{
for (
auto it = rg.first; it != rg.second; ++i
t) {
peffect
=
rg
.
firs
t
->
second
;
auto peffect = i
t->second;
if (peffect->type & EFFECT_TYPE_FIELD)
if (peffect->type & EFFECT_TYPE_FIELD)
continue;
continue;
if (peffect->is_available() && is_affect_by_effect(peffect) && peffect->get_value(target))
if (peffect->is_available() && is_affect_by_effect(peffect) && peffect->get_value(target))
...
@@ -3025,8 +3023,8 @@ effect* card::is_affected_by_effect(int32 code, card* target) {
...
@@ -3025,8 +3023,8 @@ effect* card::is_affected_by_effect(int32 code, card* target) {
}
}
}
}
rg = pduel->game_field->effects.aura_effect.equal_range(code);
rg = pduel->game_field->effects.aura_effect.equal_range(code);
for
(
;
rg
.
first
!=
rg
.
second
;
++
rg
.
firs
t
)
{
for (
auto it = rg.first; it != rg.second; ++i
t) {
peffect
=
rg
.
firs
t
->
second
;
auto peffect = i
t->second;
if (!peffect->is_flag(EFFECT_FLAG_PLAYER_TARGET) && peffect->is_available()
if (!peffect->is_flag(EFFECT_FLAG_PLAYER_TARGET) && peffect->is_available()
&& peffect->is_target(this) && is_affect_by_effect(peffect) && peffect->get_value(target))
&& peffect->is_target(this) && is_affect_by_effect(peffect) && peffect->get_value(target))
return peffect;
return peffect;
...
...
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