Skip to content

Commit

Permalink
refactor & add EFFECT_ALLOW_FOR_RITUAL as well
Browse files Browse the repository at this point in the history
  • Loading branch information
purerosefallen committed Feb 14, 2025
1 parent 97ebcf8 commit ae14518
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 28 deletions.
47 changes: 19 additions & 28 deletions card.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1017,38 +1017,29 @@ uint32_t card::get_link() {
return 0;
return data.level;
}
uint32_t card::get_synchro_level(card* pcard) {
if((data.type & (TYPE_XYZ | TYPE_LINK)) || (status & STATUS_NO_LEVEL)) {
effect_set eset;
filter_effect(EFFECT_ALLOW_FOR_SYNCHRO, &eset);
for(int32_t i = 0; i < eset.size(); ++i) {
uint32_t lev = eset[i]->get_value(pcard);
if(lev) {
return lev;
}
}

uint32_t get_mat_level_from_effect(card* pcard, uint32_t effect_code) {
if(!effect_code)
return 0;
}
uint32_t lev;
effect_set eset;
filter_effect(EFFECT_SYNCHRO_LEVEL, &eset);
if(eset.size())
lev = eset[0]->get_value(pcard);
else
lev = get_level();
return lev;
pduel->game_field->filter_effect(effect_code, &eset);
for(int32_t i = 0; i < eset.size(); ++i) {
uint32_t lev = eset[i]->get_value(pcard);
if(lev)
return lev;
}
return 0;
}
uint32_t card::get_ritual_level(card* pcard) {
uint32_t card::get_mat_level(card* pcard, uint32_t level_effect_code, uint32_t allow_effect_code) {
if((data.type & (TYPE_XYZ | TYPE_LINK)) || (status & STATUS_NO_LEVEL))
return 0;
uint32_t lev;
effect_set eset;
filter_effect(EFFECT_RITUAL_LEVEL, &eset);
if(eset.size())
lev = eset[0]->get_value(pcard);
else
lev = get_level();
return lev;
return get_mat_level_from_effect(pcard, allow_effect_code);
return get_mat_level_from_effect(pcard, level_effect_code) || get_level();
}
uint32_t card::get_synchro_level(card* pcard) {
return get_mat_level(pcard, EFFECT_SYNCHRO_LEVEL, EFFECT_ALLOW_FOR_SYNCHRO);
}
uint32_t card::get_ritual_level(card* pcard) {
return get_mat_level(pcard, EFFECT_RITUAL_LEVEL, EFFECT_ALLOW_FOR_RITUAL);
}
uint32_t card::check_xyz_level(card* pcard, uint32_t lv) {
if(status & STATUS_NO_LEVEL)
Expand Down
2 changes: 2 additions & 0 deletions card.h
Original file line number Diff line number Diff line change
Expand Up @@ -243,6 +243,8 @@ class card {
uint32_t get_level();
uint32_t get_rank();
uint32_t get_link();
uint32_t get_mat_level_from_effect(card* pcard, uint32_t effect_code);
uint32_t get_mat_level(card* pcard, uint32_t level_effect_code, uint32_t allow_effect_code = 0);
uint32_t get_synchro_level(card* pcard);
uint32_t get_ritual_level(card* pcard);
uint32_t check_xyz_level(card* pcard, uint32_t lv);
Expand Down
1 change: 1 addition & 0 deletions effect.h
Original file line number Diff line number Diff line change
Expand Up @@ -531,6 +531,7 @@ const std::map<uint64_t, uint64_t> category_checklist{
#define EFFECT_REPLACE_DAMAGE 371
#define EFFECT_XYZ_MIN_COUNT 372
#define EFFECT_ALLOW_FOR_SYNCHRO 373
#define EFFECT_ALLOW_FOR_RITUAL 374

//#define EVENT_STARTUP 1000
#define EVENT_FLIP 1001
Expand Down

0 comments on commit ae14518

Please sign in to comment.