Commit e95e7507 authored by mercury233's avatar mercury233
parents 469c5ccd d516f668
......@@ -1975,12 +1975,14 @@ uint8 card::refresh_control_status() {
effect* peffect = eset.get_last();
if(peffect->id >= last_id) {
card* pcard = peffect->get_handler();
pduel->game_field->core.readjust_map[pcard]++;
if(pduel->game_field->core.readjust_map[pcard] > 3) {
uint8 val = (uint8)peffect->get_value(this);
if(val != current.controler)
pduel->game_field->core.readjust_map[pcard]++;
if(pduel->game_field->core.readjust_map[pcard] > 5) {
pduel->game_field->send_to(pcard, 0, REASON_RULE, peffect->get_handler_player(), PLAYER_NONE, LOCATION_GRAVE, 0, POS_FACEUP);
return final;
}
final = (uint8)peffect->get_value(this);
final = val;
}
}
return final;
......
......@@ -185,6 +185,7 @@ struct processor {
event_list point_event;
event_list instant_event;
event_list queue_event;
event_list delayed_activate_event;
event_list full_event;
event_list used_event;
event_list single_event;
......@@ -679,6 +680,7 @@ public:
#define TIMING_BATTLE_PHASE 0x1000000
#define TIMING_EQUIP 0x2000000
#define TIMING_BATTLE_STEP_END 0x4000000
#define TIMING_BATTLED 0x8000000
#define GLOBALFLAG_DECK_REVERSE_CHECK 0x1
#define GLOBALFLAG_BRAINWASHING_CHECK 0x2
......
......@@ -1262,6 +1262,7 @@ int32 field::process_phase_event(int16 step, int32 phase) {
core.quick_f_chain.clear();
core.instant_event.clear();
core.point_event.clear();
core.delayed_activate_event.clear();
core.full_event.clear();
return TRUE;
}
......@@ -1273,6 +1274,7 @@ int32 field::process_point_event(int16 step, int32 skip_trigger, int32 skip_free
case 0: {
core.select_chains.clear();
core.point_event.splice(core.point_event.end(), core.instant_event);
core.full_event.splice(core.full_event.end(), core.delayed_activate_event);
if(skip_trigger) {
core.units.begin()->step = 7;
return FALSE;
......@@ -1879,7 +1881,7 @@ int32 field::process_instant_event() {
}
}
// delayed activate effect
core.full_event.push_back(ev);
core.delayed_activate_event.push_back(ev);
// delayed quick effect
pr = effects.quick_o_effect.equal_range(ev.event_code);
for(auto eit = pr.first; eit != pr.second;) {
......@@ -2618,6 +2620,7 @@ int32 field::process_battle_command(uint16 step) {
return FALSE;
}
case 8: {
core.attack_cancelable = TRUE;
pduel->write_buffer8(MSG_ATTACK);
pduel->write_buffer32(core.attacker->get_info_location());
if(core.attack_target) {
......@@ -2701,6 +2704,7 @@ int32 field::process_battle_command(uint16 step) {
add_process(PROCESSOR_SELECT_YESNO, 0, 0, 0, infos.turn_player, 30);
else {
returns.ivalue[0] = TRUE;
core.attack_cancelable = FALSE;
}
return FALSE;
}
......@@ -2709,7 +2713,6 @@ int32 field::process_battle_command(uint16 step) {
if(returns.ivalue[0]) {
core.units.begin()->arg1 = TRUE;
core.units.begin()->arg3 = FALSE;
core.attack_cancelable = TRUE;
core.units.begin()->step = 3;
}
return FALSE;
......@@ -3073,6 +3076,8 @@ int32 field::process_battle_command(uint16 step) {
pduel->write_buffer8(HINT_EVENT);
pduel->write_buffer8(1);
pduel->write_buffer32(43);
core.hint_timing[0] |= TIMING_BATTLED;
core.hint_timing[1] |= TIMING_BATTLED;
add_process(PROCESSOR_POINT_EVENT, 0, 0, 0, 0, TRUE);
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