Commit 14759d2e authored by salix5's avatar salix5 Committed by GitHub

Merge pull request #377 from Fluorohydride/patch-solve-chain

fix self-destroy & activation of the card
parents 12c0bc27 68d39fb2
......@@ -194,7 +194,6 @@ void field::special_summon_complete(effect* reason_effect, uint8 reason_player)
group* ng = pduel->new_group();
ng->container.swap(core.special_summoning);
ng->is_readonly = TRUE;
//core.special_summoning.clear();
add_process(PROCESSOR_SPSUMMON, 1, reason_effect, ng, reason_player, 0);
}
void field::destroy(card_set* targets, effect* reason_effect, uint32 reason, uint32 reason_player, uint32 playerid, uint32 destination, uint32 sequence) {
......
......@@ -766,7 +766,7 @@ int32 field::execute_cost(uint16 step, effect * triggering_effect, uint8 trigger
if(core.shuffle_deck_check[1])
shuffle(1, LOCATION_DECK);
}
core.shuffle_check_disabled = core.units.begin()->arg2;
core.shuffle_check_disabled = (uint8)core.units.begin()->arg2;
return TRUE;
}
return FALSE;
......@@ -822,7 +822,7 @@ int32 field::execute_operation(uint16 step, effect * triggering_effect, uint8 tr
//cost[0].amount = 0;
//cost[1].amount = 0;
}
core.shuffle_check_disabled = core.units.begin()->arg2;
core.shuffle_check_disabled = (uint8)core.units.begin()->arg2;
return TRUE;
}
return FALSE;
......@@ -875,7 +875,7 @@ int32 field::execute_target(uint16 step, effect * triggering_effect, uint8 trigg
if(core.shuffle_deck_check[1])
shuffle(1, LOCATION_DECK);
}
core.shuffle_check_disabled = core.units.begin()->arg2;
core.shuffle_check_disabled = (uint8)core.units.begin()->arg2;
return TRUE;
}
return FALSE;
......@@ -4304,6 +4304,10 @@ int32 field::solve_chain(uint16 step, uint32 chainend_arg1, uint32 chainend_arg2
case 2: {
effect* peffect = cait->triggering_effect;
card* pcard = peffect->get_handler();
if((cait->flag & CHAIN_CONTINUOUS_CARD) && !pcard->is_has_relation(*cait)){
core.units.begin()->step = 3;
return FALSE;
}
if((peffect->type & EFFECT_TYPE_ACTIVATE) && pcard->is_has_relation(*cait) && !cait->replace_op) {
pcard->enable_field_effect(true);
if(core.duel_rule <= 2) {
......@@ -4329,29 +4333,37 @@ int32 field::solve_chain(uint16 step, uint32 chainend_arg1, uint32 chainend_arg2
return FALSE;
}
}
return FALSE;
}
case 3 : {
effect* peffect = cait->triggering_effect;
card* pcard = peffect->get_handler();
if((cait->flag & CHAIN_CONTINUOUS_CARD) && !pcard->is_has_relation(*cait)){
return FALSE;
}
if(cait->replace_op) {
core.units.begin()->arg4 = cait->triggering_effect->operation;
cait->triggering_effect->operation = cait->replace_op;
} else
core.units.begin()->arg4 = 0;
if((cait->flag & CHAIN_CONTINUOUS_CARD) && !pcard->is_has_relation(*cait))
return FALSE;
if(cait->triggering_effect->operation) {
core.sub_solving_event.push_back(cait->evt);
add_process(PROCESSOR_EXECUTE_OPERATION, 0, cait->triggering_effect, 0, cait->triggering_player, 0);
}
return FALSE;
}
case 3: {
case 4: {
// clean up when the resolution ends
effect* peffect = cait->triggering_effect;
if(core.units.begin()->arg4) {
peffect->operation = (int32)core.units.begin()->arg4;
core.units.begin()->arg4 = 0;
}
core.special_summoning.clear();
core.equiping_cards.clear();
return FALSE;
}
case 4: {
case 5: {
core.chain_solving = FALSE;
if(core.delayed_continuous_tp.size()) {
core.conti_player = infos.turn_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