Commit 9cfdf43c authored by VanillaSalt's avatar VanillaSalt

fix

parent 2125d814
......@@ -146,17 +146,6 @@ void field::add_card(uint8 playerid, card* pcard, uint8 location, uint8 sequence
return;
if (!is_location_useable(playerid, location, sequence))
return;
if ((pcard->data.type & (TYPE_FUSION | TYPE_SYNCHRO | TYPE_XYZ)) && (location == LOCATION_HAND || location == LOCATION_DECK)) {
location = LOCATION_EXTRA;
pcard->operation_param = (pcard->operation_param & 0x00ffffff) | (POS_FACEDOWN_DEFENCE << 24);
}
if ((pcard->data.type & TYPE_PENDULUM) && (location == LOCATION_GRAVE)
&& !pcard->is_affected_by_effect(EFFECT_CANNOT_TO_DECK) && is_player_can_send_to_deck(playerid, pcard)
&& (((pcard->previous.location == LOCATION_MZONE) && !pcard->is_status(STATUS_SUMMON_DISABLED))
|| ((pcard->previous.location == LOCATION_SZONE) && !pcard->is_status(STATUS_ACTIVATE_DISABLED)))) {
location = LOCATION_EXTRA;
pcard->operation_param = (pcard->operation_param & 0x00ffffff) | (POS_FACEUP_DEFENCE << 24);
}
pcard->current.controler = playerid;
pcard->current.location = location;
switch (location) {
......@@ -364,8 +353,20 @@ void field::move_card(uint8 playerid, card* pcard, uint8 location, uint8 sequenc
}
return;
}
} else
} else {
if((pcard->data.type & (TYPE_FUSION | TYPE_SYNCHRO | TYPE_XYZ)) && (location & (LOCATION_HAND | LOCATION_DECK))) {
location = LOCATION_EXTRA;
pcard->operation_param = (pcard->operation_param & 0x00ffffff) | (POS_FACEDOWN_DEFENCE << 24);
}
if((pcard->data.type & TYPE_PENDULUM) && (location == LOCATION_GRAVE)
&& !pcard->is_affected_by_effect(EFFECT_CANNOT_TO_DECK) && is_player_can_send_to_deck(playerid, pcard)
&& (((pcard->current.location == LOCATION_MZONE) && !pcard->is_status(STATUS_SUMMON_DISABLED))
|| ((pcard->current.location == LOCATION_SZONE) && !pcard->is_status(STATUS_ACTIVATE_DISABLED)))) {
location = LOCATION_EXTRA;
pcard->operation_param = (pcard->operation_param & 0x00ffffff) | (POS_FACEUP_DEFENCE << 24);
}
remove_card(pcard);
}
}
add_card(playerid, pcard, location, sequence);
}
......
......@@ -2737,7 +2737,7 @@ int32 field::destroy(uint16 step, group * targets, effect * reason_effect, uint3
auto pr = effects.continuous_effect.equal_range(EFFECT_SEND_REPLACE);
for (; pr.first != pr.second; ++pr.first)
add_process(PROCESSOR_OPERATION_REPLACE, 5, pr.first->second, sendtargets, 0, 0);
add_process(PROCESSOR_SENDTO, 1, reason_effect, sendtargets, reason + REASON_DESTROY, reason_player);
add_process(PROCESSOR_SENDTO, 1, reason_effect, sendtargets, reason | REASON_DESTROY, reason_player);
return FALSE;
}
case 5: {
......@@ -2919,7 +2919,7 @@ int32 field::release(uint16 step, group * targets, effect * reason_effect, uint3
auto pr = effects.continuous_effect.equal_range(EFFECT_SEND_REPLACE);
for (; pr.first != pr.second; ++pr.first)
add_process(PROCESSOR_OPERATION_REPLACE, 5, pr.first->second, sendtargets, 0, 0);
add_process(PROCESSOR_SENDTO, 1, reason_effect, sendtargets, reason + REASON_RELEASE, reason_player);
add_process(PROCESSOR_SENDTO, 1, reason_effect, sendtargets, reason | REASON_RELEASE, reason_player);
return FALSE;
}
case 4: {
......
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