Commit 7ee2d3d1 authored by mercury233's avatar mercury233
parents 7fc57084 0f5061d3
......@@ -1207,11 +1207,6 @@ void field::remove_oath_effect(effect* reason_effect) {
void field::reset_phase(uint32 phase) {
for(auto eit = effects.pheff.begin(); eit != effects.pheff.end();) {
auto rm = eit++;
// work around: skip turn still raise reset_phase(PHASE_END)
// without this taking control only for one turn will be returned when skipping turn
// RESET_TURN_END should be introduced
//if((*rm)->code == EFFECT_SET_CONTROL)
// continue;
if((*rm)->reset(phase, RESET_PHASE)) {
if((*rm)->is_flag(EFFECT_FLAG_FIELD_ONLY))
remove_effect((*rm));
......
......@@ -2765,7 +2765,7 @@ int32 field::process_battle_command(uint16 step) {
}
case 21: {
if(core.attacker->is_status(STATUS_ATTACK_CANCELED)) {
core.units.begin()->step = 32;
core.units.begin()->step = 33;
return FALSE;
}
if(!core.attack_target) {
......@@ -2803,7 +2803,7 @@ int32 field::process_battle_command(uint16 step) {
}
case 23: {
if(core.attacker->is_status(STATUS_ATTACK_CANCELED)) {
core.units.begin()->step = 32;
core.units.begin()->step = 33;
return FALSE;
}
infos.phase = PHASE_DAMAGE_CAL;
......@@ -2836,7 +2836,7 @@ int32 field::process_battle_command(uint16 step) {
reset_phase(PHASE_DAMAGE_CAL);
adjust_all();
infos.phase = PHASE_DAMAGE;
core.units.begin()->step = 32;
core.units.begin()->step = 33;
return FALSE;
}
return FALSE;
......@@ -2931,8 +2931,6 @@ int32 field::process_battle_command(uint16 step) {
process_instant_event();
//this timing does not exist in Master Rule 3
core.damage_calculated = TRUE;
if(core.effect_damage_step)
return TRUE;
return FALSE;
}
case 27: {
......@@ -3055,6 +3053,12 @@ int32 field::process_battle_command(uint16 step) {
raise_event((card*)0, EVENT_BATTLED, 0, 0, PLAYER_NONE, 0, 0);
process_single_event();
process_instant_event();
if(core.effect_damage_step)
return TRUE;
core.units.begin()->step = 32;
}
// fall through
case 32: {
pduel->write_buffer8(MSG_HINT);
pduel->write_buffer8(HINT_EVENT);
pduel->write_buffer8(0);
......@@ -3066,7 +3070,7 @@ int32 field::process_battle_command(uint16 step) {
add_process(PROCESSOR_POINT_EVENT, 0, 0, 0, 0, TRUE);
return FALSE;
}
case 32: {
case 33: {
group* des = core.units.begin()->ptarget;
if(des) {
for(auto cit = des->container.begin(); cit != des->container.end();) {
......@@ -3079,7 +3083,7 @@ int32 field::process_battle_command(uint16 step) {
adjust_all();
return FALSE;
}
case 33: {
case 34: {
core.units.begin()->ptarget = 0;
core.damage_calculated = TRUE;
core.selfdes_disabled = FALSE;
......@@ -3235,7 +3239,7 @@ int32 field::process_damage_step(uint16 step, uint32 new_attack) {
}
case 2: {
core.effect_damage_step = 2;
add_process(PROCESSOR_BATTLE_COMMAND, 27, 0, 0, 0, 0);
add_process(PROCESSOR_BATTLE_COMMAND, 32, 0, 0, 0, 0);
return FALSE;
}
case 3: {
......@@ -3489,6 +3493,8 @@ int32 field::process_turn(uint16 step, uint8 turn_player) {
tag_swap(turn_player);
if(is_player_affected_by_effect(infos.turn_player, EFFECT_SKIP_TURN)) {
core.units.begin()->step = 17;
reset_phase(PHASE_DRAW);
reset_phase(PHASE_STANDBY);
reset_phase(PHASE_END);
adjust_all();
return FALSE;
......
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