Commit 987c0e45 authored by mercury233's avatar mercury233
parents db06c9ea 18ad0454
...@@ -2754,6 +2754,14 @@ int32 field::check_xyz_material(card* scard, int32 findex, int32 lv, int32 min, ...@@ -2754,6 +2754,14 @@ int32 field::check_xyz_material(card* scard, int32 findex, int32 lv, int32 min,
if(ft <= 0) if(ft <= 0)
return FALSE; return FALSE;
} }
int32 mzone_limit = get_mzone_limit(playerid, playerid, LOCATION_REASON_TOFIELD);
if(mzone_limit <= 0) {
int32 ft = -mzone_limit + 1;
if(ft > min)
min = ft;
if(min > max)
return FALSE;
}
effect_set eset; effect_set eset;
filter_player_effect(playerid, EFFECT_MUST_BE_XMATERIAL, &eset); filter_player_effect(playerid, EFFECT_MUST_BE_XMATERIAL, &eset);
card_set mcset; card_set mcset;
......
...@@ -5498,6 +5498,14 @@ int32 field::select_xyz_material(int16 step, uint8 playerid, uint32 lv, card* sc ...@@ -5498,6 +5498,14 @@ int32 field::select_xyz_material(int16 step, uint8 playerid, uint32 lv, card* sc
switch(step) { switch(step) {
case 0: { case 0: {
core.operated_set.clear(); core.operated_set.clear();
int32 mzone_limit = get_mzone_limit(playerid, playerid, LOCATION_REASON_TOFIELD);
if(mzone_limit <= 0) {
int32 ft = -mzone_limit + 1;
if(ft > min) {
min = ft;
core.units.begin()->arg2 = min + (max << 16);
}
}
effect_set eset; effect_set eset;
filter_player_effect(playerid, EFFECT_MUST_BE_XMATERIAL, &eset); filter_player_effect(playerid, EFFECT_MUST_BE_XMATERIAL, &eset);
core.select_cards.clear(); core.select_cards.clear();
...@@ -5543,7 +5551,7 @@ int32 field::select_xyz_material(int16 step, uint8 playerid, uint32 lv, card* sc ...@@ -5543,7 +5551,7 @@ int32 field::select_xyz_material(int16 step, uint8 playerid, uint32 lv, card* sc
min -= returns.bvalue[0]; min -= returns.bvalue[0];
if(min < 0) if(min < 0)
min = 0; min = 0;
if((int32)core.operated_set.size() < pv) if(pv - (int32)core.operated_set.size() > min)
min = pv - (int32)core.operated_set.size(); min = pv - (int32)core.operated_set.size();
core.units.begin()->arg2 = min + (max << 16); core.units.begin()->arg2 = min + (max << 16);
if(min == 0) { if(min == 0) {
...@@ -5707,7 +5715,7 @@ int32 field::select_xyz_material(int16 step, uint8 playerid, uint32 lv, card* sc ...@@ -5707,7 +5715,7 @@ int32 field::select_xyz_material(int16 step, uint8 playerid, uint32 lv, card* sc
} }
if(min > 0) if(min > 0)
min--; min--;
if((int32)core.operated_set.size() < pv) if(pv - (int32)core.operated_set.size() > min)
min = pv - (int32)core.operated_set.size(); min = pv - (int32)core.operated_set.size();
core.units.begin()->arg2 = min + (max << 16); core.units.begin()->arg2 = min + (max << 16);
if(min == 0) { if(min == 0) {
...@@ -5788,7 +5796,7 @@ int32 field::select_xyz_material(int16 step, uint8 playerid, uint32 lv, card* sc ...@@ -5788,7 +5796,7 @@ int32 field::select_xyz_material(int16 step, uint8 playerid, uint32 lv, card* sc
return TRUE; return TRUE;
} }
min = 0; min = 0;
if((int32)core.operated_set.size() < pv) if(pv - (int32)core.operated_set.size() > min)
min = pv - (int32)core.operated_set.size(); min = pv - (int32)core.operated_set.size();
core.units.begin()->arg2 = min + (max << 16); core.units.begin()->arg2 = min + (max << 16);
if(min == 0) { if(min == 0) {
...@@ -5895,7 +5903,7 @@ int32 field::select_xyz_material(int16 step, uint8 playerid, uint32 lv, card* sc ...@@ -5895,7 +5903,7 @@ int32 field::select_xyz_material(int16 step, uint8 playerid, uint32 lv, card* sc
} }
if(min > 0) if(min > 0)
min--; min--;
if((int32)core.operated_set.size() < pv) if(pv - (int32)core.operated_set.size() > min)
min = pv - (int32)core.operated_set.size(); min = pv - (int32)core.operated_set.size();
core.units.begin()->arg2 = min + (max << 16); core.units.begin()->arg2 = min + (max << 16);
core.units.begin()->arg3 = selectable; core.units.begin()->arg3 = selectable;
......
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