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() { ...@@ -1017,38 +1017,29 @@ uint32_t card::get_link() {
return 0; return 0;
return data.level; return data.level;
} }
uint32_t card::get_synchro_level(card* pcard) {
if((data.type & (TYPE_XYZ | TYPE_LINK)) || (status & STATUS_NO_LEVEL)) { uint32_t get_mat_level_from_effect(card* pcard, uint32_t effect_code) {
effect_set eset; if(!effect_code)
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;
}
}
return 0; return 0;
}
uint32_t lev;
effect_set eset; effect_set eset;
filter_effect(EFFECT_SYNCHRO_LEVEL, &eset); pduel->game_field->filter_effect(effect_code, &eset);
if(eset.size()) for(int32_t i = 0; i < eset.size(); ++i) {
lev = eset[0]->get_value(pcard); uint32_t lev = eset[i]->get_value(pcard);
else if(lev)
lev = get_level(); return 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)) if((data.type & (TYPE_XYZ | TYPE_LINK)) || (status & STATUS_NO_LEVEL))
return 0; return get_mat_level_from_effect(pcard, allow_effect_code);
uint32_t lev; return get_mat_level_from_effect(pcard, level_effect_code) || get_level();
effect_set eset; }
filter_effect(EFFECT_RITUAL_LEVEL, &eset); uint32_t card::get_synchro_level(card* pcard) {
if(eset.size()) return get_mat_level(pcard, EFFECT_SYNCHRO_LEVEL, EFFECT_ALLOW_FOR_SYNCHRO);
lev = eset[0]->get_value(pcard); }
else uint32_t card::get_ritual_level(card* pcard) {
lev = get_level(); return get_mat_level(pcard, EFFECT_RITUAL_LEVEL, EFFECT_ALLOW_FOR_RITUAL);
return lev;
} }
uint32_t card::check_xyz_level(card* pcard, uint32_t lv) { uint32_t card::check_xyz_level(card* pcard, uint32_t lv) {
if(status & STATUS_NO_LEVEL) if(status & STATUS_NO_LEVEL)
......
...@@ -243,6 +243,8 @@ public: ...@@ -243,6 +243,8 @@ public:
uint32_t get_level(); uint32_t get_level();
uint32_t get_rank(); uint32_t get_rank();
uint32_t get_link(); 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_synchro_level(card* pcard);
uint32_t get_ritual_level(card* pcard); uint32_t get_ritual_level(card* pcard);
uint32_t check_xyz_level(card* pcard, uint32_t lv); uint32_t check_xyz_level(card* pcard, uint32_t lv);
......
...@@ -531,6 +531,7 @@ const std::map<uint64_t, uint64_t> category_checklist{ ...@@ -531,6 +531,7 @@ const std::map<uint64_t, uint64_t> category_checklist{
#define EFFECT_REPLACE_DAMAGE 371 #define EFFECT_REPLACE_DAMAGE 371
#define EFFECT_XYZ_MIN_COUNT 372 #define EFFECT_XYZ_MIN_COUNT 372
#define EFFECT_ALLOW_FOR_SYNCHRO 373 #define EFFECT_ALLOW_FOR_SYNCHRO 373
#define EFFECT_ALLOW_FOR_RITUAL 374
//#define EVENT_STARTUP 1000 //#define EVENT_STARTUP 1000
#define EVENT_FLIP 1001 #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