Commit 99e40cab authored by VanillaSalt's avatar VanillaSalt

fix

parent dda128da
...@@ -1896,9 +1896,10 @@ int32 field::check_xyz_material(card* scard, int32 findex, int32 lv, int32 min, ...@@ -1896,9 +1896,10 @@ int32 field::check_xyz_material(card* scard, int32 findex, int32 lv, int32 min,
core.xmaterial_lst.insert(std::make_pair((xyz_level >> 12) & 0xf, *cit)); core.xmaterial_lst.insert(std::make_pair((xyz_level >> 12) & 0xf, *cit));
} }
if(core.global_flag & GLOBALFLAG_XMAT_COUNT_LIMIT) { if(core.global_flag & GLOBALFLAG_XMAT_COUNT_LIMIT) {
auto iter = core.xmaterial_lst.begin(); if(max > (int32)core.xmaterial_lst.size())
while((iter != core.xmaterial_lst.end()) && ((iter->first > (int32)core.xmaterial_lst.size()) || (iter->first > max))) max = (int32)core.xmaterial_lst.size();
core.xmaterial_lst.erase(iter++); auto iter = core.xmaterial_lst.lower_bound(max);
core.xmaterial_lst.erase(core.xmaterial_lst.begin(), iter);
} }
} else } else
get_xyz_material(scard, findex, lv, max); get_xyz_material(scard, findex, lv, max);
......
...@@ -1095,7 +1095,7 @@ int32 field::equip(uint16 step, uint8 equip_player, card * equip_card, card * ta ...@@ -1095,7 +1095,7 @@ int32 field::equip(uint16 step, uint8 equip_player, card * equip_card, card * ta
else else
peffect->value = TYPE_EQUIP + TYPE_SPELL; peffect->value = TYPE_EQUIP + TYPE_SPELL;
peffect->flag = EFFECT_FLAG_CANNOT_DISABLE; peffect->flag = EFFECT_FLAG_CANNOT_DISABLE;
peffect->reset_flag = RESET_EVENT + 0x1fe0000; peffect->reset_flag = RESET_EVENT + 0x17e0000;
equip_card->add_effect(peffect); equip_card->add_effect(peffect);
} }
equip_card->effect_target_cards.insert(target); equip_card->effect_target_cards.insert(target);
...@@ -1204,9 +1204,10 @@ int32 field::summon(uint16 step, uint8 sumplayer, card * target, effect * proc, ...@@ -1204,9 +1204,10 @@ int32 field::summon(uint16 step, uint8 sumplayer, card * target, effect * proc,
int32 required = target->get_summon_tribute_count(); int32 required = target->get_summon_tribute_count();
int32 min = required & 0xffff; int32 min = required & 0xffff;
int32 max = required >> 16; int32 max = required >> 16;
if(min < min_tribute) if(min < min_tribute) {
min = min_tribute; min = min_tribute;
required = min + (max << 16); required = min + (max << 16);
}
uint32 adv = is_player_can_summon(SUMMON_TYPE_ADVANCE, sumplayer, target); uint32 adv = is_player_can_summon(SUMMON_TYPE_ADVANCE, sumplayer, target);
if(max == 0 || !adv) { if(max == 0 || !adv) {
returns.bvalue[0] = 0; returns.bvalue[0] = 0;
...@@ -1714,9 +1715,10 @@ int32 field::mset(uint16 step, uint8 setplayer, card * target, effect * proc, ui ...@@ -1714,9 +1715,10 @@ int32 field::mset(uint16 step, uint8 setplayer, card * target, effect * proc, ui
int32 required = target->get_set_tribute_count(); int32 required = target->get_set_tribute_count();
int32 min = required & 0xffff; int32 min = required & 0xffff;
int32 max = required >> 16; int32 max = required >> 16;
if(min < min_tribute) if(min < min_tribute) {
min = min_tribute; min = min_tribute;
required = min + (max << 16); required = min + (max << 16);
}
uint32 adv = is_player_can_mset(SUMMON_TYPE_ADVANCE, setplayer, target); uint32 adv = is_player_can_mset(SUMMON_TYPE_ADVANCE, setplayer, target);
if(max == 0 || !adv) { if(max == 0 || !adv) {
returns.bvalue[0] = 0; returns.bvalue[0] = 0;
......
...@@ -254,17 +254,7 @@ int32 field::select_card(uint16 step, uint8 playerid, uint8 cancelable, uint8 mi ...@@ -254,17 +254,7 @@ int32 field::select_card(uint16 step, uint8 playerid, uint8 cancelable, uint8 mi
for(uint32 i = 0; i < core.select_cards.size(); ++i) { for(uint32 i = 0; i < core.select_cards.size(); ++i) {
pcard = core.select_cards[i]; pcard = core.select_cards[i];
pduel->write_buffer32(pcard->data.code); pduel->write_buffer32(pcard->data.code);
if(pcard->overlay_target) { pduel->write_buffer32(pcard->get_info_location());
pduel->write_buffer8(pcard->overlay_target->current.controler);
pduel->write_buffer8(pcard->overlay_target->current.location | LOCATION_OVERLAY);
pduel->write_buffer8(pcard->overlay_target->current.sequence);
pduel->write_buffer8(pcard->current.sequence);
} else {
pduel->write_buffer8(pcard->current.controler);
pduel->write_buffer8(pcard->current.location);
pduel->write_buffer8(pcard->current.sequence);
pduel->write_buffer8(pcard->current.position);
}
} }
return FALSE; return FALSE;
} else { } else {
......
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