Commit d3e74f18 authored by wind2009's avatar wind2009

Merge remote-tracking branch 'upstream/master' into develop

parents c4a348ec 567165e5
...@@ -72,11 +72,11 @@ extern "C" DECL_DLLEXPORT void start_duel(intptr_t pduel, uint32_t options) { ...@@ -72,11 +72,11 @@ extern "C" DECL_DLLEXPORT void start_duel(intptr_t pduel, uint32_t options) {
duel* pd = (duel*)pduel; duel* pd = (duel*)pduel;
pd->game_field->core.duel_options |= options & 0xffff; pd->game_field->core.duel_options |= options & 0xffff;
int32_t duel_rule = options >> 16; int32_t duel_rule = options >> 16;
if(duel_rule) if (duel_rule >= 1 && duel_rule <= CURRENT_RULE)
pd->game_field->core.duel_rule = duel_rule; pd->game_field->core.duel_rule = duel_rule;
else if(options & DUEL_OBSOLETE_RULING) //provide backward compatibility with replay else if(options & DUEL_OBSOLETE_RULING) //provide backward compatibility with replay
pd->game_field->core.duel_rule = 1; pd->game_field->core.duel_rule = 1;
if (pd->game_field->core.duel_rule < 1 || pd->game_field->core.duel_rule > CURRENT_RULE) else
pd->game_field->core.duel_rule = CURRENT_RULE; pd->game_field->core.duel_rule = CURRENT_RULE;
if (pd->game_field->core.duel_rule == MASTER_RULE3) { if (pd->game_field->core.duel_rule == MASTER_RULE3) {
pd->game_field->player[0].szone_size = 8; pd->game_field->player[0].szone_size = 8;
......
...@@ -3779,7 +3779,7 @@ int32_t field::destroy(uint16_t step, group * targets, effect * reason_effect, u ...@@ -3779,7 +3779,7 @@ int32_t field::destroy(uint16_t step, group * targets, effect * reason_effect, u
return TRUE; return TRUE;
} }
int32_t field::release_replace(uint16_t step, group* targets, card* target) { int32_t field::release_replace(uint16_t step, group* targets, card* target) {
if(!(target->current.location & (LOCATION_ONFIELD | LOCATION_HAND))) { if(target->current.location & (LOCATION_GRAVE | LOCATION_REMOVED)) {
target->current.reason = target->temp.reason; target->current.reason = target->temp.reason;
target->current.reason_effect = target->temp.reason_effect; target->current.reason_effect = target->temp.reason_effect;
target->current.reason_player = target->temp.reason_player; target->current.reason_player = target->temp.reason_player;
...@@ -3836,7 +3836,7 @@ int32_t field::release(uint16_t step, group * targets, effect * reason_effect, u ...@@ -3836,7 +3836,7 @@ int32_t field::release(uint16_t step, group * targets, effect * reason_effect, u
if(cv.size() > 1) if(cv.size() > 1)
std::sort(cv.begin(), cv.end(), card::card_operation_sort); std::sort(cv.begin(), cv.end(), card::card_operation_sort);
for (auto& pcard : cv) { for (auto& pcard : cv) {
if(!(pcard->current.location & (LOCATION_ONFIELD | LOCATION_HAND))) { if(pcard->current.location & (LOCATION_GRAVE | LOCATION_REMOVED)) {
pcard->current.reason = pcard->temp.reason; pcard->current.reason = pcard->temp.reason;
pcard->current.reason_effect = pcard->temp.reason_effect; pcard->current.reason_effect = pcard->temp.reason_effect;
pcard->current.reason_player = pcard->temp.reason_player; pcard->current.reason_player = pcard->temp.reason_player;
......
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