Commit 3a72e9ce authored by mercury233's avatar mercury233

fix get material

parent c8a18d35
......@@ -1931,13 +1931,13 @@ void field::get_fusion_material(uint8 playerid, card_set* material_all, card_set
}
if(location & LOCATION_SZONE) {
for(auto& pcard : player[playerid].list_szone) {
if(pcard && pcard->data.type & TYPE_MONSTER)
if(pcard && pcard->data.type & TYPE_MONSTER && !pcard->is_treated_as_not_on_field())
material_base->insert(pcard);
}
}
if(location & LOCATION_PZONE) {
for(auto& pcard : player[playerid].list_szone) {
if(pcard && pcard->current.pzone && pcard->data.type & TYPE_MONSTER)
if(pcard && pcard->current.pzone && pcard->data.type & TYPE_MONSTER && !pcard->is_treated_as_not_on_field())
material_base->insert(pcard);
}
}
......@@ -1979,12 +1979,14 @@ void field::get_xyz_material(card* scard, int32 findex, uint32 lv, int32 maxc, g
} else {
int32 playerid = scard->current.controler;
for(auto& pcard : player[playerid].list_mzone) {
if(pcard && pcard->is_position(POS_FACEUP) && pcard->is_can_be_xyz_material(scard) && (xyz_level = pcard->check_xyz_level(scard, lv))
if(pcard && pcard->is_position(POS_FACEUP) && !pcard->is_treated_as_not_on_field()
&& pcard->is_can_be_xyz_material(scard) && (xyz_level = pcard->check_xyz_level(scard, lv))
&& (findex == 0 || pduel->lua->check_matching(pcard, findex, 0)))
core.xmaterial_lst.emplace((xyz_level >> 12) & 0xf, pcard);
}
for(auto& pcard : player[1 - playerid].list_mzone) {
if(pcard && pcard->is_position(POS_FACEUP) && pcard->is_can_be_xyz_material(scard) && (xyz_level = pcard->check_xyz_level(scard, lv))
if(pcard && pcard->is_position(POS_FACEUP) && !pcard->is_treated_as_not_on_field()
&& pcard->is_can_be_xyz_material(scard) && (xyz_level = pcard->check_xyz_level(scard, lv))
&& pcard->is_affected_by_effect(EFFECT_XYZ_MATERIAL) && (findex == 0 || pduel->lua->check_matching(pcard, findex, 0)))
core.xmaterial_lst.emplace((xyz_level >> 12) & 0xf, pcard);
}
......@@ -2533,7 +2535,7 @@ void field::get_synchro_material(uint8 playerid, card_set* material, effect* ptu
int32 location = ptuner->value;
if(location & LOCATION_MZONE) {
for(auto& pcard : player[playerid].list_mzone) {
if(pcard)
if(pcard && !pcard->is_treated_as_not_on_field())
material->insert(pcard);
}
}
......@@ -2545,11 +2547,11 @@ void field::get_synchro_material(uint8 playerid, card_set* material, effect* ptu
}
} else {
for(auto& pcard : player[playerid].list_mzone) {
if(pcard)
if(pcard && !pcard->is_treated_as_not_on_field())
material->insert(pcard);
}
for(auto& pcard : player[1 - playerid].list_mzone) {
if(pcard && pcard->is_affected_by_effect(EFFECT_EXTRA_SYNCHRO_MATERIAL))
if(pcard && pcard->is_affected_by_effect(EFFECT_EXTRA_SYNCHRO_MATERIAL) && !pcard->is_treated_as_not_on_field())
material->insert(pcard);
}
for(auto& pcard : player[playerid].list_hand) {
......
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