Commit ae14518c authored by nanahira's avatar nanahira

refactor & add EFFECT_ALLOW_FOR_RITUAL as well

parent 97ebcf8a
......@@ -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)
......
......@@ -243,6 +243,8 @@ public:
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);
......
......@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment