Commit 4fcbb8cb authored by mercury233's avatar mercury233
parents c74eab31 ead52a92
...@@ -1380,6 +1380,12 @@ int32 card::is_extra_link_state() { ...@@ -1380,6 +1380,12 @@ int32 card::is_extra_link_state() {
card* pcard2 = pduel->game_field->player[p].list_mzone[6]; card* pcard2 = pduel->game_field->player[p].list_mzone[6];
if(pcard2) if(pcard2)
excset.insert(pcard2); excset.insert(pcard2);
card* pcard3 = pduel->game_field->player[1 - p].list_mzone[5];
if(pcard3)
excset.insert(pcard3);
card* pcard4 = pduel->game_field->player[1 - p].list_mzone[6];
if(pcard4)
excset.insert(pcard4);
} }
if(excset.size() < 2) if(excset.size() < 2)
return FALSE; return FALSE;
...@@ -1398,7 +1404,7 @@ int32 card::check_extra_link(card_set* cset, card_set* excset, card_set* linked_ ...@@ -1398,7 +1404,7 @@ int32 card::check_extra_link(card_set* cset, card_set* excset, card_set* linked_
card* pcard = *cit; card* pcard = *cit;
if(cset->find(pcard) != cset->end()) if(cset->find(pcard) != cset->end())
continue; continue;
if(excset->find(pcard) != cset->end()) if(excset->find(pcard) != excset->end())
if(cset->find(this) != cset->end()) if(cset->find(this) != cset->end())
return TRUE; return TRUE;
card_set linked_group2; card_set linked_group2;
......
...@@ -2911,10 +2911,10 @@ int32 field::special_summon_step(uint16 step, group* targets, card* target, uint ...@@ -2911,10 +2911,10 @@ int32 field::special_summon_step(uint16 step, group* targets, card* target, uint
} }
if(target->current.location != LOCATION_EXTRA) { if(target->current.location != LOCATION_EXTRA) {
if(ct2 == 0) if(ct2 == 0)
zone = flag2; zone &= flag2;
} else { } else {
if(ct1 == 0) if(ct1 == 0)
zone = flag1; zone &= flag1;
} }
} }
move_to_field(target, move_player, playerid, LOCATION_MZONE, positions, FALSE, 0, FALSE, zone); move_to_field(target, move_player, playerid, LOCATION_MZONE, positions, FALSE, 0, FALSE, zone);
......
...@@ -1010,23 +1010,27 @@ int32 field::announce_card(int16 step, uint8 playerid, uint32 ttype) { ...@@ -1010,23 +1010,27 @@ int32 field::announce_card(int16 step, uint8 playerid, uint32 ttype) {
return FALSE; return FALSE;
} else { } else {
int32 code = returns.ivalue[0]; int32 code = returns.ivalue[0];
bool retry = false;
card_data data; card_data data;
read_card(code, &data); read_card(code, &data);
if(!data.code) { if(!data.code) {
pduel->write_buffer8(MSG_RETRY); retry = true;
return FALSE; } else if(core.select_options.size() == 0) {
}
if(core.select_options.size() == 0) {
if(!(data.type & ttype)) { if(!(data.type & ttype)) {
pduel->write_buffer8(MSG_RETRY); retry = true;
return FALSE;
} }
} else { } else {
if(!is_declarable(data, core.select_options)) { if(!is_declarable(data, core.select_options)) {
pduel->write_buffer8(MSG_RETRY); retry = true;
return FALSE;
} }
} }
if(retry) {
pduel->write_buffer8(MSG_HINT);
pduel->write_buffer8(HINT_MESSAGE);
pduel->write_buffer8(playerid);
pduel->write_buffer32(1421);
return announce_card(0, playerid, ttype);
}
pduel->write_buffer8(MSG_HINT); pduel->write_buffer8(MSG_HINT);
pduel->write_buffer8(HINT_CODE); pduel->write_buffer8(HINT_CODE);
pduel->write_buffer8(playerid); pduel->write_buffer8(playerid);
......
...@@ -601,7 +601,8 @@ int32 field::process() { ...@@ -601,7 +601,8 @@ int32 field::process() {
pduel->lua->add_param(returns.ivalue[0], PARAM_TYPE_INT); pduel->lua->add_param(returns.ivalue[0], PARAM_TYPE_INT);
core.units.pop_front(); core.units.pop_front();
} else { } else {
it->step++; if(it->step == 0)
it->step++;
} }
return PROCESSOR_WAITING + pduel->bufferlen; return PROCESSOR_WAITING + pduel->bufferlen;
} }
......
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