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