Commit a0cf1785 authored by Fluorohydride's avatar Fluorohydride

fix

parent 4dfc0d2e
......@@ -1272,7 +1272,7 @@ void field::ritual_release(card_set* material) {
release(&rel, core.reason_effect, REASON_RITUAL + REASON_EFFECT + REASON_MATERIAL, core.reason_player);
send_to(&rem, core.reason_effect, REASON_RITUAL + REASON_EFFECT + REASON_MATERIAL, core.reason_player, PLAYER_NONE, LOCATION_REMOVED, 0, POS_FACEUP);
}
void field::get_xyz_material(card* scard, int32 findex) {
void field::get_xyz_material(card* scard, int32 findex, int32 maxc) {
card* pcard = 0;
int32 playerid = scard->current.controler;
core.xmaterial_lst.clear();
......@@ -1298,9 +1298,9 @@ void field::get_xyz_material(card* scard, int32 findex) {
} else
core.xmaterial_lst.insert(std::make_pair(0, pcard));
}
auto iter = core.xmaterial_lst.rbegin();
while((iter != core.xmaterial_lst.rend()) && (iter->first > core.xmaterial_lst.size()))
core.xmaterial_lst.erase((iter++).base());
auto iter = core.xmaterial_lst.begin();
while((iter != core.xmaterial_lst.end()) && ((iter->first > core.xmaterial_lst.size()) || (iter->first > maxc)))
core.xmaterial_lst.erase(iter++);
} else {
for(auto pcard : cv)
core.xmaterial_lst.insert(std::make_pair(0, pcard));
......@@ -1690,12 +1690,12 @@ int32 field::check_xyz_material(card* scard, int32 findex, int32 min, int32 max,
} else
core.xmaterial_lst.insert(std::make_pair(0, pcard));
}
auto iter = core.xmaterial_lst.rbegin();
while((iter != core.xmaterial_lst.rend()) && (iter->first > core.xmaterial_lst.size()))
core.xmaterial_lst.erase((iter++).base());
auto iter = core.xmaterial_lst.begin();
while((iter != core.xmaterial_lst.end()) && ((iter->first > core.xmaterial_lst.size()) || (iter->first > max)))
core.xmaterial_lst.erase(iter++);
}
} else {
pduel->game_field->get_xyz_material(scard, findex);
pduel->game_field->get_xyz_material(scard, findex, max);
}
return core.xmaterial_lst.size() >= min;
}
......
......@@ -212,7 +212,7 @@ struct processor {
std::unordered_map<card*, uint32> readjust_map;
std::unordered_set<card*> unique_cards[2];
std::unordered_map<uint32, uint32> effect_count_code;
std::multimap<int32, card*> xmaterial_lst;
std::multimap<int32, card*,std::greater<int32> > xmaterial_lst;
ptr temp_var[4];
uint32 global_flag;
uint16 pre_field[2];
......@@ -340,7 +340,7 @@ public:
int32 get_draw_count(uint8 playerid);
void get_ritual_material(uint8 playerid, effect* peffect, card_set* material);
void ritual_release(card_set* material);
void get_xyz_material(card* scard, int32 findex);
void get_xyz_material(card* scard, int32 findex, int32 maxc);
void get_overlay_group(uint8 self, uint8 s, uint8 o, card_set* pset);
int32 get_overlay_count(uint8 self, uint8 s, uint8 o);
void update_disable_check_list(effect* peffect);
......
......@@ -2428,7 +2428,7 @@ int32 scriptlib::duel_select_xyz_material(lua_State *L) {
uint32 maxc = lua_tointeger(L, 5);
field::card_set mat, cset;
duel* pduel = scard->pduel;
pduel->game_field->get_xyz_material(scard, 3);
pduel->game_field->get_xyz_material(scard, 3, maxc);
scard->pduel->game_field->add_process(PROCESSOR_SELECT_XMATERIAL, 0, 0, (group*)scard, playerid, minc + (maxc << 16));
return lua_yield(L, 0);
}
......
......@@ -3965,7 +3965,7 @@ int32 field::select_xyz_material(int16 step, uint8 playerid, card* scard, int32
case 0: {
int maxv = 0;
if(core.xmaterial_lst.size())
maxv = core.xmaterial_lst.rbegin()->first;
maxv = core.xmaterial_lst.begin()->first;
if(min >= maxv) {
core.select_cards.clear();
for(auto iter : core.xmaterial_lst)
......@@ -4039,7 +4039,7 @@ int32 field::select_xyz_material(int16 step, uint8 playerid, card* scard, int32
core.select_cards.clear();
for(auto iter : core.xmaterial_lst)
core.select_cards.push_back(iter.second);
int maxv = core.xmaterial_lst.rbegin()->first;
int maxv = core.xmaterial_lst.begin()->first;
pduel->write_buffer8(MSG_HINT);
pduel->write_buffer8(HINT_SELECTMSG);
pduel->write_buffer8(playerid);
......
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