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
2e3e4266
Commit
2e3e4266
authored
Jan 29, 2018
by
VanillaSalt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix
parent
b6e18faf
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
23 additions
and
29 deletions
+23
-29
field.cpp
field.cpp
+23
-29
No files found.
field.cpp
View file @
2e3e4266
...
...
@@ -1638,31 +1638,17 @@ int32 field::check_release_list(uint8 playerid, int32 count, int32 use_con, int3
// return: the max release count of mg or all monsters on field
int32 field::get_summon_release_list(card* target, card_set* release_list, card_set* ex_list, card_set* ex_list_sum, group* mg, uint32 ex, uint32 releasable, uint32 pos) {
uint8 p = target->current.controler;
uint32
rcount
=
0
;
card_set
cset
;
card_set ex_tribute;
effect_set eset;
target->filter_effect(EFFECT_ADD_EXTRA_TRIBUTE, &eset);
for(int32 i = 0; i < eset.size(); ++i) {
if(eset[i]->get_value() & pos)
filter_inrange_cards
(
eset
[
i
],
&
cset
);
}
card_set
ex_tribute
;
for
(
auto
cit
=
cset
.
begin
();
cit
!=
cset
.
end
();
++
cit
)
{
card
*
pcard
=
*
cit
;
if
(
!
pcard
->
is_releasable_by_summon
(
p
,
target
))
continue
;
if
(
pcard
->
is_affected_by_effect
(
EFFECT_DOUBLE_TRIBUTE
,
target
))
pcard
->
release_param
=
2
;
else
pcard
->
release_param
=
1
;
rcount
+=
pcard
->
release_param
;
ex_tribute
.
insert
(
pcard
);
filter_inrange_cards(eset[i], &ex_tribute);
}
uint32 rcount = 0;
for(auto cit = player[p].list_mzone.begin(); cit != player[p].list_mzone.end(); ++cit) {
card* pcard = *cit;
if(pcard && ((releasable >> pcard->current.sequence) & 1) && pcard->is_releasable_by_summon(p, target)) {
if
(
ex_tribute
.
find
(
pcard
)
!=
ex_tribute
.
end
())
continue
;
if(mg && !mg->has_card(pcard))
continue;
if(release_list)
...
...
@@ -1679,17 +1665,19 @@ int32 field::get_summon_release_list(card* target, card_set* release_list, card_
card* pcard = *cit;
if(!pcard || !((releasable >> (pcard->current.sequence + 16)) & 1) || !pcard->is_releasable_by_summon(p, target))
continue;
if
(
ex_tribute
.
find
(
pcard
)
!=
ex_tribute
.
end
())
continue
;
if(mg && !mg->has_card(pcard))
continue;
if(pcard->is_affected_by_effect(EFFECT_DOUBLE_TRIBUTE, target))
pcard->release_param = 2;
else
pcard->release_param = 1;
if(ex || pcard->is_affected_by_effect(EFFECT_EXTRA_RELEASE)) {
if(ex_list)
ex_list->insert(pcard);
if
(
pcard
->
is_affected_by_effect
(
EFFECT_DOUBLE_TRIBUTE
,
target
))
pcard
->
release_param
=
2
;
else
pcard
->
release_param
=
1
;
rcount += pcard->release_param;
} else if(ex_tribute.find(pcard) != ex_tribute.end()) {
if(release_list)
release_list->insert(pcard)
;
rcount += pcard->release_param;
} else {
effect* peffect = pcard->is_affected_by_effect(EFFECT_EXTRA_RELEASE_SUM);
...
...
@@ -1697,16 +1685,22 @@ int32 field::get_summon_release_list(card* target, card_set* release_list, card_
continue;
if(ex_list_sum)
ex_list_sum->insert(pcard);
if
(
pcard
->
is_affected_by_effect
(
EFFECT_DOUBLE_TRIBUTE
,
target
))
pcard
->
release_param
=
2
;
else
pcard
->
release_param
=
1
;
if(ex_sum_max < pcard->release_param)
ex_sum_max = pcard->release_param;
}
}
if
(
release_list
)
release_list
->
insert
(
ex_tribute
.
begin
(),
ex_tribute
.
end
());
for(auto cit = ex_tribute.begin(); cit != ex_tribute.end(); ++cit) {
card* pcard = *cit;
if(pcard->current.location == LOCATION_MZONE || !pcard->is_releasable_by_summon(p, target))
continue;
if(release_list)
release_list->insert(pcard);
if(pcard->is_affected_by_effect(EFFECT_DOUBLE_TRIBUTE, target))
pcard->release_param = 2;
else
pcard->release_param = 1;
rcount += pcard->release_param;
}
return rcount + ex_sum_max;
}
int32 field::get_summon_count_limit(uint8 playerid) {
...
...
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