Commit 3143e6d7 authored by VanillaSalt's avatar VanillaSalt

fix

parent d065a888
...@@ -931,13 +931,13 @@ int32 field::get_control(uint16 step, effect* reason_effect, uint8 reason_player ...@@ -931,13 +931,13 @@ int32 field::get_control(uint16 step, effect* reason_effect, uint8 reason_player
int32 field::swap_control(uint16 step, effect* reason_effect, uint8 reason_player, group* targets1, group* targets2, uint16 reset_phase, uint8 reset_count) { int32 field::swap_control(uint16 step, effect* reason_effect, uint8 reason_player, group* targets1, group* targets2, uint16 reset_phase, uint8 reset_count) {
switch(step) { switch(step) {
case 0: { case 0: {
returns.ivalue[0] = 0; core.units.begin()->step = 9;
if(targets1->container.size() == 0) if(targets1->container.size() == 0)
return TRUE; return FALSE;
if(targets2->container.size() == 0) if(targets2->container.size() == 0)
return TRUE; return FALSE;
if(targets1->container.size() != targets2->container.size()) if(targets1->container.size() != targets2->container.size())
return TRUE; return FALSE;
for(auto cit = targets1->container.begin(); cit != targets1->container.end(); ++cit) for(auto cit = targets1->container.begin(); cit != targets1->container.end(); ++cit)
(*cit)->filter_disable_related_cards(); (*cit)->filter_disable_related_cards();
for(auto cit = targets2->container.begin(); cit != targets2->container.end(); ++cit) for(auto cit = targets2->container.begin(); cit != targets2->container.end(); ++cit)
...@@ -946,32 +946,32 @@ int32 field::swap_control(uint16 step, effect* reason_effect, uint8 reason_playe ...@@ -946,32 +946,32 @@ int32 field::swap_control(uint16 step, effect* reason_effect, uint8 reason_playe
auto cit2 = targets2->container.begin(); auto cit2 = targets2->container.begin();
uint8 p1 = (*cit1)->current.controler, p2 = (*cit2)->current.controler; uint8 p1 = (*cit1)->current.controler, p2 = (*cit2)->current.controler;
if(p1 == p2 || p1 == PLAYER_NONE || p2 == PLAYER_NONE) if(p1 == p2 || p1 == PLAYER_NONE || p2 == PLAYER_NONE)
return TRUE; return FALSE;
for(auto cit = targets1->container.begin(); cit != targets1->container.end(); ++cit) { for(auto cit = targets1->container.begin(); cit != targets1->container.end(); ++cit) {
card* pcard = *cit; card* pcard = *cit;
if(pcard->overlay_target) if(pcard->overlay_target)
return TRUE; return FALSE;
if(pcard->current.controler != p1) if(pcard->current.controler != p1)
return TRUE; return FALSE;
if(pcard->current.location != LOCATION_MZONE) if(pcard->current.location != LOCATION_MZONE)
return TRUE; return FALSE;
if(!pcard->is_capable_change_control()) if(!pcard->is_capable_change_control())
return TRUE; return FALSE;
if(!pcard->is_affect_by_effect(reason_effect)) if(!pcard->is_affect_by_effect(reason_effect))
return TRUE; return FALSE;
} }
for(auto cit = targets2->container.begin(); cit != targets2->container.end(); ++cit) { for(auto cit = targets2->container.begin(); cit != targets2->container.end(); ++cit) {
card* pcard = *cit; card* pcard = *cit;
if(pcard->overlay_target) if(pcard->overlay_target)
return TRUE; return FALSE;
if(pcard->current.controler != p2) if(pcard->current.controler != p2)
return TRUE; return FALSE;
if(pcard->current.location != LOCATION_MZONE) if(pcard->current.location != LOCATION_MZONE)
return TRUE; return FALSE;
if(!pcard->is_capable_change_control()) if(!pcard->is_capable_change_control())
return TRUE; return FALSE;
if(!pcard->is_affect_by_effect(reason_effect)) if(!pcard->is_affect_by_effect(reason_effect))
return TRUE; return FALSE;
} }
for(auto cit = targets1->container.begin(); cit != targets1->container.end(); ++cit) { for(auto cit = targets1->container.begin(); cit != targets1->container.end(); ++cit) {
card* pcard = *cit; card* pcard = *cit;
...@@ -1004,6 +1004,7 @@ int32 field::swap_control(uint16 step, effect* reason_effect, uint8 reason_playe ...@@ -1004,6 +1004,7 @@ int32 field::swap_control(uint16 step, effect* reason_effect, uint8 reason_playe
pduel->write_buffer32(pcard2->data.code); pduel->write_buffer32(pcard2->data.code);
pduel->write_buffer32(pcard1->get_info_location()); pduel->write_buffer32(pcard1->get_info_location());
} }
core.units.begin()->step = 0;
return FALSE; return FALSE;
} }
case 1: { case 1: {
...@@ -1015,8 +1016,7 @@ int32 field::swap_control(uint16 step, effect* reason_effect, uint8 reason_playe ...@@ -1015,8 +1016,7 @@ int32 field::swap_control(uint16 step, effect* reason_effect, uint8 reason_playe
add_unique_card(pcard); add_unique_card(pcard);
raise_single_event(pcard, 0, EVENT_CONTROL_CHANGED, reason_effect, REASON_EFFECT, reason_player, pcard->current.controler, 0); raise_single_event(pcard, 0, EVENT_CONTROL_CHANGED, reason_effect, REASON_EFFECT, reason_player, pcard->current.controler, 0);
} }
if(targets1->container.size()) raise_event(&targets1->container, EVENT_CONTROL_CHANGED, reason_effect, REASON_EFFECT, reason_player, 0, 0);
raise_event(&targets1->container, EVENT_CONTROL_CHANGED, reason_effect, REASON_EFFECT, reason_player, 0, 0);
process_single_event(); process_single_event();
process_instant_event(); process_instant_event();
return FALSE; return FALSE;
...@@ -1028,6 +1028,13 @@ int32 field::swap_control(uint16 step, effect* reason_effect, uint8 reason_playe ...@@ -1028,6 +1028,13 @@ int32 field::swap_control(uint16 step, effect* reason_effect, uint8 reason_playe
pduel->delete_group(targets2); pduel->delete_group(targets2);
return TRUE; return TRUE;
} }
case 10: {
core.operated_set.clear();
returns.ivalue[0] = 0;
pduel->delete_group(targets1);
pduel->delete_group(targets2);
return TRUE;
}
} }
return TRUE; return TRUE;
} }
......
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