Commit 169d577b authored by salix5's avatar salix5 Committed by GitHub

remove argument passing by nil_event (#435)

parent 0e880c58
...@@ -3381,8 +3381,9 @@ int32 field::get_cteffect(effect* peffect, int32 playerid, int32 store) { ...@@ -3381,8 +3381,9 @@ int32 field::get_cteffect(effect* peffect, int32 playerid, int32 store) {
continue; continue;
uint32 code = efit.first; uint32 code = efit.first;
if(code == EVENT_FREE_CHAIN || code == EVENT_PHASE + infos.phase) { if(code == EVENT_FREE_CHAIN || code == EVENT_PHASE + infos.phase) {
nil_event.event_code = code; tevent test_event;
if(get_cteffect_evt(feffect, playerid, nil_event, store) && !store) test_event.event_code = code;
if(get_cteffect_evt(feffect, playerid, test_event, store) && !store)
return TRUE; return TRUE;
} else { } else {
for(const auto& ev : core.point_event) { for(const auto& ev : core.point_event) {
...@@ -3431,8 +3432,9 @@ int32 field::check_cteffect_hint(effect* peffect, uint8 playerid) { ...@@ -3431,8 +3432,9 @@ int32 field::check_cteffect_hint(effect* peffect, uint8 playerid) {
continue; continue;
uint32 code = efit.first; uint32 code = efit.first;
if(code == EVENT_FREE_CHAIN || code == EVENT_PHASE + infos.phase) { if(code == EVENT_FREE_CHAIN || code == EVENT_PHASE + infos.phase) {
nil_event.event_code = code; tevent test_event;
if(get_cteffect_evt(feffect, playerid, nil_event, FALSE) test_event.event_code = code;
if(get_cteffect_evt(feffect, playerid, test_event, FALSE)
&& (code != EVENT_FREE_CHAIN || check_hint_timing(feffect))) && (code != EVENT_FREE_CHAIN || check_hint_timing(feffect)))
return TRUE; return TRUE;
} else { } else {
......
...@@ -5092,8 +5092,9 @@ int32 field::activate_effect(uint16 step, effect* peffect) { ...@@ -5092,8 +5092,9 @@ int32 field::activate_effect(uint16 step, effect* peffect) {
case 0: { case 0: {
card* phandler = peffect->get_handler(); card* phandler = peffect->get_handler();
int32 playerid = phandler->current.controler; int32 playerid = phandler->current.controler;
nil_event.event_code = EVENT_FREE_CHAIN; tevent test_event;
if(!peffect->is_activateable(playerid, nil_event)) test_event.event_code = EVENT_FREE_CHAIN;
if(!peffect->is_activateable(playerid, test_event))
return TRUE; return TRUE;
chain newchain; chain newchain;
newchain.flag = 0; newchain.flag = 0;
......
...@@ -994,6 +994,9 @@ int32 field::check_hint_timing(effect* peffect) { ...@@ -994,6 +994,9 @@ int32 field::check_hint_timing(effect* peffect) {
} }
// core.spe_effect[p]: # of optional trigger effects, activate/quick effect with hints // core.spe_effect[p]: # of optional trigger effects, activate/quick effect with hints
int32 field::process_phase_event(int16 step, int32 phase) { int32 field::process_phase_event(int16 step, int32 phase) {
tevent test_event;
test_event.event_code = EVENT_PHASE + phase;
test_event.event_player = infos.turn_player;
switch(step) { switch(step) {
case 0: { case 0: {
if((phase == PHASE_DRAW && is_player_affected_by_effect(infos.turn_player, EFFECT_SKIP_DP)) if((phase == PHASE_DRAW && is_player_affected_by_effect(infos.turn_player, EFFECT_SKIP_DP))
...@@ -1005,8 +1008,6 @@ int32 field::process_phase_event(int16 step, int32 phase) { ...@@ -1005,8 +1008,6 @@ int32 field::process_phase_event(int16 step, int32 phase) {
return FALSE; return FALSE;
} }
int32 phase_event = EVENT_PHASE + phase; int32 phase_event = EVENT_PHASE + phase;
nil_event.event_code = phase_event;
nil_event.event_player = infos.turn_player;
int32 check_player = infos.turn_player; int32 check_player = infos.turn_player;
if(core.units.begin()->arg2 & 0x2) if(core.units.begin()->arg2 & 0x2)
check_player = 1 - infos.turn_player; check_player = 1 - infos.turn_player;
...@@ -1018,7 +1019,7 @@ int32 field::process_phase_event(int16 step, int32 phase) { ...@@ -1018,7 +1019,7 @@ int32 field::process_phase_event(int16 step, int32 phase) {
effect* peffect = eit->second; effect* peffect = eit->second;
++eit; ++eit;
peffect->set_activate_location(); peffect->set_activate_location();
if(!peffect->is_activateable(check_player, nil_event)) if(!peffect->is_activateable(check_player, test_event))
continue; continue;
peffect->id = infos.field_id++; peffect->id = infos.field_id++;
newchain.triggering_effect = peffect; newchain.triggering_effect = peffect;
...@@ -1030,7 +1031,7 @@ int32 field::process_phase_event(int16 step, int32 phase) { ...@@ -1030,7 +1031,7 @@ int32 field::process_phase_event(int16 step, int32 phase) {
effect* peffect = eit->second; effect* peffect = eit->second;
++eit; ++eit;
//effects.continuous_effect may be changed in is_activateable (e.g. Rescue Cat) //effects.continuous_effect may be changed in is_activateable (e.g. Rescue Cat)
if(peffect->get_handler_player() != check_player || !peffect->is_activateable(check_player, nil_event)) if(peffect->get_handler_player() != check_player || !peffect->is_activateable(check_player, test_event))
continue; continue;
peffect->id = infos.field_id++; peffect->id = infos.field_id++;
newchain.triggering_effect = peffect; newchain.triggering_effect = peffect;
...@@ -1065,7 +1066,7 @@ int32 field::process_phase_event(int16 step, int32 phase) { ...@@ -1065,7 +1066,7 @@ int32 field::process_phase_event(int16 step, int32 phase) {
effect* peffect = eit->second; effect* peffect = eit->second;
++eit; ++eit;
peffect->set_activate_location(); peffect->set_activate_location();
if(!peffect->is_activateable(check_player, nil_event)) if(!peffect->is_activateable(check_player, test_event))
continue; continue;
peffect->id = infos.field_id++; peffect->id = infos.field_id++;
newchain.triggering_effect = peffect; newchain.triggering_effect = peffect;
...@@ -1088,7 +1089,7 @@ int32 field::process_phase_event(int16 step, int32 phase) { ...@@ -1088,7 +1089,7 @@ int32 field::process_phase_event(int16 step, int32 phase) {
effect* peffect = eit->second; effect* peffect = eit->second;
++eit; ++eit;
peffect->set_activate_location(); peffect->set_activate_location();
if(!peffect->is_chainable(check_player) || !peffect->is_activateable(check_player, nil_event)) if(!peffect->is_chainable(check_player) || !peffect->is_activateable(check_player, test_event))
continue; continue;
peffect->id = infos.field_id++; peffect->id = infos.field_id++;
newchain.triggering_effect = peffect; newchain.triggering_effect = peffect;
...@@ -1102,7 +1103,7 @@ int32 field::process_phase_event(int16 step, int32 phase) { ...@@ -1102,7 +1103,7 @@ int32 field::process_phase_event(int16 step, int32 phase) {
effect* peffect = eit->second; effect* peffect = eit->second;
++eit; ++eit;
peffect->set_activate_location(); peffect->set_activate_location();
if(!peffect->is_chainable(check_player) || !peffect->is_activateable(check_player, nil_event)) if(!peffect->is_chainable(check_player) || !peffect->is_activateable(check_player, test_event))
continue; continue;
peffect->id = infos.field_id++; peffect->id = infos.field_id++;
newchain.triggering_effect = peffect; newchain.triggering_effect = peffect;
...@@ -1115,7 +1116,7 @@ int32 field::process_phase_event(int16 step, int32 phase) { ...@@ -1115,7 +1116,7 @@ int32 field::process_phase_event(int16 step, int32 phase) {
for(auto eit = pr.first; eit != pr.second;) { for(auto eit = pr.first; eit != pr.second;) {
effect* peffect = eit->second; effect* peffect = eit->second;
++eit; ++eit;
if(peffect->get_handler_player() != check_player || !peffect->is_activateable(check_player, nil_event)) if(peffect->get_handler_player() != check_player || !peffect->is_activateable(check_player, test_event))
continue; continue;
peffect->id = infos.field_id++; peffect->id = infos.field_id++;
newchain.triggering_effect = peffect; newchain.triggering_effect = peffect;
...@@ -1192,7 +1193,7 @@ int32 field::process_phase_event(int16 step, int32 phase) { ...@@ -1192,7 +1193,7 @@ int32 field::process_phase_event(int16 step, int32 phase) {
check_player = 1 - infos.turn_player; check_player = 1 - infos.turn_player;
newchain.flag = 0; newchain.flag = 0;
newchain.chain_id = infos.field_id++; newchain.chain_id = infos.field_id++;
newchain.evt = nil_event; newchain.evt = test_event;
newchain.set_triggering_state(phandler); newchain.set_triggering_state(phandler);
newchain.triggering_player = check_player; newchain.triggering_player = check_player;
core.new_chains.push_back(newchain); core.new_chains.push_back(newchain);
...@@ -1205,7 +1206,7 @@ int32 field::process_phase_event(int16 step, int32 phase) { ...@@ -1205,7 +1206,7 @@ int32 field::process_phase_event(int16 step, int32 phase) {
infos.priorities[1] = 0; infos.priorities[1] = 0;
} else { } else {
core.select_chains.clear(); core.select_chains.clear();
solve_continuous(peffect->get_handler_player(), peffect, nil_event); solve_continuous(peffect->get_handler_player(), peffect, test_event);
core.units.begin()->step = 3; core.units.begin()->step = 3;
} }
return FALSE; return FALSE;
...@@ -1497,8 +1498,10 @@ int32 field::process_point_event(int16 step, int32 skip_trigger, int32 skip_free ...@@ -1497,8 +1498,10 @@ int32 field::process_point_event(int16 step, int32 skip_trigger, int32 skip_free
return TRUE; return TRUE;
} }
case 30: { case 30: {
// Battle Step, EFFECT_TYPE_CONTINUOUS with EVENT_FREE_CHAIN
int32 check_player = infos.turn_player; int32 check_player = infos.turn_player;
nil_event.event_code = EVENT_FREE_CHAIN; tevent free_event;
free_event.event_code = EVENT_FREE_CHAIN;
chain newchain; chain newchain;
core.select_chains.clear(); core.select_chains.clear();
core.spe_effect[check_player] = 0; core.spe_effect[check_player] = 0;
...@@ -1507,7 +1510,7 @@ int32 field::process_point_event(int16 step, int32 skip_trigger, int32 skip_free ...@@ -1507,7 +1510,7 @@ int32 field::process_point_event(int16 step, int32 skip_trigger, int32 skip_free
effect* peffect = eit->second; effect* peffect = eit->second;
++eit; ++eit;
newchain.triggering_effect = peffect; newchain.triggering_effect = peffect;
if(peffect->get_handler_player() == check_player && peffect->is_activateable(check_player, nil_event)) { if(peffect->get_handler_player() == check_player && peffect->is_activateable(check_player, free_event)) {
core.select_chains.push_back(newchain); core.select_chains.push_back(newchain);
core.spe_effect[check_player]++; core.spe_effect[check_player]++;
} }
...@@ -1521,16 +1524,19 @@ int32 field::process_point_event(int16 step, int32 skip_trigger, int32 skip_free ...@@ -1521,16 +1524,19 @@ int32 field::process_point_event(int16 step, int32 skip_trigger, int32 skip_free
case 31: { case 31: {
if(returns.ivalue[0] == -1) if(returns.ivalue[0] == -1)
return FALSE; return FALSE;
tevent free_event;
free_event.event_code = EVENT_FREE_CHAIN;
const chain& newchain = core.select_chains[returns.ivalue[0]]; const chain& newchain = core.select_chains[returns.ivalue[0]];
effect* peffect = newchain.triggering_effect; effect* peffect = newchain.triggering_effect;
core.select_chains.clear(); core.select_chains.clear();
solve_continuous(peffect->get_handler_player(), peffect, nil_event); solve_continuous(peffect->get_handler_player(), peffect, free_event);
core.units.begin()->step = 29; core.units.begin()->step = 29;
return FALSE; return FALSE;
} }
case 32: { case 32: {
int32 check_player = 1 - infos.turn_player; int32 check_player = 1 - infos.turn_player;
nil_event.event_code = EVENT_FREE_CHAIN; tevent free_event;
free_event.event_code = EVENT_FREE_CHAIN;
chain newchain; chain newchain;
core.select_chains.clear(); core.select_chains.clear();
core.spe_effect[check_player] = 0; core.spe_effect[check_player] = 0;
...@@ -1539,7 +1545,7 @@ int32 field::process_point_event(int16 step, int32 skip_trigger, int32 skip_free ...@@ -1539,7 +1545,7 @@ int32 field::process_point_event(int16 step, int32 skip_trigger, int32 skip_free
effect* peffect = eit->second; effect* peffect = eit->second;
++eit; ++eit;
newchain.triggering_effect = peffect; newchain.triggering_effect = peffect;
if(peffect->get_handler_player() == check_player && peffect->is_activateable(check_player, nil_event)) { if(peffect->get_handler_player() == check_player && peffect->is_activateable(check_player, free_event)) {
core.select_chains.push_back(newchain); core.select_chains.push_back(newchain);
core.spe_effect[check_player]++; core.spe_effect[check_player]++;
} }
...@@ -1557,8 +1563,10 @@ int32 field::process_point_event(int16 step, int32 skip_trigger, int32 skip_free ...@@ -1557,8 +1563,10 @@ int32 field::process_point_event(int16 step, int32 skip_trigger, int32 skip_free
} }
const chain& newchain = core.select_chains[returns.ivalue[0]]; const chain& newchain = core.select_chains[returns.ivalue[0]];
effect* peffect = newchain.triggering_effect; effect* peffect = newchain.triggering_effect;
tevent free_event;
free_event.event_code = EVENT_FREE_CHAIN;
core.select_chains.clear(); core.select_chains.clear();
solve_continuous(peffect->get_handler_player(), peffect, nil_event); solve_continuous(peffect->get_handler_player(), peffect, free_event);
core.units.begin()->step = 31; core.units.begin()->step = 31;
return FALSE; return FALSE;
} }
...@@ -1719,17 +1727,18 @@ int32 field::process_quick_effect(int16 step, int32 skip_freechain, uint8 priori ...@@ -1719,17 +1727,18 @@ int32 field::process_quick_effect(int16 step, int32 skip_freechain, uint8 priori
} }
core.spe_effect[priority] = (int32)core.select_chains.size(); core.spe_effect[priority] = (int32)core.select_chains.size();
if(!skip_freechain) { if(!skip_freechain) {
nil_event.event_code = EVENT_FREE_CHAIN; tevent free_event;
free_event.event_code = EVENT_FREE_CHAIN;
auto pr = effects.activate_effect.equal_range(EVENT_FREE_CHAIN); auto pr = effects.activate_effect.equal_range(EVENT_FREE_CHAIN);
for(auto eit = pr.first; eit != pr.second;) { for(auto eit = pr.first; eit != pr.second;) {
effect* peffect = eit->second; effect* peffect = eit->second;
++eit; ++eit;
peffect->set_activate_location(); peffect->set_activate_location();
if(peffect->is_chainable(priority) && peffect->is_activateable(priority, nil_event)) { if(peffect->is_chainable(priority) && peffect->is_activateable(priority, free_event)) {
card* phandler = peffect->get_handler(); card* phandler = peffect->get_handler();
newchain.flag = 0; newchain.flag = 0;
newchain.chain_id = infos.field_id++; newchain.chain_id = infos.field_id++;
newchain.evt = nil_event; newchain.evt = free_event;
newchain.triggering_effect = peffect; newchain.triggering_effect = peffect;
newchain.set_triggering_state(phandler); newchain.set_triggering_state(phandler);
newchain.triggering_player = priority; newchain.triggering_player = priority;
...@@ -1743,11 +1752,11 @@ int32 field::process_quick_effect(int16 step, int32 skip_freechain, uint8 priori ...@@ -1743,11 +1752,11 @@ int32 field::process_quick_effect(int16 step, int32 skip_freechain, uint8 priori
effect* peffect = eit->second; effect* peffect = eit->second;
++eit; ++eit;
peffect->set_activate_location(); peffect->set_activate_location();
if(peffect->is_chainable(priority) && peffect->is_activateable(priority, nil_event)) { if(peffect->is_chainable(priority) && peffect->is_activateable(priority, free_event)) {
card* phandler = peffect->get_handler(); card* phandler = peffect->get_handler();
newchain.flag = 0; newchain.flag = 0;
newchain.chain_id = infos.field_id++; newchain.chain_id = infos.field_id++;
newchain.evt = nil_event; newchain.evt = free_event;
newchain.triggering_effect = peffect; newchain.triggering_effect = peffect;
newchain.set_triggering_state(phandler); newchain.set_triggering_state(phandler);
newchain.triggering_player = priority; newchain.triggering_player = priority;
...@@ -2035,13 +2044,14 @@ int32 field::process_single_event(effect* peffect, const tevent& e, chain_list& ...@@ -2035,13 +2044,14 @@ int32 field::process_single_event(effect* peffect, const tevent& e, chain_list&
return TRUE; return TRUE;
} }
int32 field::process_idle_command(uint16 step) { int32 field::process_idle_command(uint16 step) {
tevent free_event;
free_event.event_code = EVENT_FREE_CHAIN;
switch(step) { switch(step) {
case 0: { case 0: {
effect* peffect; effect* peffect;
bool must_attack = false; bool must_attack = false;
core.select_chains.clear(); core.select_chains.clear();
chain newchain; chain newchain;
nil_event.event_code = EVENT_FREE_CHAIN;
core.to_bp = TRUE; core.to_bp = TRUE;
core.to_ep = TRUE; core.to_ep = TRUE;
if((!(core.duel_options & DUEL_ATTACK_FIRST_TURN) && infos.turn_id == 1) || infos.phase == PHASE_MAIN2 || is_player_affected_by_effect(infos.turn_player, EFFECT_CANNOT_BP)) if((!(core.duel_options & DUEL_ATTACK_FIRST_TURN) && infos.turn_id == 1) || infos.phase == PHASE_MAIN2 || is_player_affected_by_effect(infos.turn_player, EFFECT_CANNOT_BP))
...@@ -2088,7 +2098,7 @@ int32 field::process_idle_command(uint16 step) { ...@@ -2088,7 +2098,7 @@ int32 field::process_idle_command(uint16 step) {
++eit; ++eit;
peffect->set_activate_location(); peffect->set_activate_location();
newchain.triggering_effect = peffect; newchain.triggering_effect = peffect;
if(peffect->is_activateable(infos.turn_player, nil_event)) if(peffect->is_activateable(infos.turn_player, free_event))
core.select_chains.push_back(newchain); core.select_chains.push_back(newchain);
} }
pr = effects.quick_o_effect.equal_range(EVENT_FREE_CHAIN); pr = effects.quick_o_effect.equal_range(EVENT_FREE_CHAIN);
...@@ -2097,7 +2107,7 @@ int32 field::process_idle_command(uint16 step) { ...@@ -2097,7 +2107,7 @@ int32 field::process_idle_command(uint16 step) {
++eit; ++eit;
peffect->set_activate_location(); peffect->set_activate_location();
newchain.triggering_effect = peffect; newchain.triggering_effect = peffect;
if(peffect->is_activateable(infos.turn_player, nil_event)) if(peffect->is_activateable(infos.turn_player, free_event))
core.select_chains.push_back(newchain); core.select_chains.push_back(newchain);
} }
pr = effects.continuous_effect.equal_range(EVENT_FREE_CHAIN); pr = effects.continuous_effect.equal_range(EVENT_FREE_CHAIN);
...@@ -2105,7 +2115,7 @@ int32 field::process_idle_command(uint16 step) { ...@@ -2105,7 +2115,7 @@ int32 field::process_idle_command(uint16 step) {
effect* peffect = eit->second; effect* peffect = eit->second;
++eit; ++eit;
newchain.triggering_effect = peffect; newchain.triggering_effect = peffect;
if(peffect->get_handler_player() == infos.turn_player && peffect->is_activateable(infos.turn_player, nil_event)) if(peffect->get_handler_player() == infos.turn_player && peffect->is_activateable(infos.turn_player, free_event))
core.select_chains.push_back(newchain); core.select_chains.push_back(newchain);
} }
for(auto eit = effects.ignition_effect.begin(); eit != effects.ignition_effect.end();) { for(auto eit = effects.ignition_effect.begin(); eit != effects.ignition_effect.end();) {
...@@ -2113,7 +2123,7 @@ int32 field::process_idle_command(uint16 step) { ...@@ -2113,7 +2123,7 @@ int32 field::process_idle_command(uint16 step) {
++eit; ++eit;
peffect->set_activate_location(); peffect->set_activate_location();
newchain.triggering_effect = peffect; newchain.triggering_effect = peffect;
if(peffect->is_activateable(infos.turn_player, nil_event)) if(peffect->is_activateable(infos.turn_player, free_event))
core.select_chains.push_back(newchain); core.select_chains.push_back(newchain);
} }
core.summonable_cards.clear(); core.summonable_cards.clear();
...@@ -2180,7 +2190,7 @@ int32 field::process_idle_command(uint16 step) { ...@@ -2180,7 +2190,7 @@ int32 field::process_idle_command(uint16 step) {
effect* peffect = newchain.triggering_effect; effect* peffect = newchain.triggering_effect;
if(peffect->type & EFFECT_TYPE_CONTINUOUS) { if(peffect->type & EFFECT_TYPE_CONTINUOUS) {
core.select_chains.clear(); core.select_chains.clear();
solve_continuous(peffect->get_handler_player(), peffect, nil_event); solve_continuous(peffect->get_handler_player(), peffect, free_event);
core.units.begin()->step = 2; core.units.begin()->step = 2;
return FALSE; return FALSE;
} }
...@@ -2362,12 +2372,13 @@ int32 field::process_idle_command(uint16 step) { ...@@ -2362,12 +2372,13 @@ int32 field::process_idle_command(uint16 step) {
return TRUE; return TRUE;
} }
int32 field::process_battle_command(uint16 step) { int32 field::process_battle_command(uint16 step) {
tevent free_event;
free_event.event_code = EVENT_FREE_CHAIN;
switch(step) { switch(step) {
case 0: { case 0: {
effect* peffect = 0; effect* peffect = 0;
core.select_chains.clear(); core.select_chains.clear();
chain newchain; chain newchain;
nil_event.event_code = EVENT_FREE_CHAIN;
if(!core.chain_attack) { if(!core.chain_attack) {
core.chain_attacker_id = 0; core.chain_attacker_id = 0;
core.chain_attack_target = 0; core.chain_attack_target = 0;
...@@ -2399,7 +2410,7 @@ int32 field::process_battle_command(uint16 step) { ...@@ -2399,7 +2410,7 @@ int32 field::process_battle_command(uint16 step) {
++eit; ++eit;
peffect->set_activate_location(); peffect->set_activate_location();
newchain.triggering_effect = peffect; newchain.triggering_effect = peffect;
if(peffect->is_activateable(infos.turn_player, nil_event) && peffect->get_speed() > 1) if(peffect->is_activateable(infos.turn_player, free_event) && peffect->get_speed() > 1)
core.select_chains.push_back(newchain); core.select_chains.push_back(newchain);
} }
pr = effects.quick_o_effect.equal_range(EVENT_FREE_CHAIN); pr = effects.quick_o_effect.equal_range(EVENT_FREE_CHAIN);
...@@ -2408,7 +2419,7 @@ int32 field::process_battle_command(uint16 step) { ...@@ -2408,7 +2419,7 @@ int32 field::process_battle_command(uint16 step) {
++eit; ++eit;
peffect->set_activate_location(); peffect->set_activate_location();
newchain.triggering_effect = peffect; newchain.triggering_effect = peffect;
if(peffect->is_activateable(infos.turn_player, nil_event)) if(peffect->is_activateable(infos.turn_player, free_event))
core.select_chains.push_back(newchain); core.select_chains.push_back(newchain);
} }
pr = effects.continuous_effect.equal_range(EVENT_FREE_CHAIN); pr = effects.continuous_effect.equal_range(EVENT_FREE_CHAIN);
...@@ -2416,7 +2427,7 @@ int32 field::process_battle_command(uint16 step) { ...@@ -2416,7 +2427,7 @@ int32 field::process_battle_command(uint16 step) {
effect* peffect = eit->second; effect* peffect = eit->second;
++eit; ++eit;
newchain.triggering_effect = peffect; newchain.triggering_effect = peffect;
if(peffect->get_handler_player() == infos.turn_player && peffect->is_activateable(infos.turn_player, nil_event)) if(peffect->get_handler_player() == infos.turn_player && peffect->is_activateable(infos.turn_player, free_event))
core.select_chains.push_back(newchain); core.select_chains.push_back(newchain);
} }
core.attackable_cards.clear(); core.attackable_cards.clear();
...@@ -2462,7 +2473,7 @@ int32 field::process_battle_command(uint16 step) { ...@@ -2462,7 +2473,7 @@ int32 field::process_battle_command(uint16 step) {
effect* peffect = newchain.triggering_effect; effect* peffect = newchain.triggering_effect;
if(peffect->type & EFFECT_TYPE_CONTINUOUS) { if(peffect->type & EFFECT_TYPE_CONTINUOUS) {
core.select_chains.clear(); core.select_chains.clear();
solve_continuous(peffect->get_handler_player(), peffect, nil_event); solve_continuous(peffect->get_handler_player(), peffect, free_event);
core.units.begin()->step = 13; core.units.begin()->step = 13;
return FALSE; 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