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
e78e83af
Commit
e78e83af
authored
Nov 07, 2019
by
nekrozar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix material group
https://github.com/Fluorohydride/ygopro-scripts/pull/1238#issuecomment-550588397
parent
38c90a15
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
14 additions
and
6 deletions
+14
-6
card.cpp
card.cpp
+14
-6
No files found.
card.cpp
View file @
e78e83af
...
@@ -2788,22 +2788,26 @@ effect* card::check_control_effect() {
...
@@ -2788,22 +2788,26 @@ effect* card::check_control_effect() {
return ret_effect;
return ret_effect;
}
}
int32 card::fusion_check(group* fusion_m, card* cg, uint32 chkf, uint8 not_material) {
int32 card::fusion_check(group* fusion_m, card* cg, uint32 chkf, uint8 not_material) {
group* matgroup = 0;
if(fusion_m && !not_material) {
if(fusion_m && !not_material) {
matgroup = pduel->new_group(fusion_m->container);
uint32 summon_type = SUMMON_TYPE_FUSION;
uint32 summon_type = SUMMON_TYPE_FUSION;
if((chkf & 0x200) > 0)
if((chkf & 0x200) > 0)
summon_type = SUMMON_TYPE_SPECIAL;
summon_type = SUMMON_TYPE_SPECIAL;
effect_set eset;
effect_set eset;
filter_effect(EFFECT_MATERIAL_LIMIT, &eset);
filter_effect(EFFECT_MATERIAL_LIMIT, &eset);
for
(
auto
cit
=
fusion_m
->
container
.
begin
();
cit
!=
fusion_m
->
container
.
end
();)
{
for(auto cit =
matgroup->container.begin(); cit != matgroup
->container.end();) {
card* pcard = *cit++;
card* pcard = *cit++;
for(int32 i = 0; i < eset.size(); ++i) {
for(int32 i = 0; i < eset.size(); ++i) {
pduel->lua->add_param(pcard, PARAM_TYPE_CARD);
pduel->lua->add_param(pcard, PARAM_TYPE_CARD);
pduel->lua->add_param(this, PARAM_TYPE_CARD);
pduel->lua->add_param(this, PARAM_TYPE_CARD);
pduel->lua->add_param(summon_type, PARAM_TYPE_INT);
pduel->lua->add_param(summon_type, PARAM_TYPE_INT);
if(!eset[i]->check_value_condition(3))
if(!eset[i]->check_value_condition(3))
fusion_m
->
container
.
erase
(
pcard
);
matgroup
->container.erase(pcard);
}
}
}
}
} else if(fusion_m) {
matgroup = pduel->new_group(fusion_m->container);
}
}
auto ecit = single_effect.find(EFFECT_FUSION_MATERIAL);
auto ecit = single_effect.find(EFFECT_FUSION_MATERIAL);
if(ecit == single_effect.end())
if(ecit == single_effect.end())
...
@@ -2812,7 +2816,7 @@ int32 card::fusion_check(group* fusion_m, card* cg, uint32 chkf, uint8 not_mater
...
@@ -2812,7 +2816,7 @@ int32 card::fusion_check(group* fusion_m, card* cg, uint32 chkf, uint8 not_mater
if(!peffect->condition)
if(!peffect->condition)
return FALSE;
return FALSE;
pduel->lua->add_param(peffect, PARAM_TYPE_EFFECT);
pduel->lua->add_param(peffect, PARAM_TYPE_EFFECT);
pduel
->
lua
->
add_param
(
fusion_m
,
PARAM_TYPE_GROUP
);
pduel->lua->add_param(
matgroup
, PARAM_TYPE_GROUP);
pduel->lua->add_param(cg, PARAM_TYPE_CARD);
pduel->lua->add_param(cg, PARAM_TYPE_CARD);
pduel->lua->add_param(chkf, PARAM_TYPE_INT);
pduel->lua->add_param(chkf, PARAM_TYPE_INT);
effect* oreason = pduel->game_field->core.reason_effect;
effect* oreason = pduel->game_field->core.reason_effect;
...
@@ -2827,28 +2831,32 @@ int32 card::fusion_check(group* fusion_m, card* cg, uint32 chkf, uint8 not_mater
...
@@ -2827,28 +2831,32 @@ int32 card::fusion_check(group* fusion_m, card* cg, uint32 chkf, uint8 not_mater
return res;
return res;
}
}
void card::fusion_select(uint8 playerid, group* fusion_m, card* cg, uint32 chkf, uint8 not_material) {
void card::fusion_select(uint8 playerid, group* fusion_m, card* cg, uint32 chkf, uint8 not_material) {
group* matgroup = 0;
if(fusion_m && !not_material) {
if(fusion_m && !not_material) {
matgroup = pduel->new_group(fusion_m->container);
uint32 summon_type = SUMMON_TYPE_FUSION;
uint32 summon_type = SUMMON_TYPE_FUSION;
if((chkf & 0x200) > 0)
if((chkf & 0x200) > 0)
summon_type = SUMMON_TYPE_SPECIAL;
summon_type = SUMMON_TYPE_SPECIAL;
effect_set eset;
effect_set eset;
filter_effect(EFFECT_MATERIAL_LIMIT, &eset);
filter_effect(EFFECT_MATERIAL_LIMIT, &eset);
for
(
auto
cit
=
fusion_m
->
container
.
begin
();
cit
!=
fusion_m
->
container
.
end
();)
{
for(auto cit =
matgroup->container.begin(); cit != matgroup
->container.end();) {
card* pcard = *cit++;
card* pcard = *cit++;
for(int32 i = 0; i < eset.size(); ++i) {
for(int32 i = 0; i < eset.size(); ++i) {
pduel->lua->add_param(pcard, PARAM_TYPE_CARD);
pduel->lua->add_param(pcard, PARAM_TYPE_CARD);
pduel->lua->add_param(this, PARAM_TYPE_CARD);
pduel->lua->add_param(this, PARAM_TYPE_CARD);
pduel->lua->add_param(summon_type, PARAM_TYPE_INT);
pduel->lua->add_param(summon_type, PARAM_TYPE_INT);
if(!eset[i]->check_value_condition(3))
if(!eset[i]->check_value_condition(3))
fusion_m
->
container
.
erase
(
pcard
);
matgroup
->container.erase(pcard);
}
}
}
}
} else if(fusion_m) {
matgroup = pduel->new_group(fusion_m->container);
}
}
effect* peffect = 0;
effect* peffect = 0;
auto ecit = single_effect.find(EFFECT_FUSION_MATERIAL);
auto ecit = single_effect.find(EFFECT_FUSION_MATERIAL);
if(ecit != single_effect.end())
if(ecit != single_effect.end())
peffect = ecit->second;
peffect = ecit->second;
pduel
->
game_field
->
add_process
(
PROCESSOR_SELECT_FUSION
,
0
,
peffect
,
fusion_m
,
playerid
+
(
chkf
<<
16
),
not_material
,
0
,
0
,
cg
);
pduel->game_field->add_process(PROCESSOR_SELECT_FUSION, 0, peffect,
matgroup
, playerid + (chkf << 16), not_material, 0, 0, cg);
}
}
int32 card::check_fusion_substitute(card* fcard) {
int32 card::check_fusion_substitute(card* fcard) {
effect_set eset;
effect_set eset;
...
...
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